您好,登錄后才能下訂單哦!
小編給大家分享一下XML有哪些作用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
概述
XML:Extensible Markup Language(可擴(kuò)展標(biāo)記語言)的縮寫,是用來定義其它語言的一種元語言,其前身是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)。它沒有標(biāo)簽集(tag set),也沒有語法規(guī)則(grammatical rule),但是它有句法規(guī)則(syntax rule)。 任何XML文檔對任何類型的應(yīng)用以及正確的解析都必須是良構(gòu)的(well-formed),即每一個打開的標(biāo)簽都必須有匹配的結(jié)束標(biāo)簽,不得 含有次序顛倒的標(biāo)簽,并且在語句構(gòu)成上應(yīng)符合技術(shù)規(guī)范的要求。XML文檔可以是有效的(valid),但并非一定要求有效。所謂有效文檔是指其符合其文檔 類型定義(DTD)的文檔。如果一個文檔符合一個模式(schema)的規(guī)定,那么這個文檔是"模式有效的(schema valid)"。
XML 是一種標(biāo)記語言,很類似 HTML ,XML 的設(shè)計宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù) ,XML 標(biāo)簽沒有被預(yù)定義。您需要自行定義標(biāo)簽。 XML 被設(shè)計為具有自我描述性。 XML 是 W3C 的推薦標(biāo)準(zhǔn)
很多新的 Internet 語言是通過 XML 創(chuàng)建的:
其中的例子包括:
XHTML - 最新的 HTML 版本 ,WSDL - 用于描述可用的 web service ,WAP 和 WML - 用于手持設(shè)備的標(biāo)記語言 ,RSS - 用于 RSS feed 的語言 ,
RDF 和 OWL - 用于描述資源和本體 ,SMIL - 用于描述針針對 web 的多媒體
下面來看一個常用案例:
<bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
可以用如下圖來解釋:
在 XML 中,一些字符擁有特殊的意義。
如果你把字符 "<" 放在 XML 元素中,會發(fā)生錯誤,這是因為解析器會把它當(dāng)作新元素的開始。
這樣會產(chǎn)生 XML 錯誤:
<message>if salary < 1000 then</message>
為了避免這個錯誤,請用實體引用來代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 個預(yù)定義的實體引用:
XML 元素必須遵循以下命名規(guī)則:
名稱可以含字母、數(shù)字以及其他的字符
名稱不能以數(shù)字或者標(biāo)點符號開始
名稱不能以字符 “xml”(或者 XML、Xml)開始
名稱不能包含空格
可使用任何名稱,沒有保留的字詞。
XMLHttpRequest 對象用于在后臺與服務(wù)器交換數(shù)據(jù)。
XMLHttpRequest 對象是開發(fā)者的夢想,因為您能夠:
在不重新加載頁面的情況下更新網(wǎng)頁
在頁面已加載后從服務(wù)器請求數(shù)據(jù)
在頁面已加載后從服務(wù)器接收數(shù)據(jù)
在后臺向服務(wù)器發(fā)送數(shù)據(jù)
所有現(xiàn)代的瀏覽器都支持 XMLHttpRequest 對象。
所有現(xiàn)代瀏覽器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都內(nèi)建了 XMLHttpRequest 對象。
通過一行簡單的 JavaScript 代碼,我們就可以創(chuàng)建 XMLHttpRequest 對象。
xmlhttp=new XMLHttpRequest();
當(dāng)今,XML 是非常重要的技術(shù),并且開發(fā)項目正在使用這些基于 XML 的技術(shù):
用 XML Schema 定義 XML 的結(jié)構(gòu)和數(shù)據(jù)類型
用 XSLT 來轉(zhuǎn)換 XML 數(shù)據(jù)
用 SOAP 來交換應(yīng)用程序之間的 XML 數(shù)據(jù)
用 WSDL 來描述網(wǎng)絡(luò)服務(wù)
用 RDF 來描述網(wǎng)絡(luò)資源
用 XPath 和 XQuery 來訪問 XML 數(shù)據(jù)
用 SMIL 來定義圖形
XSLT
XSLT(eXtensible Stylesheet Language Transformation)是一種用來轉(zhuǎn)換XML文檔結(jié)構(gòu)的語言。
XSL的處理過程:
首先是根據(jù)XML文檔構(gòu)造源樹,然后根據(jù)XSL規(guī)則將源樹轉(zhuǎn)換為結(jié)果樹,生成結(jié)果樹后,對其進(jìn)行解釋,格式化為一種適合顯示、打印或是播放的格式。
XSLT和CSS的比較:
CSS | XSLT |
使用簡單 | 使用復(fù)雜 |
不能排序、添加或刪除元素 | 可排序、添加或刪除元素 |
不能訪問文檔除元素外的其它信息 | 能訪問其它信息 |
使用內(nèi)存比較少 | 使用較多內(nèi)存和處理器能力 |
與XML語法不同 | 語法與XML相同 |
XPath基礎(chǔ)
XPath就是一種專門用來在XML文檔中定位和查找信息的語言,通過XPath可對XML文檔中的元素和屬性進(jìn)行遍歷,是高級XML應(yīng)用的基礎(chǔ) 。
XPath主要有四種數(shù)據(jù)類型:(1)節(jié)點集.(2)布爾類型.(3)字符串類型.(4)數(shù)值類型
在XPath中,可以將節(jié)點劃分為七種節(jié)點類型:(1)根節(jié)點(Root Node).(2)元素節(jié)點(Element Nodes).(3)文本節(jié)點(Text Nodes).(4)屬性節(jié)點(Attribute Nodes).(5)命名空間節(jié)點(Namespace Nodes).(6)處理指令節(jié)點(Processing Instruction Nodes).(7)注釋節(jié)點(Comment Nodes).
XPath節(jié)點關(guān)系:(1)父(parent).(2)子(children).(3)同胞(sibling).(4)先輩(ancestor).(5)后代(descendant).
XPath表達(dá)式
XPath將XML文檔看作由節(jié)點構(gòu)成的層次樹,通過編寫XPath表達(dá)式來定位樹中特定的節(jié)點
XPath路徑表達(dá)式:
表達(dá)式 | 描述 |
nodename | 選取此節(jié)點的所有子節(jié)點 |
/ | 從根節(jié)點選取,絕對路徑,表示當(dāng)前文檔的根節(jié)點 |
// | 從任意節(jié)點選取,相對路徑,表示當(dāng)前文檔所有的節(jié)點 |
. | 選取當(dāng)前節(jié)點 |
.. | 選取當(dāng)前節(jié)點的父節(jié)點 |
@ | 選取屬性 |
例子
<?xml version="1.0" encoding="GB2312"?> <bookstore> <book> <title lang="en">RESTful Web Services</title> <price>29.00</price> </book> <book> <title lang="zh">C#編程基礎(chǔ)</title> <price>46.00</price> </book> </bookstore>
解析:
bookstore | 選取 bookstore 元素的所有子節(jié)點 |
/bookstore | 選取根節(jié)點bookstore元素 |
/bookstore/book/price | 選取bookstore元素下所有book元素的所有price元素 |
/bookstore/book/* | 選取/bookstore/book的所有子元素 |
bookstore/book | 選取bookstore元素下所有的book子元素 |
//bookstore | 選取文檔中所有的bookstore元素,無論它在什么層次 |
bookstore//book | 選取在bookstore元素下所有的book元素,無論它們位于bookstore之下的什么位置 |
/bookstore/*/price | 選取bookstore的子元素中,包含有price作為子元素的元素 |
//* | 選取文件中的所有元素 |
//@lang | 選取所有名為 lang 的屬性 |
謂語表達(dá)式:
路徑表達(dá)式 | 描述 |
/bookstore/book[last()] | 選取屬于bookstore子元素的最后一個book元素 |
/bookstore/book[last()-1] | 選取屬于bookstore子元素的倒數(shù)第二個book元素 |
/bookstore/book[position()<3] | 選取前兩個屬于bookstore元素的子元素的book元素 |
//title[@lang] | 選取所有擁有名為lang的屬性的title元素 |
//title[@lang="en"] | 選取所有title元素,且這些元素?fù)碛兄禐?eng 的 lang 屬性 |
/bookstore/book[price>15.00] | 選取所有bookstore元素的book元素,且其中的price元素的值須大于15.00 |
/bookstore/book[price>15.00]/title | 選取所有bookstore元素中的book元素的title元素,且其中的price元素的值須大于15.00 |
//title[@*] | 選取所有帶有屬性的 title 元素 |
如果需要選擇一個以上的路徑,可以在XPath表達(dá)式中使用“|”運(yùn)算符:
路徑表達(dá)式 | 描述 |
//book/title | //book/price | 選取所有book元素的title和price元素 |
//title | //price | 選取文檔中所有的title和price元素 |
/bookstore/book/title | //price | 選取所有屬于bookstore元素的book元素的title元素,以及文檔中所有的price元素 |
XPath表達(dá)式的常用運(yùn)算符:
運(yùn)算符 | 描述 | 實例 |
| | 計算兩個節(jié)點集 | //book | //cd,返回所有帶有 book 和 cd 元素的節(jié)點集 |
+ | 加法 | 6 + 4, |
- | 減法 | 6 - 4 |
* | 乘法 | 6 * 4 |
p | 除法 | 8 p 4 |
= | 等于 | price=15 |
!= | 不等于 | price!=15 |
< | 小于 | price<15 |
<= | 小于或等于 | price<=15 |
> | 大于 | price>15 |
>= | 大于或等于 | price>=15 |
or | 或 | price=15 or price=35 |
and | 與 | price>15 or price<35 |
mod | 計算除法的余數(shù) | 5 mod 2 |
示例
private void button1_Click(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(@"..\..\CD.xml"); XmlElement root = null; root = doc.DocumentElement; XmlNodeList listNodes = null; listNodes = root.SelectNodes("/bookstore/book/price"); foreach (XmlNode node in listNodes ) { richTextBox1.Text += node.InnerText + "\n"; } }
結(jié)果:
29.00
46.00
以上是“XML有哪些作用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。