Como selecionar a avó de um nó usando xslt
Estou em uma situação em que só posso testar o nó filho, mas preciso aplicar tags aos avós desse nó filho.
Eu tentei usar:
<xsl:call-template name="grandparent" select="parent::parent::node()"/>
e:
<xsl:call-template name="grandparent" select="ancestor::node [@nameofgrandparentnode]"/>
Mas nem funciona.
O nível do nó dos avós não é fixo, então acho que também não posso usar [@ level = #]. Qualquer idéia sobre como selecioná-lo seria muito apreciada.
EDIT: - Esta parte foi publicada como uma nova pergunta:
xslt seleciona o nó da avó, dependendo do valor do atributo do nó da neta
A seleção do nó usando as sugestões abaixo funcionou. Obrigado! No entanto, eu também preciso testar pelo atributo do nó dos avós ou netos.
Eu tentei:
<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>
No entanto, o modelo "dois" sempre é chamado e "" é sempre inserido. Mesmo para nós netos cujo valor de atributo não é igual a 'attrValue'.
Estou faltando alguma coisa aqui?