XML語法學習

本文章集合兩篇博文而寫,兩篇博文地址:
XML學習總結(二)——XML入門:
XML基礎<第一篇>

XML簡介

XML是一種標記語言,用于描述數據,它提供一種標準化的方式來來表示文本數據。XML文檔以.xml為后綴。需要徹底注意的是XML是區分大小寫的
先從一個簡單的XML例子來了解下xml基礎:

<strong><?xml version="1.0" encoding="utf-8" ?>
<books ISBN="9787544238212"><title>xml學習筆記</title><price>30</price><pagecount>300</pagecount>
</books></strong>

 第一行表明,本XML遵守的版本是1.0,使用的字符編碼是UTF-8字符集。

  每個XML元素都已一個起始標記開始和一個結束標記結束。比如開始:,結束:。XML元素可以帶有屬性,屬性值要加引號。比如上例中的ISBN就是屬性,屬性值要加雙引號。同時用等號連接。

  一個XML文檔只能夠有一個根節點,如上例中books就是根節點。

  以下列出XML的幾個要點:

  1. XML是一種可擴展標記語言;
  2. XML的標記沒有被預定義,用戶可以自行定義標記來描述數據;
  3. XML主要用來描述和存儲數據;
  4. XML具有自我描述性;
  5. XML是樹狀結構的文檔,是個結構化的文檔;
  6. XML文檔是個文本文件;

XML語法

聲明
1. 每個開始標記都必須有結束標記;
2. 一個XML文檔只能夠有一個根元素;
3. 所有XML元素必須正確嵌套;
4. 屬性值必須加引號;
5. 一個元素不能有相同的屬性;
6. 一個XML文件分為如下幾部分內容:

我們從以下模塊介紹:

  • 文檔聲明
  • 元素
  • 屬性
  • 注釋
  • CDATA區 、特殊字符
  • 處理指令(processing instruction)
  • 命名空間

1.1、xml語法——文檔聲明

  XML文檔應當以XML聲明開始,不過不是必須的。

示例:

<strong><?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<person>張三
</person></strong>

  如果一個XML文檔含有聲明,必須放在XML文檔的第一行。

  XML文檔聲明主要有三個參數。
版本: 版本表示遵循的是W3C的XML1.0標準。
字符編碼:字符編碼表示該XML文檔使用的字符編碼方式。對于中文文檔,應該使用UTF-8或者Unicode。如果是純英文,可以使ISO-8859-1編碼。
獨立: 如果XML standalone的值是no,表示它需要DTD。不需要DTD的XML文檔,standalone的值應該寫為yes。

  最簡單的聲明語法: <?xml version="1.0" ?>

  例如:

<strong><?xml version="1.0"?><softCompany><company>MicroSoft</company><company>google</company><company>Apple</company>
</softCompany></strong>

  瀏覽器解析結果如下:
  

  
  用encoding屬性說明文檔的字符編碼:<?xml version="1.0" encoding="GB2312" ?>

  當XML文件中有中文時,必須使用encoding屬性指明文檔的字符編碼,例如:encoding=”GB2312”或者encoding=”utf-8”,并且在保存文件時,也要以相應的文件編碼來保存,否則在使用瀏覽器解析XML文件時,就會出現解析錯誤的情況。

  例如:

<strong><?xml version="1.0"?><softCompany><company>MicroSoft</company><company>google</company><company>Apple</company><company>百度</company></softCompany></strong>

  這個XML文件中沒有使用encoding屬性來指明文檔的字符編碼,但文檔里面有“百度”這樣的中文字符,在使用IE瀏覽器解析該XML文件時,IE就不知道該使用什么編碼去解析該文件,就無法解析了,出現的錯誤如下圖所示:

                 
  要想正確解析該XML文檔,就可以使用encoding屬性指明該文檔的字符編碼。在保存文件時,也要以GB2312編碼來保存

  例如:

<strong><?xml version="1.0" encoding="GB2312"?><softCompany><company>MicroSoft</company><company>google</company><company>Apple</company><company>百度</company></softCompany></strong>

  此時再次使用IE瀏覽器來解析該XML文件,就可以正常解析出里面的中文字符了,如下圖所示:

              

1.2、xml語法——標記

  標記分為開始標記和結束標記,如就是一個開始標記。就是一個結束標記。開始標記與結束標記之間的內容成為XML元素的內容。如果一個XML元素沒有內容,我們稱其為空元素。如。

1.3、xml語法——元素

  XML元素指XML文件中出現的標簽,一個標簽分為開始標簽和結束標簽,一個標簽有如下幾種書寫形式,例如:

包含標簽體:<a>www.cnblogs.com/</a>
不含標簽體的:<a></a>, 簡寫為:<a/>

一個標簽中也可以嵌套若干子標簽。但所有標簽必須合理的嵌套,絕對不允許交叉嵌套 ,例如:

錯誤的寫法:<a>welcome to <b>www.cnblogs.com/</a></b>

格式良好的XML文檔必須有且僅有一個根標簽,其它標簽都是這個根標簽的子孫標簽。

對于XML標簽中出現的所有空格和換行,XML解析程序都會當作標簽內容進行處理。例如:下面兩段內容的意義是不一樣的。

第一段:

<strong><網址>http://www.cnblogs.com/</網址></strong>

第二段:

<strong><網址>http://www.cnblogs.com/</網址></strong>

  由于在XML中,空格和換行都作為原始內容被處理,所以,在編寫XML文件時,使用換行和縮進等方式來讓原文件中的內容清晰可讀的“良好”書寫習慣可能要被迫改變。

一個XML元素可以包含字母、數字以及其它一些可見字符,但必須遵守下面的一些規范:
1. 不能以數字或”_” (下劃線)開頭。
2. 不能以xml(或XML、或Xml 等)開頭。
3. 不能包含空格。
4. 名稱中間不能包含冒號(:)

1.4、XML語法——屬性

一個標簽可以有多個屬性,每個屬性都有它自己的名稱和取值,例如: <input name=“text”> ,屬性是name,屬性值為“text”,屬性值一定要用雙引號(”)或單引號(’)引起來,定義屬性必須遵循與標簽相同的命名規范 。一個XML元素不能有相同的XML屬性名。

多學一招:在XML技術中,標簽屬性所代表的信息,也可以被改成用子元素的形式來描述,例如:

<strong><input><name>text</name></input>
</strong>

 XML元素中可以帶有屬性作為XML元素的附加信息。

  - 如果屬性值中包含雙引號,就用單引號包圍屬性值。如:

<strong><site info = 'wo "ai" ni'></strong>

 - 如果屬性值中包含單引號,就用雙引號包圍屬性值。如:

<strong><site info = "wo 'ai' ni"></strong>

 - 一個XML元素可以有一個或多個屬性,每個屬性用空格分開。如:

<strong><person name="zhangsan" age="23"></strong>

1.5、XML語法——注釋

  XML注釋以 <!-- 開始,以 --> 結束。XML文件中的注釋采用: <!--注釋--> 格式。
注意:
XML聲明之前不能有注釋, 注釋不能嵌套,例如:

<!--大段注釋……<!--局部注釋-->……-->  

1.6、XML語法——CDATA區

  在編寫XML文件時,有些內容可能不想讓解析引擎解析執行,而是當作原始內容處理,遇到此種情況,可以把這些內容放在CDATA區里,對于CDATA區域內的內容,XML解析程序不會處理,而是直接原封不動的輸出。

  語法:<![CDATA[ 內容 ]]>

  例如:

<strong><?xml version="1.0" encoding="utf-8"?><soft><![CDATA[<a className="gacl.xdp"><a1>gacl</a1><a2>xdp</a2></a>]]><b><b1>孤傲蒼狼</b1><b2>徐達沛</b2></b></soft></strong>

該XML文件使用IE瀏覽器解析引擎解析執行后,結果如下圖所示:

                      
對于一些單個字符,若想顯示其原始樣式,也可以使用轉義的形式予以處理。
       
例如:

 <?xml version="1.0" encoding="utf-8"?><soft><b>&lt;b1&gt;孤傲蒼狼&lt;/b1&gt;<b2>徐達沛</b2></b></soft>

解析器解析的結果如下圖所示:

 

1.7、XML語法-處理指令

  處理指令,簡稱PI (processing instruction)。處理指令用來指揮解析引擎如何解析XML文檔內容。例如,在XML文檔中可以使用xml-stylesheet指令,通知XML解析引擎,應用css文件顯示xml文檔內容,標簽名為中文時,css不起作用。

  <?xml-stylesheet type="text/css" href="css文件名.css"?>

例如:

<?xml version="1.0" encoding="utf-8"?>
<!--在XML文檔中可以使用xml-stylesheet指令,通知XML解析引擎,應用country.css文件顯示xml文檔內容-->
<?xml-stylesheet type="text/css" href="country.css"?>
<Country><c1>中國</c1><c2>美國</c2><c3>日本</c3><c4>韓國</c4>
</Country>

  Country.css樣式文件代碼如下:

<strong>c1{font-size:200px;color:red;
}
c2{font-size:150px;color:green;
}
c3{font-size:100px;color:#ccc;
}
c4{font-size:130px;color:blue;
}</strong>

  在瀏覽器中解析該XML文件的結果如下圖所示:

  
  
處理指令必須以”<?“作為開頭,以”?>“作為結尾,XML聲明語句(<?xml version="1.0" encoding="utf-8"?>)就是最常見的一種處理指令。

1.8、XML語法-命名空間

 XML命名空間是為了解決當XML文檔中存在多個相同名稱的元素時,避免沖突而引入的。

  命名空間的語法:

xmlns:prefix=”URI”
xmlns:表示必須的屬性。
prefix:表示命名空間的別名,它的值不能為xml。
URI:用來標識抽象或物理資源的的緊湊字符串。為了保證標識的唯一性,xml采用Internet上的網址作為這個標識符,因為網址是獨一無二的。
  默認命名空間示例:

<strong><?xml version="1.0" encoding="utf-8" ?>
<Article xmlns="http://www.xxx.com/"> <!--默認命名空間--><author age="30">張三</author><length>12000</length><price>42</price>
</Article></strong>

帶名字的命名空間|:

<strong><?xml version="1.0" encoding="utf-8" ?>
<h:Article xmlns:h="http://www.xxx.com/"> <!--帶前綴的命名空間--><h:author age="30">張三</h:author><h:length>12000</h:length><h:price>42</h:price>
</h:Article></strong>

附錄:

xml編輯工具推薦:
http://www.ibm.com/developerworks/cn/xml/x-xmltools/
我這里使用的是 XML Copy Editor

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258968.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FM實現F4幫助系列三:彈出框多篩選…

FM實現F4幫助系列三&#xff1a;彈出框多篩選條件的搜索幫助&#xff08;根據搜索幫助篩選字段&#xff09;函數&#xff1a;F4IF_GET_SHLP_DESCRF4IF_START_VALUE_REQUEST效果圖&#xff1a;本例子代碼&#xff1a;找到需要的幫助:*&------------------------------------…

[數分提高]2014-2015-2第9教學周第1次課 (2015-04-28)

設 $$\bex a,b>0,\quad 0\leq f\in \calR[a,b],\quad \int_a^b xf(x)\rd x0. \eex$$ 試證: $$\bex \int_a^b x^2f(x)\rd x\leq ab \int_a^b f(x)\rd x; \eex$$ 并給出使得下列不等式成立的 (您認為的) 最優數: $$\bex \int_a^b x^3f(x)\rd x\leq (\quad) \int_a^b f(x)\rd x…

《計算復雜性:現代方法》——0.2 判定問題/語言

本節書摘來自華章計算機《計算復雜性&#xff1a;現代方法》一書中的第0章&#xff0c;第0.2節&#xff0c;作者 &#xff3b;美&#xff3d;桑杰夫阿羅拉&#xff08;Sanjeev Arora&#xff09;&#xff0c;博阿茲巴拉克&#xff08;Boaz Barak&#xff09;&#xff0c;譯 駱吉…

python從date目錄導入數據集_使用python劃分數據集

無論是訓練機器學習或是深度學習&#xff0c;第一步當然是先劃分數據集啦&#xff0c;今天小白整理了一些劃分數據集的方法&#xff0c;希望大佬們多多指教啊&#xff0c;嘻嘻~ 首先看一下數據集的樣子&#xff0c;flower_data文件夾下有四個文件夾&#xff0c;每個文件夾表示一…

開源牛人 zcbenz

事情是這樣的&#xff0c;微軟推出了Visual Studio Code&#xff0c;我很好奇他怎么做跨平臺的&#xff0c;所以就找找資料&#xff0c;在他的網站中是這么描述的&#xff1a; Architecturally, Visual Studio Code combines the best of web, native, and language-specific t…

eclipse 與 tomcat 的那些路徑

我們用mvn創建了一個web工程&#xff0c;同時希望在eclipse里調試開發。mvn有mvn的路徑要求&#xff0c;eclispe有eclipse的默認路徑&#xff0c;怎么整合二者&#xff1f; 首先介紹一下eclipse的默認路徑。 重點在Server Locations里面。 下面我們把[workspace]/.metadata\.pl…

boost解析xml文件

前面我們介紹了xml文件&#xff0c;今天我們試著用boost庫來解析xml文件。我們將舉兩個例子來說明怎么使用。 來自boost官方的例子 先看xml文件的內容&#xff1a; <debug><filename>debug.log</filename><modules><module>Finance</modul…

使用網橋模式(bridge networking mode)配置KVM-QUME虛擬機網絡

&#xff08;1&#xff09;linux要工作在網橋模式&#xff0c;所以必須安裝兩個RPM包。即&#xff1a;bridge-utils和tunctl。它們提供所需的brctl、tunctl命令行工具。能夠使用yum在線安裝&#xff1a; [rootserver3 ~]# yum install bridge-utils &#xff08;2&#xff09;查…

python數據處理常用函數_pandas數據分析常用函數總結大全:上篇

基礎知識在數據分析中就像是九陽神功&#xff0c;熟練的掌握&#xff0c;加以運用&#xff0c;就可以練就深厚的內力&#xff0c;成為絕頂高手自然不在話下&#xff01; 為了更好地學習數據分析&#xff0c;我對于數據分析中pandas這一模塊里面常用的函數進行了總結。整篇總結&…

XML的應用

1.XML的定義: XML 于 1998 年 2 月 10 日成為 W3C 的推薦標準。xml一般指可擴展標記語言&#xff0c;可擴展標記語言是一種很像超文本標記語言的標記語言。它的設計宗旨是傳輸數據&#xff0c;而不是顯示數據。 2.通過XML我們可以自定義自己的標簽&#xff0c;如&#xff1a; &…

虛擬機VMware里 windows server 2003 擴充C盤方法

你會經常用windows server 2003 嗎&#xff1f;應該不會吧&#xff0c;有時一些東西必須裝在windows server 2003 上才能用&#xff0c;所以 用虛擬機把&#xff0c;好&#xff0c;裝在虛擬機上&#xff0c;8G的C盤夠你用嗎&#xff0c;一個稍微大點的軟件就可能就沒空間來存儲…

從運維角度淺談MySQL數據庫優化

一個成熟的數據庫架構并不是一開始設計就具備高可用、高伸縮等特性的&#xff0c;它是隨著用戶量的增加&#xff0c;基礎架構才逐漸完善。這篇博文主要談MySQL數據庫發展周期中所面臨的問題及優化方案&#xff0c;暫且拋開前端應用不說&#xff0c;大致分為以下五個階段&#x…

c語言c99標準_自學C語言之一

上次自學C語言還是在剛開學到國慶期間&#xff0c;聽學姐的建議買了本C語言的書&#xff0c;在軍訓期間的晚上翻翻看看。后來選課、開始正式上課、面試社團、開各種會等等&#xff0c;好像每天都有許多事要忙&#xff0c;但又沒忙出來什么結果&#xff0c;慢慢地好像就把C語言放…

boost解析info文件

先給出info文件&#xff1a; parameters {MAX_STAGES 4MAX_DEPTH 3MAX_NUMTRESS 5MAX_NUMTHRESHS 500MAX_NUMFEATS 1000,1000,1000,500,500,500,400,400MAX_RATIO_RADIUS 0.3,0.2,0.2,0.15,0.12,0.10,0.08,0.06,0.06,0.05BAGGING_OVERLAP 0.4IS_FLIP true }meanface {MAX_ITER…

Font Rending 的 Hint 機制對排版的影響

Font Rending 的 Hint 機制對排版的影響【轉】 在設計一種 Font 時&#xff0c;設計者使用的是一個抽象的單位&#xff0c;叫做 EM&#xff0c;來源于大寫 M 的寬度&#xff08;通常英文字體中大寫 M 的寬度最大&#xff09;。EM 即不同于在屏幕顯示時用的像素&#xff08;Pixe…

《SQL初學者指南(第2版)》——2.4 指定列

本節書摘來自異步社區出版社《SQL初學者指南&#xff08;第2版&#xff09;》一書中的第2章&#xff0c;第2.4節&#xff0c;作者&#xff1a;【美】Larry Rockoff&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.4 指定列 到目前為止&#xff0c;我們只…

python從文件中提取特定文本_使用Python從HTML文件中提取文本

我發現最好的一段代碼用于提取文本&#xff0c;而不需要javascript或不需要的東西&#xff1a;import urllibfrom bs4 import BeautifulSoupurl "http://news.bbc.co.uk/2/hi/health/2284783.stm"html urllib.urlopen(url).read()soup BeautifulSoup(html)# kill …

mutable、volatile的使用

本文轉載自http://blog.csdn.net/tht2009/article/details/6920511 (1)mutable 在C中&#xff0c;mutable是為了突破const的限制而設置的。被mutable修飾的變量&#xff0c;將永遠處于可變的狀態&#xff0c;即使在一個const函數中&#xff0c;甚至結構體變量或者類對象為const…

文本框點擊后文字消失總結

1.文本框顯示默認文字&#xff1a; <textarea>白鴿男孩</textarea> <textarea>白鴿男孩</textarea>    2.鼠標點擊文本框&#xff0c;默認文字消失&#xff1a; <textarea οnfοcus”if(value’白鴿男孩’) {value’ ‘}”>白鴿男孩</text…

[裴禮文數學分析中的典型問題與方法習題參考解答]4.5.8

需要全部的解答, 請 http://www.cnblogs.com/zhangzujin/p/3527416.html 設 $f(x)$ 在 $[a,\infty)$ 上可微; 且 $x\to\infty$ 時, $f(x)$ 單調遞增趨于 $\infty$, 則 $$\bex \int_a^\infty \sin f(x)\rd x,\quad \int_a^\infty \cos f(x)\rd x \eex$$ 都收斂. 證明: 由 $$\be…