2009-08-03 5 views
7

Ich bearbeite eine XSLT-Vorlage und meine Fähigkeiten sind ein wenig eingerostet.xslt Test, um zu sehen, ob ein Knoten einer der ersten X Kinder seines Elternteils ist

Ich möchte eine Bedingung schreiben, um zu sehen, ob der aktuelle Knoten in den ersten drei Kindknoten des Elternteils ist.

<parent> 
<child> 
<child> 
<child> 
<child> 
</parent> 

So die ersten drei oben genannten untergeordneten Elemente zurückkehren würde wahr, aber das vierte falsche zurückkehren würde, werden die untergeordneten Elemente Angelegenheiten erschweren nicht alle gleich sein und Nachkommen ihrer eigenen haben. Ich bin mir sicher, dass es einen einfachen xpath gibt, der es tun wird.

Antwort

17

Es hängt von der Situation ab. Wenn Sie die Überprüfung in der Mitte des

<xsl:apply-templates select="/parent/child" /> 

Dann mit

<xsl:if test="position() &lt; 4"> 

tun. Wenn Sie sich in einem anderen Kontext befinden, der sich nicht auf alle <child> Elemente auswirkt, dann bezieht sich position() auf die Position innerhalb dass Kontext.

Wenn Sie eine kontextfreie überprüfen möchten, können Sie:

<xsl:if test="count(preceding-sibling::child) &lt; 3"> 
<!-- or --> 
<xsl:if test="count(preceding-sibling::*) &lt; 3"> 

Um wählen nur die ersten drei <child> Elemente, dies wäre es:

/parent/child[position() &lt; 4] 
+1

Große Antwort Dank –

0

Rufen Sie die Funktion position() auf, um festzustellen, wo ein Knoten in einem Dokument vorhanden ist.

Verwandte Themen