dey: Dauerhafter Bezug auf document('.

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

--
-- noch immer ein erfolgloser <DIV> Jünger --
  1. 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.

    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

    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