XSLT2: Wie Referenz-Attribute für den aktuellen Knoten im XPath2-Prädikate

Ich gepostet hatte eine andere Frage mit diesem einen Aspekt. Mir wurde gesagt, zur Klärung der Frage, aber diese Frage war schon ziemlich lang und kompliziert, so dass ich erstellt eine neue.

Möchte ich wissen, ob es die Standardmethode der Verweis auf die aktuellen Knoten-Attribut ein XPath-Ausdruck, der die Prüfung für eine andere.

Für ein Beispiel, betrachten Sie die folgenden XSLT -

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:for-each select="potato/stem[eye]">
        In session <xsl:value-of select="@sessionID"/>, the potato had <xsl:value-of select="/potato/stem[@sessionID=@sessionID][scc]/scc/@leafnumber"/> s.c.c. leaves.
    </xsl:for-each>
</xsl:template>

(XML-Quelle am Ende dieser Frage.)
(Beachten Sie, dass die for-each-Referenzen-Knoten vom Typ stem[Auge] aber der zweite Wert angeforderten Referenzen-Knoten vom Typ stem[scc], die auf einen anderen Zweig der Quell-XML-Baum.)

Nun, offensichtlich, "@sessionID=@sessoinID" Teil, ist meist sinnlos, weil XPath empfindet dies als "den Wert Der Sitzungs-id-Attribut der Knoten sollte sich gleich ... der Wert der Sitzungs-id-Attribut des node."

Aber was ich sagen will ist, "stellen Sie sicher, dass der Wert der seesionID Attribut des Knotens (die in der XPath-Ausdruck) ist die gleiche wie die Sitzungs-id des Knotens, von welchem /stem[Auge] Knoten ich bin im Moment."

Kann ich das nicht mit einer Variablen, denn Sie sind nicht erlaubt zu deklarieren einer Variablen innerhalb einer for-each-Klausel.

Als Referenz, dies ist die XML-Quelle. Seine Struktur ist nicht das, was man möchte, aber es ist das, was ich habe, mit zu arbeiten.

<?xml version="1.0" encoding="utf-8"?>
<potato>
<stem sessionID="1">
    <eye number = "25"/>
</stem>
<stem sessionID="3">
    <eye number = "33"/>
</stem>

<stem sessionID="1">
    <scc leafnumber = "234" />
</stem>
<stem sessionID="2">
    <scc leafnumber = "433"/>
</stem>
<stem sessionID="3">
    <scc leafnumber = "463"/>
</stem>

<stem sessionID="1">
    <agd leafnumber = "154"/>
</stem>
<stem sessionID="2">
    <agd leafnumber = "233"/>
</stem>
<stem sessionID="3">
    <agd leafnumber = "113"/>
</stem> 
</potato>

Die Ausgabe die ich Suche ist:

In session 1, die Kartoffel hatte 234 s.c.c. Blätter.

In der session 3, die Kartoffel hatte, 463 s.c.c. Blätter.

(Natürlich ist dies alles nur Sandkasten-Beispiel. Ich weiß, es gibt wahrscheinlich eine einfache Weise zu erreichen, die obige Ausgabe in eine komplett andere Weise, aber ich hoffe, dass diesem Beispiel bekommt über meine Frage, ist die Nutzung der Werte, die mit dem aktuellen Knoten (sagen wir, in einer for-each -) in ein Prädikat für einen XPath-suchen Sie sich eine andere.)

InformationsquelleAutor David R | 2011-10-28

Schreibe einen Kommentar