Ich bin dabei, ein XML-Dokument zu transformieren. Es gibt ein Attribut @prettydate
die eine ähnliche Zeichenfolge wie "Freitag, 7. Mai 2010" ist. Ich möchte diese Zeichenfolge aufteilen und Links zum Monat und zum Jahr hinzufügen. Ich verwende die exslt:strings
Modul und ich kann jedes andere notwendige EXSLT-Modul hinzufügen.
Dies ist mein bisheriger Code:
<xsl:template match="//calendar">
<xsl:variable name="prettyparts">
<xsl:value-of select="str:split(@prettydate,', ')"/>
</xsl:variable>
<table class='day'>
<thead>
<caption><xsl:value-of select="$prettyparts[1]"/>,
<a>
<xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&per=m</xsl:attribute>
<xsl:value-of select='$prettyparts[2]'/>
</a>
<xsl:value-of select='$prettyparts[3]'/>,
<a>
<xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&per=y</xsl:attribute>
<xsl:value-of select='$prettyparts[4]'/>
</a>
</caption>
<!--etcetera-->
Ich habe überprüft, indem ich $prettyparts durch eine <xml:for-each/>
dass ich das erwartete Nodeset erhalte:
<token>Friday</token>
<token>May</token>
<token>7</token>
<token>2010</token>
Aber ganz gleich, wie ich versuche, mich auf eine bestimmte <token>
direkt (nicht in einer foreach) erhalte ich nichts oder verschiedene Fehler, die mit ungültigen Typen zu tun haben. Hier ist einige der Syntax, die ich versucht habe:
<xsl:value-of select="$prettyparts[2]"/>
<xsl:value-of select="$prettyparts/token[2]"/>
<xsl:value-of select="exsl:node-set($prettyparts/token[2])"/>
<xsl:value-of select="exsl:node-set($prettyparts/token)[2]"/>
Haben Sie eine Idee, wie der Ausdruck lauten sollte?
ETA: Dank des Vorschlags von @DevNull lautet der richtige Ausdruck:
<xsl:value-of select="exsl:node-set($prettyparts)[position()=2]"/>
und ich muss die Variable auf diese Weise einstellen:
<xsl:variable name="prettyparts" select="str:split(@prettydate,', ')" />