Mit position des aktuellen Knotens zuzugreifen Wert von einem anderen Knoten
Ich habe eine xml-Quelle, die annähernd eine Tabelle layout (Ausgabe vom Programm) - a ist die Tisch-Halter, b halten Sie die Spaltenüberschriften, d, c, sind die Zeilen, und e sind die Zeilen-Zellen:
<?xml version="1.0" encoding="utf-16"?>
<a>
<b>
<d/>
<d/>
<d/>
</b>
<c>
<e/>
<e/>
<e/>
</c>
</a>
</xml>
Habe ich Folgendes geschrieben xsl:
<?xml version="1.0" encoding="UTF-16"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<Lessons>
<xsl:for-each select="//c">
<xsl:call-template name="lesson" />
</xsl:for-each>
</Lessons>
</xsl:template>
<xsl:template name="lesson">
<Lesson>
<Teacher>
<xsl:value-of select="count(./preceding-sibling::*)+1" />
<xsl:value-of select="//b[count(./preceding-sibling::*)+1]" />
</Teacher>
</Lesson>
</xsl:template>
</xsl:stylesheet>
Den ersten xsl:value-of des Lehrers element gibt mir die richtigen Werte. Ich möchte, dass das zweite xsl:value-of zur Rückgabe der überschrift für diese Zelle also für die erste e-element, nennt die Vorlage die erste d-element zurückgegeben und so weiter. Allerdings Ausgängen der Wert aller von der d-Elemente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Selbst wenn es ist nicht ganz klar, was Sie erwarten, werde ich versuchen, eine Antwort.
Wie ich verstanden habe Sie möchten zu finden die
<d>
element, das hat die gleiche position, als der<e>
element.Dies ist entweder möglich, mit der immer die aktuelle position als variable.
oder verwenden Sie count von
preceding-sibling
Update das Teil unten ist geändert, weil der Kommentar von "George of all trades".
Sich bewusst sein, dass das Ergebnis
position()
hängt vom aufrufenden Kontext.Zum Beispiel folgenden test xslt (version 1.0):
Mit diesem input:
Erzeugt diese Ausgabe:
current()
statt des Punktes ".". ([count(./preceding-sibling::*)+1]
) tun sollten.