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 № 1Dipende dalla situazione. Se sei nel mezzo di
<xsl:apply-templates select="/parent/child" />
Quindi controllare con
<xsl:if test="position() < 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) < 3">
<!-- or -->
<xsl:if test="count(preceding-sibling::*) < 3">
A selezionare solo i primi tre <child>
elementi, questo sarebbe:
/parent/child[position() < 4]
0 per risposta № 2
Chiama il position()
funzione per determinare dove esiste un nodo in un documento.