Sono in una situazione in cui posso solo testare il nodo figlio, ma devo applicare tag al nonno di questo nodo figlio.Come selezionare il nonno di un nodo utilizzando xslt
Ho provato con:
<xsl:call-template name="grandparent" select="parent::parent::node()"/>
e:
<xsl:call-template name="grandparent" select="ancestor::node [@nameofgrandparentnode]"/>
Ma né opere.
Il livello del nodo grandparent non è fisso, quindi immagino di non poter usare neanche [@ level = #]. Qualsiasi idea su come selezionarla sarebbe molto apprezzata.
EDIT: - Questa parte è stata pubblicata una nuova domanda:
xslt select grandparent node depending on an attribute value of its grandchild node
Selezione del nodo utilizzando i suggerimenti dal basso funzionato. Grazie! Tuttavia ho anche bisogno di testare l'attributo del nodo grandparent o grandchild.
ho provato:
<xsl:template name"one" match="grandparentnode">
<Tag1>
<xsl:apply-templates select="parentNode" />
</Tag1>
</xsl:template>
<xsl:template name="two" match="grandparentnode[*/*/@grandchildattr='attrValue']">
<Tag2>
<xsl:apply-templates select="parentNode" />
</Tag2>
</xsl:template>
Tuttavia modello "due" ottiene sempre chiamato, e "è sempre inserito". Anche per i nodi grandchild il cui valore di attributo non è uguale a "attrValue".
Mi manca qualcosa qui?
Buona domanda (+1). Vedere la mia risposta per un numero di espressioni XPath che è possibile utilizzare in un'istruzione ''. –
@highlightall La parte modificata non è chiara. Per favore, fornisci un documento XML completo (ma il più breve possibile) e il foglio di stile XSLT completo (ancora, il più breve possibile), che riproponga il tuo problema. Preferibilmente, chiedi questo in una nuova domanda. –
@highlightall: anche 'Anche per i nodi grandchild il cui valore dell'attributo non è uguale a 'attrValue'' non può essere vero con questo modello' grandparentnode [*/*/@ grandchildattr =' attrValue '] ' –