1. 程式人生 > >XML學習2:XML基本語法(一)

XML學習2:XML基本語法(一)

       匯入

       一個XML檔案可分為如下幾部分內容:文件宣告 、元素、屬性、註釋 、CDATA區 ,特殊字元 、處理指令

(processing instruction)等。

       先來看一個簡單的XML說明:

<?xml version="1.0" encoding="UTF-8"?>  
<!--上面是文件宣告-->  
<?xml-stylesheet type="text/css" href=”XML2.css”?>  
<!--上面是處理指令-->  
<根元素>  
    <!--註釋-->  
    <![CDATA[CDATA區,可以是任意字元]]>  
    <元素 屬性="屬性值”>  
        <元素>元素內容</元素>  
        <空元素/>  
    </元素>   
</根元素>  

      一XML語法規則

      XML的語法規則很簡單,且很有邏輯。這些規則很容易學習,也很容易使用。

      (1)所有XML元素都須有關閉標籤

      在HTML,經常會看到沒有關閉標籤的元素:

<p>This is a paragraph
<p>This is another paragraph

      在XML中,省略關閉標籤是非法的。所有元素都必須有關閉標籤:

<p>This is a paragraph</p>
<p>This is another paragraph</p>  

      註釋:您也許已經注意到XML宣告沒有關閉標籤。這不是錯誤。宣告不屬於XML本身的組成部分。它不是XML元

素,也不需要關閉標籤。

      (2)XML標籤對大小寫敏感

      XML元素使用XML標籤進行定義。

      XML標籤對大小寫敏感。在XML中,標籤<Letter>與標籤<letter>是不同的。

      必須使用相同的大小寫來編寫開啟標籤和關閉標籤:

<Message>這是錯誤的。</message>
<message>這是正確的。</message> 
      註釋:開啟標籤和關閉標籤通常被稱為開始標籤和結束標籤。不論您喜歡哪種術語,它們的概念都是相同的。

      (3)XML必須正確地巢狀

      在HTML中,常會看到沒有正確巢狀的元素:

<b><i>This text is bold and italic</b></i>

      在XML中,所有元素都必須彼此正確地巢狀:

<b><i>This text is bold and italic</i></b>
      在上例中,正確巢狀的意思是:由於<i>元素是在<b>元素內開啟的,那麼它必須在<b>元素內關閉。

      (4)XML文件必須有根元素

      XML文件必須有一個元素是所有其他元素的父元素。該元素稱為根元素。

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

      (5)XML的屬性值須加引號

      與HTML類似,XML也可擁有屬性(名稱/值的對)。

      在XML中,XML的屬性值須加引號。請研究下面的兩個XML文件。第一個是錯誤的,第二個是正確的:

<note date=08/08/2008>
     <to>George</to>
     <from>John</from>
</note> 
<note date="08/08/2008">
     <to>George</to>
     <from>John</from>
</note> 

      在第一個文件中的錯誤是,note元素中的date屬性沒有加引號。

      (6)實體引用

      在XML中,一些字元擁有特殊的意義。為了避免把字元資料和標籤中需要用到的一些特殊符號相混淆,XML還提

供了實體引用

      如果你把字元"<"放在XML元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。

      這樣會產生XML錯誤:

<message>if salary < 1000 then</message>

      為了避免這個錯誤,請用實體引用來代替 "<" 字元:

<message>if salary &lt; 1000 then</message>

      在XML中,有 5 個預定義的實體引用:


      註釋:在XML中,只有字元"<"和"&"確實是非法的。大於號是合法的,但是用實體引用來代替它是一個好習慣。

      (7)XML中的註釋

      XML註釋和HTML一樣,都是<!-- 註釋-->,同樣也不能註釋巢狀,不能放在元素名中間。

      在XML中編寫註釋的語法與HTML的語法很相似:

<!-- This is a comment --> 

      (8)在XML中,空格會被保留

      HTML會把多個連續的空格字元裁減(合併)為一個:

HTML:Hello           my name is David.

輸出:Hello my name is David.

      在XML中,文件中的空格不會被刪節。

      (9)XML文件宣告

      大多數XML檔案以XML宣告作為開始,它提供了關於文件的基本資訊。

<?xml version="1.0" encoding=“編碼方式"  standalone="yes|no"?>  

      XML宣告放在XML文件的第一行。

      XML宣告由以下幾個部分組成:

      version表示XML的版本。

      encoding表示XML檔案使用的字元編碼方法,有utf-8,gb2312,ISO-8859-1等編碼方式。

      standalone表示文件定義是否獨立使用。它有兩個值:standalone="yes“和standalone=“no”(預設)。

      二XML元素

      XML文件包含XML元素。

      (1)什麼是XML元素

XML元素指的是從(且包括)開始標籤直到(且包括)結束標籤的部分。元素可包含其他元素、文字或者兩者的混合

物。元素也可以擁有屬性。

      XML元素基本語法:<元素>元素內容</元素>   

      注意事項:

      1)每個XML文件必須有且只有一個根元素。

      2)根元素是一個完全包括文件中其他所有元素的元素。

      3)根元素的起始標記要放在所有其他元素的起始標記之前。

      4)根元素的結束標記要放在所有其他元素的結束標記之後。

      5)XML元素指XML檔案中出現的標籤,一個標籤分為開始標籤和結束標籤,一個標籤有如下幾種書寫形式,如:

      包含標籤體:<a>123</a>

      不含標籤體的:<a></a>, 簡寫為:<a/>

6)對於XML標籤中出現的所有空格和換行,XML解析程式都會當作標籤內容進行處理。例如: <a>123</a>和<a>

   123   </a>意義是完全不同的。

      來看一個例子:

<bookstore>
   <book category="CHILDREN">
       <title>Harry Potter</title> 
       <author>J K. Rowling</author> 
       <year>2005</year> 
       <price>29.99</price> 
   </book>
   <book category="WEB">
       <title>Learning XML</title> 
       <author>Erik T. Ray</author> 
       <year>2003</year> 
       <price>39.95</price> 
   </book>
</bookstore> 

      在上例中,<bookstore>和<book>都擁有元素內容,因為它們包含了其他元素。<author>只有文字內容,因為它

僅包含文字。在上例中,只有<book>元素擁有屬性(category="CHILDREN")。

       (2)XML命名規則

       XML元素必須遵循以下命名規則:

       1)名稱可以含字母、數字以及其他的字元。

       2)名稱不能以數字或者標點符號開始。

       3)名稱不能以字元"xml"(或者XML、Xml)開始。

       4)名稱不能包含空格。

       可使用任何名稱,沒有保留的字詞。

       (3)最佳命名習慣

       最佳命名習慣的一些做法:

       1)使名稱具有描述性。使用下劃線的名稱也很不錯。

       2)名稱應當比較簡短,比如:<book_title>,而不是:<the_title_of_the_book>。

       3)避免"-"字元。如果您按照這樣的方式進行命名:"first-name",一些軟體會認為你需要提取第一個單詞。

       4)避免"."字元。如果您按照這樣的方式進行命名:"first.name",一些軟體會認為 "name" 是物件"first"的屬性。

       5)避免 ":" 字元。冒號會被轉換為名稱空間來使用。

       XML文件經常有一個對應的資料庫,其中的欄位會對應XML文件中的元素。有一個實用的經驗,即使用資料庫的

名稱規則來命名XML文件中的元素。

       非英語的字母比如 éòá 也是合法的XML元素名,不過需要留意當軟體開發商不支援這些字元時可能出現的問題。

       (4)XML元素是可擴充套件的

       XML元素是可擴充套件,以攜帶更多的資訊。

       請看下面這個 XML 例子:

<note>
     <to>George</to>
     <from>John</from>
     <body>Don't forget the meeting!</body>
</note> 
       讓我們設想一下,我們建立了一個應用程式,可將<to>、<from>以及 <body>元素提取出來,併產生以下的輸

出:

MESSAGE
To: George
From: John
Don't forget the meeting!
      想象一下,之後這個XML文件作者又向這個文件添加了一些額外的資訊:
<note>
     <date>2008-08-08</date>
     <to>George</to>
     <from>John</from>
     <heading>Reminder</heading>
     <body>Don't forget the meeting!</body>
</note>

      那麼這個應用程式會中斷或崩潰嗎?不會。這個應用程式仍然可以找到XML文件中的<to>、<from>以及<body>元

素,併產生同樣的輸出。XML的優勢之一,就是可以經常在不中斷應用程式的情況進行擴充套件。