XPath学习:轴(13)——namespace
???? XPath 是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。
???? XPath 是 W3C XSLT 標準的主要元素,并且 XQuery 和 XPointer 同時被構建于 XPath 表達之上。
???? 推薦一個挺不錯的網站:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html? 里面有很不錯的例子,下面的例子中紅色字體表示使用對 應語法獲取的元素(或屬性)。
???? XPath軸(XPath Axes)可定義某個相對于當前節點的節點集:
???? 1、child? 選取當前節點的所有子元素
???? 2、parent? 選取當前節點的父節點
???? 3、descendant 選取當前節點的所有后代元素(子、孫等)
???? 4、ancestor? 選取當前節點的所有先輩(父、祖父等)
???? 5、descendant-or-self 選取當前節點的所有后代元素(子、孫等)以及當前節點本身
???? 6、ancestor-or-self? 選取當前節點的所有先輩(父、祖父等)以及當前節點本身
???? 7、preceding-sibling 選取當前節點之前的所有同級節點
???? 8、following-sibling 選取當前節點之后的所有同級節點
???? 9、preceding?? 選取文檔中當前節點的開始標簽之前的所有節點
???? 10、following ? 選取文檔中當前節點的結束標簽之后的所有節點
???? 11、self 選取當前節點
???? 12、attribute? 選取當前節點的所有屬性
???? 13、namespace 選取當前節點的所有命名空間節點
?
名稱空間軸用來選取名稱空間結點。每個元素結點都有一個專門名稱空間結點表示每個作用域名稱空間。
分析下面的XML源文檔(xmmlBook.xml):
<xmml:Book xmlns:xmml="http://www.XMML.com/namespaces">
<xmml:Chapter number="1">Some text.</xmml:Chapter>
<xmml:Chapter number="2">Some more text.</xmml:Chapter>
</xmml:Book>
為了說明xmml:Book元素結點的名稱空間結點,需要使用下面的樣式表(xmmlBook.xslt):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xmml="http://www.XMML.com/namespaces" >
<xsl:template match="/">
<html>
<head>
<title>This shows namespace nodes.</title>
</head>
<body>
<h3>Namespace nodes of the xmml:Book element.</h3>
<xsl:apply-templates select="/xmml:Book" />
</body>
</html>
</xsl:template>
<xsl:template match="xmml:Book">
<xsl:for-each select="namespace::node()">
<p><xsl:value-of select="position()" />. The namespace prefix
<b><xsl:value-of select="name(.)" /></b> has the namespace URI <b><xsl:value-of
select="." /></b>. </p>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
注意名稱空間聲明,在xmml:Book元素上使用了xmml名稱空間前綴,如下所示:
<xmml:Book xmlns:xmml="http://www.XMML.com/namespaces">
正如圖7-4所示,xmml:Book元素結點有兩個名稱空間。其中一個名稱空間結點是http://www.XMML.com/namespaces的URI,這并不令我們感到意外,因為這已經在名稱空間聲明中很清楚地表示出來。但是,另一個名稱空間結點是http://www.w3.org/XML/1998/ namespace的URI,這有一點出乎我們的意料。之所以有這個名稱空間結點,是因為所有的XML元素結點都有一個與此URI對應的名稱空間。記住,在任何XML元素上都可以使用xml:lang和xml:space屬性,因此必須聲明xml名稱空間。對于本例的情形,所有的XML處理器都自帶了名稱空間聲明。
轉載于:https://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564367.html
總結
以上是生活随笔為你收集整理的XPath学习:轴(13)——namespace的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3.0 我的DailyRep
- 下一篇: [轉]c#简单调用DELPHI DLL封