2008-09-21 20 views
12

Quiero seleccionar el elemento superior en un documento que tiene un espacio de nombre dado (prefijo).Seleccionar elemento en un espacio de nombre con XPath

Más específicamente: Tengo documentos XML que comienzan con/html/body (en el espacio de nombres XHTML) o con uno de varios elementos en un espacio de nombres en particular. De hecho, quiero quitar/html/body y simplemente devolver los contenidos del cuerpo O todo el elemento raíz de espacio de nombres.

+0

Mientras redactaba mi publicación, me encontré con una solución de trabajo, por lo que fui propietario de la comunidad y luego publiqué la respuesta. ¡Disfrutar! –

Respuesta

9

En XPath 2.0 y XQuery 1.0 puede probar el prefijo del espacio de nombres utilizando la función in-scope-prefixes() en un predicado. p.

//*[in-scope-prefixes(.)='html'] 

Si no puede utilizar v2, en XPath 1.0 se puede utilizar la función namespace-uri() para probar contra el propio espacio de nombres. p.

//*[namespace-uri()='http://www.w3c.org/1999/xhtml'] 
+1

debería ser: 'http: // www.w3.org/1999/xhtml' – Alp

2

La expresión XPath que yo quiero es:

/html:html/html:body/node()|/foo:* 

Cuando el prefijo "html" se asigna al espacio de nombres XHTML, y el prefijo "foo" se asigna al espacio de nombres.

Cuestiones relacionadas