Seleziona l'elemento in uno spazio dei nomi con XPath
-
02-07-2019 - |
Domanda
Voglio selezionare l'elemento più in alto in un documento che ha un determinato spazio dei nomi (prefisso).
Più specificamente: ho documenti XML che iniziano con / html / body (nello spazio dei nomi XHTML) o con uno dei numerosi elementi in uno specifico spazio dei nomi. Voglio effettivamente eliminare / html / body e restituire semplicemente il contenuto del corpo O l'intero elemento spaziato alla radice.
Soluzione
In XPath 2.0 e XQuery 1.0 è possibile eseguire il test con il prefisso dello spazio dei nomi utilizzando in-scope-prefixes () in un predicato. per es.
//*[in-scope-prefixes(.)='html']
Se non puoi usare v2, in XPath 1.0 puoi usare lo spazio dei nomi () per testare lo spazio dei nomi stesso. per es.
//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
Altri suggerimenti
L'espressione XPath che desidero è:
/html:html/html:body/node()|/foo:*
Dove il " html " il prefisso è mappato allo spazio dei nomi XHTML e il "quot" pippo " il prefisso è associato al mio spazio dei nomi di destinazione.