2012-02-28 20 views
11

En mi XML Tengo el siguiente:Conseguir el nodo padre atributos en XSL

<a> 
    <b> 
    <c something="false"> 
     <d> 
     <e> 
      <f>someResult</f> 
     </e> 
     </d> 
    </c> 
    </b> 
</a> 

Ahora en el XSL dentro de un bucle que pueda hacer lo siguiente:

<xsl:value-of select="f"></xsl:value-of> 

Pero, ¿cómo puedo conseguir el atributo en c?

He intentado hacer lo siguiente

<xsl:value-of select="////@something"></xsl:value-of> 

Además de tratar los padres y nada parece estar funcionando. ¿Puedes obtener nodos parentales como este?

Además, no puedo hacer:

<xsl:value-of select="https://stackoverflow.com/a/b/c/@something"></xsl:value-of> 

Como no puede ser múltiplo de c.

Respuesta

29

Para subir el árbol se utiliza ".." por decir, el nivel en este caso probablemente

select="../../../@something" 

También puede seleccionar un nodo antecesor por su nombre (aprox)

select="ancestor::c[1]/@something" 

Ver http://www.stackoverflow.com/questions/3672992 para más ejemplos

8

Use:

ancestor::c[1]/@something 

Esto selecciona el atributo denominado something del primer ancestro (del nodo actual hacia arriba) llamado c.

Cuestiones relacionadas