2011-06-09 106 views
5

xml:XPath: cómo: seleccionar todos los hijos y nietos (independientemente de la profundidad) con el nombre de atributo dado del contexto actual?

<root0> 
    <elem1> 
     <elem21 xlink:href="21"/> 
     <elem22> 
      <elem31 xlink:href="31"/> 
      <elem32> 
       <elem41 xlink:href="41"/> 
      </elem32> 
     </elem22> 
    </elem1> 
</root0> 

la profundidad es desconocida. ¿Cómo puedo seleccionar todos los elementos con el atributo xlink: href?

He intentado lo siguiente:

*[@xlink:href] 
self::*[@xlink:href] 

Cualquier orientación es apreciado.

Respuesta

3

Por sólo hijos de los nietos utilizar

descendant-or-self::*[@xlink:href] 

Para todos los nodos sólo tiene que añadir // delante de su XPath

//*[@xlink:href] 

Además, la muestra XML no es válida, pero supongo que es solo una muestra

+0

descendiente o auto :: * [@ xlink: href] es mi salvador. Gracias Cordsen. – eros

0

*[@xlink:href] debería funcionar. Es muy probable que no haya definido el espacio de nombre xlink.

Si publica el código, entonces puedo ser más preciso en mi respuesta.

+0

Puedo obtener el elemento del contexto actual que tiene el atributo dado pero no los elementos nietos. p.ej. contexto actual: puedo obtener: solo – eros

+0

refiere que * es hijos del contexto actual solo que no incluye a los nietos. – eros

Cuestiones relacionadas