/ / xslt test per vedere se un nodo è uno dei primi figli X del suo genitore - xslt, xpath

xslt test per vedere se un nodo è uno dei primi figli X del suo genitore - xslt, xpath

Sto modificando un modello XSLT e le mie capacità sono un po 'arrugginite.

Vorrei scrivere una condizione per vedere se il nodo corrente è nei primi tre nodi figli del suo genitore.

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

Quindi i primi tre elementi figli sopra sarebberoritorna vero, ma il quarto restituirebbe falso, per complicare le cose gli elementi del bambino non saranno tutti uguali e avranno i loro discendenti. Sono sicuro che ci sarà un semplice xpath che lo farà.

risposte:

18 per risposta № 1

Dipende dalla situazione. Se sei nel mezzo di

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

Quindi controllare con

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

andrà bene. Se ci si trova in un altro contesto, uno che non influisce su tutti <child> elementi, quindi position() farà riferimento alla posizione all'interno quella contesto.

Se si desidera un controllo senza contesto, è possibile utilizzare:

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

A selezionare solo i primi tre <child> elementi, questo sarebbe:

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

0 per risposta № 2

Chiama il position() funzione per determinare dove esiste un nodo in un documento.