XML基礎<第一篇>


一、XML簡介

  XML是一種標記語言,用於描述數據,它提供一種標准化的方式來來表示文本數據。XML文檔以.xml為后綴。需要徹底注意的是XML是區分大小寫的

  先從一個簡單的XML例子來了解下xml基礎:

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

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

  每個XML元素都已一個起始標記開始和一個結束標記結束。比如開始:<title>,結束:</title>。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. 一個元素不能有相同的屬性;

  下面以示例來解釋XML常用的術語。

  1、標記

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

  2、元素

  XML元素是從一個開始標記到它結束標記的一段內容。比如 <title>XML學習筆記</title> 就是一個元素。

  3、屬性

  一個元素可以帶有屬性,屬性寫在開始標記里,寫在元素名稱的后面。比如<books ISBN="9787544238212">,其中ISBN="9787544238212"就是books元素的一個屬性。ISBN 是屬性的名稱, 9787544238212 是屬性值。一個XML元素不能有相同的XML屬性名

三、XML元素之間的關系

  1. 子節點;
  2. 父節點;
  3. 並列節點(兄弟關系);

  下面以一個例子來解釋這三種關系。

<?xml version="1.0" encoding="utf-8" ?>
<father>Tom Smith
  <son>
    John Smith
    <grandson>Hans Smith</grandson>
  </son>
  <daughter>Jane Smith</daughter>
</father>

    在上面的例子中,son元素就是father元素的子節點。father元素就是son元素和daughter元素的父節點。son元素和daughter又稱並列節點。

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

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

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

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

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

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

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

四、XML名稱命名規則

  XML的名稱可以包含英文字母和數字,或者其他字符比如下划線。XML名稱不能以數字或者標點符號開頭,XML不能以xml開頭(或者xml的大小寫,因為這是XML相關標准的保留詞)。XML名稱不能包含空格,雖然XML名稱支持下划線(_)、連字符(-)、句號(.)和冒號(:),但XML開頭不能使用連字符(-)、句號(.)和冒號(:)。

   1、XML實體應用

  (1)、在XML標記里除了表示一個標記的開始之外,不允許有小於號<,因為小於號總是被XML解析器解釋為一個標記的開始。

  如 :

<person> if age < 10 </person>

  這行代碼是錯誤的,如果一定要在XML元素內容里書寫小於號,那么可以使用小於號的實體引用,即:&lt; 來替換小於號。

  如:

<person> if age &lt; 10</person>

  是正確的寫法。

  (2)在XML里也不能使用&這個字符,因為&被解釋為某個實體引用的開始。所以必須使用&的實體引用&amp; 來代替&。

  如:

  • <person>a & b</person>     是錯誤的
  • <person>a &amp; b</person>  是正確的

  下面給出XML5個預定的實體引用

實體引用 字符 說明
&lt; < 小於號
&gt; > 大於號
&amp; &
&apos; ' 單引號
&quot; " 雙引號

 

  當XML解析器解析含有上述實體引用的XML文檔時,會將這些實體引用轉換成相應的字符。

  只有<和&在XML是非法的。另外幾個是合法的,可以直接寫,只是用實體引用更加清晰而已。    

  2、XML CDATA區

  當需要往XML文檔里添加一段內容,而內容里有很多<或者&的時候,將所有<或&轉換為實體引用是很麻煩的事情,這時候可以使用CDATA區,在CDATA區里不必使用實體引用,因為XML解析器不會計算CDATA區里的內容。

  CDATA區以   <![CDATA[  開始 ,以  ]]>  結束

  示例如下:

     <mycode>
        <![CDATA[
          <html>
            <title></title>
            <body></body>
          </html>
        ]]>
     </mycode>

   需要注意的是:在CDATA區內,不能出現 ]]>

  3、XML注釋

  XML注釋以  <!--  開始,以  -->  結束。

  示例:

<!-- 這是注釋 -->

  在XML注釋里面,除了結束符-->,不能出現兩個連字符--。XML注釋也可以放在元素內容里。

  4、XML聲明

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

  示例:

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

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

  XML文檔聲明主要有三個參數。

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

  5、格式正確的XML文檔。

  • 每個開始標記必須有結束標記。
  • XML文檔只有一個根元素。
  • XML元素必須被正確嵌套。
  • XML元素不能有相同名稱的屬性。
  • XML屬性值必須加引號。
  • XML注釋不能卸載標記里。
  • XML文檔里不能出現<和&標記。必須用實體引用代替。

  6、XML命名空間

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

  命名空間的語法:

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

  默認命名空間示例:

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

  帶名字的命名空間|:

<?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>

  7、DTD和XML Schema

  DTD文檔類型定義,是一套關於標記符的語法規則。它是XML1.0班規格的一部分,是XML文件的驗證機制。屬於XML文件組成的一部分。DTD是一種保證XML文檔格式正確的有效方法,可以通過比較XML文檔和DTD文件來看文檔是否符合規范,元素和標簽使用是否正確。一個DTD文檔包括:元素的定義規則,元素間關系的定義規則,元素可使用的屬性、可使用的實體或符號規則。不同的公司之需定義好標准的DTD,個公司都能夠依照DTD建立XML文件,並且進行驗證,如此就可以輕易的建立標准與交換數據。這樣便滿足了網絡共享和數據交互。

  DTD文件是一個ASCII的文本文件,后綴名為.dtd。每一個XML文檔都可以攜帶一個DTD,用來對該文檔格式進行描述,測試該文檔是否為有效的XML文檔。

  XML Schema如果DTD一樣是負責定義和描述XML文檔的結構和內容模式的。它可以定義XML文檔中存在哪些元素和元素之間的關系,並且可以定義元素和屬性的數據類型。是針對DTD的某些缺點,如:DTD不支持數據類型,擴展性較差等而出現的。

  XML Schema具有以下優點:

  •   一致性:Schema使得XML得定義不必再利用一種特定的形式化語言,而是直接借助XML自身的特性,利用XML的基本語法規則來定義XML文檔的結構。
  •   擴展性:Schema對DTD進行了擴充,引入了數據類型,命名空間,從而具備較強的可擴展性。
  •   互換性:利用Schema,我們能夠書寫XML文檔以及驗證文檔的合法性。另外通過特性的映射機制,還可以將不同的Schema進行轉換,以實現更高層次的數據交換。
  •   規范性:同DTD一樣,Schema野提供了一套完整的機制以約束XML文檔中的標記的使用。相比之下Schema基於XML,更具有規范性。
  •   XML Schema的限制功能例如:那些元素可以出現在文檔中,元素間的關系是什么,每個元素有那些內容和屬性以及元素出現的順序和次數等等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM