Estoy en una situación en la que solo puedo probar el nodo hijo, pero tengo que aplicar etiquetas al abuelo de este nodo secundario.Cómo seleccionar el abuelo de un nodo usando xslt
He intentado usar:
<xsl:call-template name="grandparent" select="parent::parent::node()"/>
y:
<xsl:call-template name="grandparent" select="ancestor::node [@nameofgrandparentnode]"/>
Pero ni las obras.
El nivel del nodo de abuelos no es fijo, por lo que creo que tampoco puedo usar [@ level = #]. Cualquier idea sobre cómo seleccionarla sería muy apreciada.
EDIT: - Esta parte ha sido publicado como una nueva pregunta:
xslt select grandparent node depending on an attribute value of its grandchild node
Selección del nodo utilizando las sugerencias de abajo trabajado. ¡Gracias! Sin embargo, también debo probar por el atributo del nodo de abuelos o nietos.
que he probado:
<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>
Sin embargo plantilla "dos" siempre se llama, y "" se inserta siempre. Incluso para nodos de nieto cuyo valor de atributo no es igual a 'attrValue'.
¿Falta algo aquí?
Buena pregunta (+1). Vea mi respuesta para una cantidad de expresiones XPath que puede usar en una instrucción ''. –
@highlightall La parte editada no está clara. Proporcione un documento XML completo (pero lo más breve posible) y la hoja de estilo XSLT completa (una vez más, lo más breve posible) que reproduzca su problema. Preferiblemente, pregunte esto en una nueva pregunta. –
@highlightall: También 'Incluso para nodos de nieto cuyo valor de atributo no es igual a 'attrValue'' no puede ser cierto con este patrón' grandparentnode [*/*/@ grandchildattr =' attrValue '] ' –