Dauerhafter Bezug auf document('.
dey
- xsl
Hallo,
ich habe 2 XML-Dateien mit dem gleichen Format.
Ich möchte nun im Wechsel mal die Daten aus meinem Basis-XML verwenden und mal aus der XML, die ich via document() hole.
Ich verbinde die einzelnen templates mit call-template, weil die Variablen übergeben muss.
1. Wie schaffe ich es jetzt, dass sich die nachfolgenden call-templates(Zeile 14) auf die XML aus document(Zeile7) beziehen und nicht auf die Basis-XML
1<xsl:template name="Group">
2 <xsl:param name="group_no" />
3 <xsl:param name="group_0" />
4 <xsl:variable name="group_count"><!-- variable number of loops -->
5 <xsl:value-of select="count(//Group)"/>
6 </xsl:variable>
7 <xsl:for-each select="document('./b/MultiJob_2005-09-19_185757.xml')//Group[GroupNumber = $group_no]">
8 <DIV Class="T1 PB1">Group A<xsl:value-of select="GroupNumber + 1" />
9 <xsl:if test="$group_no = 0 and $group_0 = 0"> 'Used'</xsl:if>
10 <xsl:if test="$group_no = 0 and $group_0 = 1"> 'Next groups only'</xsl:if>
11 </DIV>
12 <BLOCKQUOTE>
13 <div>
14 <xsl:call-template name="JobList">
15 <xsl:with-param name="group_no" select="$group_no" />
16 </xsl:call-template>
17 </div>
bydey
Hallo,
ich habe 2 XML-Dateien mit dem gleichen Format.
Ich möchte nun im Wechsel mal die Daten aus meinem Basis-XML verwenden und mal aus der XML, die ich via document() hole.Ich verbinde die einzelnen templates mit call-template, weil die Variablen übergeben muss.
Das kannst du auch mit apply-templates.
- Wie schaffe ich es jetzt, dass sich die nachfolgenden call-templates(Zeile 14) auf die XML aus document(Zeile7) beziehen und nicht auf die Basis-XML
Zwei globale Variablen:
<xsl:variable name="thisroot" select="/">
<xsl:variable name="otherroot" select="document('./b/MultiJob_2005-09-19_185757.xml')">
14 <xsl:apply-templates select="$otherroot">
15 <xsl:with-param name="group_no" select="$group_no" />
16 </xsl:apply-templates>
entsprechend müssen Templates für die Elemente vorhanden sein (template match, statt template name).
Oder du übergibst otherroot als Parameter und änderst dementsprechend das Template
14 <xsl:call-template name="JobList">
15 <xsl:with-param name="group_no" select="$group_no" />
<xsl:with-param name="otherroot" select="'yes'" />
16 </xsl:call-template>
template name="JobList"
<xsl:param name="otherroot" select="'no' />
choose
when test="$otherroot = 'yes'"
mach was für $otherroot/element
otherwise
mach was für $thisroot/element
Grüße
Thomas