XML中的XPATH、DTD

你們好,樂字節小樂又來了,上次給你們說道的是XML解析,此次接着講述XML文檔中的語言:XPATH、DTDnode

1、先來講說XPATH

一、XPATH 概念

XPath 是一門在 XML 文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進行遍歷。XPath 是 W3C XSLT 標準的主要元素,而且 XQuery 和 XPointer 同時被構建於 XPath 表達之上。所以,對 XPath 的理解是不少高級 XML 應用的基礎。XPath 很是相似對數據庫操做的 SQL 語言,或者說 JQuery,它能夠方便開發者抓起文檔中須要的東西。(dom4j 也支持 xpath)數據庫

2.節點類型

XPath 中有七種結點類型:元素、屬性、文本、命名空間、處理指令、註釋以及文檔節點 (或稱爲根節點)。dom

文檔中存在元素節點,屬性節點,根節點spa

3.經常使用路徑表達式

表達式 描述code

節點名稱(nodename) 選取此節點的全部子節點xml

/ 從根節點選取blog

// 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置圖片

. 選取當前節點開發

.. 選取當前節點的父節點文檔

@ 選取屬性

示例以下:

//@lang 選取全部名爲 lang 的屬性

4.限定語

用來查找某個特定的節點或者包含某個指定的值的節點。以方括號括起

//book[price>35.00] 選擇全部 book 元素,且其中的 price 元素的值須大於 35.00
/bookstore/book[1] 選取屬於 bookstore 子元素的第一個 book 元素。
/bookstore/book[last()] 選取屬於 bookstore 子元素的最後一個 book 元素。
/bookstore/book[last()-1] 選取屬於 bookstore 子元素的倒數第二個 book 元素。
/bookstore/book[position()<3] 選取最前面的兩個屬於 bookstore 元素的子元素的 book 元素。
//title[@lang] 選取全部擁有名爲 lang 的屬性的 title 元素。
//title[@lang='eng'] 選取全部 title 元素,且這些元素擁有值爲 eng 的 lang 屬性。
/bookstore/book[price>35.00] 選取全部 bookstore 元素的 book 元素,且其中的 price
元素的值須大於 35.00。
/bookstore/book[price>35.00]/title 選取全部 bookstore 元素中的 book 元素的 title 元
素,且其中的 price 元素的值須大於 35.00。

5 .通配符

通配符 描述

  • 匹配任何元素節點

@* 匹配任何屬性節點

node() 匹配任何類型的節點

| 選取若干路徑

圖片描述

使用示例

路徑表達式 結果

/bookstore/* 選取 bookstore 元素的全部子節點
//* 選取文檔中的全部元素
//title[@*] 選取全部帶有屬性的 title 元素。
//book/title | //book/price 選取全部 book 元素的 tilte 和 price 元素。
//title | //price 選取全部文檔中的 title 和 price 元素。
/bookstore/book/title | //price 選取全部屬於 bookstore 元素的 book 元素的 title 元素,以及文檔中全部的 price 元素

2、再說DTD

使用 DTD 能夠對文檔的內容進行約束,XML 中的 DTD 數據必須用<!DOCTYPE>標記說

明,語法格式以下:

<!DOCTYPE 根元素名稱[DTD 定義數據]>

XML 的元素內容定義格式以下:

<!ELEMENT 元素內容描述字符串>

DTD 還能夠描述子元素的結構,其使用語法:

<!ELEMENT 子元素結構名稱 子元素結構表達式>

其中子元素結構有如下幾種經常使用的定義方式:

1.按順序包括 B、C、D、的全部內容: <!ELEMENT A(B,C,D)>

2.在 A 中要包含 B、C、D、的任意一個的內容: <!ELEMENT A(B|C|D)>

3.在 A 中包含 0-1 個 B: <!ELEMENT A(B?)>

4.在 A 中要包含 1 次以上各 B: <!ELEMENT A(B+)>

5.在 A 中要包含 O 次以上各 B: <!ELEMENT A(B*)>

6.空元素 <!ELEMENT A EMPTY>

如:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE persons[ 
<!ELEMENT persons (person+)> 
<!ELEMENT person ( name , password? , age+) > 
<!ATTLIST person sex (男|女) #REQUIRED> 
<!ATTLIST person id ID #REQUIRED> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT password (#PCDATA)> 
<!ELEMENT age (#PCDATA)> 
>
<persons> 
<person sex="男" id="p1"> 
<name></name> 
<password></password> 
<age></age> 
</person> 
<person sex="女" id="p2"> 
<name></name> 
<password></password> 
<age></age> 
</person> 
</persons>

關於XML技術先就講到這裏了,更多Java技術乾貨請多關注樂字節,後續繼續奉獻!

相關文章
相關標籤/搜索