Variable in XSL definieren und wieder verwenden
Kerstin
- xsl
0 Thomas Meinike0 Kerstin
0 Kerstin
Hallo,
ich habe hier ein Stückchen XSLT-Code:
[1]<xsl:for-each select="contacts/contact">
[2]<xsl:variable name="contactid" select="."/>
[3]<xsl:for-each
select="../../../contact_list/contact[@contact_id='$contactid']">
<row>
<entry align="center"><xsl:value-of select="scope"/></entry>
<entry align="center"><xsl:value-of select="name"/></entry>
<entry align="center"><xsl:value-of select="company"/></entry>
<entry align="center"><xsl:value-of select="phone"/></entry> <entry align="center"><xsl:value-of select="email"/></entry>
</row>
</xsl:for-each> </xsl:for-each>
Ich bin irgendwo im Unterpfad und wähle per for-each [1] alle <contact>-Elemente aus. Deren Inhalt schreibe ich in die [2]Variable "contactid" und möchte diese im nächsten Schritt benutzen, um eine Auswahl [3] aus <contact_list> zu treffen, so dass nur der <contact> ausgewählt wird mit der "contact_id", die in der Variable [2] steht. Allerdings klappt das nicht. Scheinbar ist die Variable aber leer, denn mir wird nix angezeigt.
Jemand eine Idee, wie man sowas anstellt? Habe es auch schon mit param versucht. Das geht aber auch nicht.
Gruß,
Kerstin
Hallo,
[3]<xsl:for-each
select="../../../contact_list/contact[@contact_id='$contactid']">
Der Vergleich soll doch gegen den Wert der Variable $contactid gehen und nicht gegen die Zeichenkette '$contactid'.
MfG, Thomas
Hallo,
select="../../../contact_list/contact[@contact_id='$contactid']">
Der Vergleich soll doch gegen den Wert der Variable $contactid gehen und nicht gegen die Zeichenkette '$contactid'.
Du hast recht, ich danke dir. Ohne die ' funzt es nun wunderbar :-)
Gruß,
Kerstin
Hallo,
hab da noch eine Frage zu:
Ich möchte eine Variable innerhalb eines xsl:for-each definieren, deren Wert dann aber außerhalb des xsl:for-each verwenden, ist das möglich?
Hier ein kleines Code-Beispiel:
<xsl:for-each select="version_list/version[@manual_type='1']">
<xsl:sort select="number"/>
<xsl:if test="number='0.1'">
<author>
<surname><xsl:value-of select="author"/></surname>
</author>
</xsl:if>
[1]<xsl:variable name="pubdate">
<xsl:value-of select="date"/>
</xsl:variable>
<xsl:variable name="lastnumber">
<xsl:value-of select="number"/>
</xsl:variable>
</xsl:for-each>
[2]<pubdate><xsl:value-of select="$pubdate"/></pubdate>
<releaseinfo><xsl:value-of select="$lastnumber"/></releaseinfo>
Ich defniere mir also meine Variablen wie unter [1] und möchte diese unter [2] ausgeben. Allerdings klappt das nicht - die Variablen wären "null", sagt mir mein Mozilla FF.
Gibt es eine andere Möglichkeit den höchsten Wert eines Elements zu bestimmen und nur diese auszugeben? Es gibt die Funktion last(), aber die bringt nicht den gewünschten Effekt oder ich wende sie nur falsch an.
Gruß,
Kerstin
Hallo,
hab da noch eine Frage zu:
Ich möchte eine Variable innerhalb eines xsl:for-each definieren, deren Wert dann aber außerhalb des xsl:for-each verwenden, ist das möglich?
Nein. Die Sichbarkeit einer Variable beschränkt sich auf ihr Kontext. Definierst du die Variable innerhalb eines for-each, ist sie auch nur innerhalb dieses for-each sichtbar.
Gibt es eine andere Möglichkeit den höchsten Wert eines Elements zu bestimmen und nur diese auszugeben? Es gibt die Funktion last(), aber die bringt nicht den gewünschten Effekt oder ich wende sie nur falsch an.
Ja, Z.B. mit einem eigenen for-each, das genau das Gewünschte macht, innerhalb vom <pubdate> und <releaseinfo>.
Grüße
Thomas