Announcement

Collapse
No announcement yet.

variable mit tree aus template füllen und dansch ausgeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • variable mit tree aus template füllen und dansch ausgeben

    Hallo,

    ich wollte herausfinden, wie ich eine Variable mit einem Tree aus einem Template füllen und diesen danach ausgebe. Sofern ich eine Variable mit einem Tree ohne den Call auf eine Template fülle funktioniert das.

    XSLT
    Code:
    <?xml version="1.0"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://knlogin.kn.com/v_1_6/outgen"  xmlns:saxon="http://saxon.sf.net/" xmlns:fn="http://www.w3.org/2005/xpath-functions"
                    xmlns:xalan="http://xml.apache.org/xalan" extension-element-prefixes="saxon" xmlns:exslt="http://exslt.org/common" exclude-result-prefixes="xalan a b exslt fn saxon" xmlns:b="http://somewhere.com/v_1_6/outgen">
    	<xsl:output method="xml"/>
    	<xsl:template match="/">
    
    		<!-- this works fine  -  start -->
    		<xsl:variable name="def" as="node()*">
    			<bo>
    				<item>1</item>
    				<boline>4</boline>
    				<totals>6</totals>
    			</bo>
    		</xsl:variable>
    
    
    
    		<!-- this works fine  -  end -->
    
    		<!-- this is the part -  start -->
    
    		<xsl:variable name="headlines" as="node()*" >
    			<xsl:call-template name="headlines"/>
    		</xsl:variable>
    
    
    		<doc>
    			<xsl:value-of select="exslt:node-set($headlines)"/>
    		</doc>
    	</xsl:template>
    
    
    	<xsl:template name="headlines" as="node()*">
    		<xsl:for-each select="b:doc/b:Headlines">
    			<field name="L_head">
    				<xsl:value-of select="."/>
    			</field>
    		</xsl:for-each>
    	</xsl:template>
    
    	<!-- this is the part  - end -->
    </xsl:stylesheet>
    XML
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <doc xmlns="http://somewhere.com/v_1_6/outgen">
        <Headlines id="23467201">Dog bites man</Headlines>
        <Headlines id="23423441">Man bites dog</Headlines>
    </doc>
    Kann mir jemand sagen wie ich beheben kann?
    Vielen Dank schon mal und
    viele Grüße

    Markus Sticker

  • #2
    ok das wars:
    copy-of und nicht value-of

    <doc>
    <xsl:call-template name="headlines"/>
    <xsl:copy-of select="$headlines" />

    </doc>

    Comment


    • #3
      Beabsichtigst du, das Stylesheet sowohl mit Xalan (was ein XSLT 1.0 Prozessor ist) als auch mit Saxon 9 (was ein XSLT 2.0 Prozessor ist) zu benutzen?
      Oder warum hat das Stylesheet version="2.0" und benutzte XSLT 2.0 Dinge wie die zahlreichen "as"-Attribute, um dann aber exsl:node-set zu benutzen? Mit Saxon oder anderen XSLT 2.0 Prozessoren wird exsl:node-set nicht benötigt, selbst wenn du apply-templates select="$headlines" benutzen wolltest. Aber bei einem copy-of oder value-of wird selbst mit einem XSLT 1.0 Prozessor kein exsl:node-set benötigt.
      Das nur als Anmerkung, auch wenn das eigentliche Problem schon gelöst ist.

      Comment

      Working...
      X