2008-09-21 57 views
12

我想選擇具有給定名稱空間(前綴)的文檔中的最頂層元素。使用XPath在名稱空間中選擇元素

更具體地說:我有一些以/ html/body開頭(在XHTML命名空間中)或者在特定命名空間中有幾個元素之一的XML文檔。我實際上想要去掉/ html/body,並返回正文內容或整個根名稱空間元素。

+0

在編寫我的文章的過程中,我偶然發現了一個工作解決方案,所以我社區擁有這個問題,然後發佈答案。請享用! – 2008-09-22 00:01:29

回答

9

在XPath 2.0和XQuery 1.0中,您可以使用謂詞中的in-scope-prefixes()函數對名稱空間前綴進行測試。 例如

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

如果您不能使用V2,XPath 1.0中,你可以使用namespace-uri()功能測試針對的命名空間本身。 例如

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

應該是:`http:// www.w3.org/1999/xhtml` – Alp 2011-11-01 11:12:55

2

,我想XPath表達式是:

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

凡「HTML」前綴被映射到XHTML命名空間,而「foo」的前綴映射到我的目標命名空間。

相關問題