Thomas J.S.: Dauerhafter Bezug auf document('.

Beitrag lesen

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