5 Stimmen

xsl:variable enthält nodeset. Wie wird der n-te Knoten der Variablen ausgegeben?

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"/>&amp;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"/>&amp;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,', ')" />

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X