Wählen Sie Element in einem Namespace mit XPath
-
02-07-2019 - |
Frage
Ich möchte das oberste Element in einem Dokument wählen, die einen bestimmten Namespace (Präfix).
Genauer gesagt: Ich XML-Dokumente, die entweder mit / html / body starten (im XHTML-Namensraum) oder mit einem von mehreren Elementen in einem bestimmten Namespace. Ich möchte effektiv Streifen aus / html / Körper und zurück nur den Körper Inhalt oder das gesamte Wurzelelement Namespace.
Lösung
In XPath 2.0 und XQuery 1.0 können Sie testen gegen die Namespacepräfix mit der in-scope-Präfixe () Funktion in einem Prädikat. z.
//*[in-scope-prefixes(.)='html']
Wenn Sie v2 verwenden kann nicht, in XPath 1.0 können Sie die namespace-uri () Funktion testen gegen den Namensraum selbst. z.
//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
Andere Tipps
Der XPath-Ausdruck, was ich will:
/html:html/html:body/node()|/foo:*
Wenn der „html“ Präfix für den XHTML-Namensraum zugeordnet wird, und der „foo“ Präfix zu meinem Ziel-Namensraum abgebildet wird.