Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Februar

SELFHTML Forumsarchiv
Variable in XSL definieren und wieder verwenden

Informationsseite
  1. Seite (XSL) Variable in XSL definieren und wieder verwenden von Kerstin, 28. 02. 2006, 16:15
nach unten

Variable in XSL definieren und wieder verwenden

Die folgende Nachricht zum Thema stammt von: Kerstin, 28. 02. 2006, 16:15

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

nach obennach unten

Variable in XSL definieren und wieder verwenden

Die folgende Nachricht zum Thema stammt von: Thomas Meinike, 28. 02. 2006, 16:30

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

nach obennach unten

Variable in XSL definieren und wieder verwenden

Die folgende Nachricht zum Thema stammt von: Kerstin, 01. 03. 2006, 09:44

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

nach obennach unten

Variable in XSL definieren und wieder verwenden

Die folgende Nachricht zum Thema stammt von: Kerstin, 01. 03. 2006, 12:19

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

nach obennach unten

Variable in XSL definieren und wieder verwenden

Die folgende Nachricht zum Thema stammt von: Thomas J.S., 01. 03. 2006, 14:31

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

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Februar

© 1998-2006 Seite Impressum, Software: Classic Forum