2011年11月21日 星期一

XML的語法



3.1 XML 文件宣告
在第一行中,我們看到:
      < ?xml version="1.0" encoding="Big5"? >這叫 XML宣告(declaration),更有學問的稱呼為 前言(prolog)。其目的是在宣告,這是一份XML文件及宣告目前所用的XML版 本。其中version這個註明版本的屬性是一定要有的,而encoding 這個註明文字編碼的屬性則可有可無,如果省略的話,字碼 必須是Unicode,以 UTF-8 或 UTF-16作編碼。在這樣的情況下,甚至可以將整行 <?xml ... ?> 宣告一並省去,不過XML標準 中強烈建議不要這麼做,不管用的是不是 Unicode,最好還是養成一律寫的好習慣。

3.2 PI 與樣規鏈結
在第二行中,我們看到:
      < ? xml-stylesheet href="style.css" type="text/css" ? >XML中有一種標注,叫 PI(Processing Instruction)。通常PI是用來傳遞情報給解析器下游的程式的,譬如我們想用樣規(style sheet)來美化上面的例子中的陽春XML碼,不管是用CSS還是XSL,都必須有個機制,讓瀏覽器知道要到那裡去找樣規。為此,W3C 特別頒布了一個專為連結樣規所設計的PI。“xsl-stylesheet”這部分稱做PI的目標(target)。以上的PI是用來告訴瀏覽器去抓 一個叫 style.css 的CSS檔。如果要連結XSL樣規,就寫成: < ? xml-stylesheet href="style.xsl" type="text/xsl" ? >

3.3 元素與屬性
在第此行中,我們看到:
      <  姓名  >  小 明  <  /姓名  >< 姓名 > 也就是俗稱的「標籤」(tags),實際上包含了「元素」和「屬性」(attributes)兩部分。如圖所示,「姓名」是直屬於 「成績紀錄」這個母元素底下的子元素,而元素裡面可以加上屬性,在「屬性名」的等號後面的值則稱為「屬性值」。最高層的元 素(成績紀錄)稱做「根元素」(root element)。其基本架構如下:




3.4 正確的格式
所謂「正確的格式」,在XML中的正式的說法叫做"well-formed",也就是格式正確。任何文件要能稱得上是XML文件之前,必須要 是正確的格式,若格式不正確,會讓XML的解析器,解析失敗,什麼都做不成。但是什麼樣的XML文件才是正確的格式呢?主要有 以下幾個原則:
(1)所有元素都要有結尾標籤
      在XML中,所有的XML文件都必須要有結尾標籤,把其元素關起來。譬如: <姓名>小 明</姓名>。根據HTML的標準規定,有不 少標籤,例如 <p>、<tr>、<td>等,他們的結束標籤是可有可無的;但是在XML中,結束標籤絕不可少,且結尾標籤一定在起始標 籤之後。因為這樣嚴格的規定,所以大大的減輕了發展XML解析器和其他開發工具時的負擔。
      至於像 HTML中的<br>、<img>等這類自成一個單元的標籤,這在XML中稱為「空元素」(empty element),因為這種的元素不內 含任何文字,只有屬性,所以XML有一種特別的表示法,像這樣:<元素/>,如果帶有屬性的話,則寫成:
      <元素 屬性甲="屬性值" 屬性乙="屬性值">
(2)標籤之間不得交叉
      XML中規定,所有的元素排列必須是嚴謹的樹狀結構。樹狀結構的觀念對學XML的人非常重要, 在使用DOM、XSLT,和XPointer來分別控制、轉換,連結XML文件時,都需要隨時對文件的內部結構瞭若指掌。
      要了解這道規則的話,請把元素想成是方盒子。方盒子可以放在另一個方盒的裡面或外面,但是不在一個面上打洞,另一個 方盒是不可能穿過這個方盒的。因此,下列元素重疊的範例是無效的。
       <a>Don't <b>do</a> this!</b>
       元素沒有糾纏在一起才算沒事:
       <a>No problem</a><b>here</b>
(3)所有屬性都得包上引號
      XML元素可以有屬性名稱/值對( name/value pairs)就如 HTML一樣。 在 XML 屬性值必須要用引號括起來。雖然在 HTML 中, 沒有加引號的 HTML 碼,瀏覽器依舊能正確的處理,但是在XML中,沒加引號的程式碼會遭到XML解析器判出局的命運。所以,還是 要養成加引號的習慣比較好。

3.5 註解
註解是文件中的說明文字,解析器不會去解讀。可以用來指明檔案和文件節區的用途,以協助我們瀏覽一份凌亂的文件,或者 只是用來彼此溝通。註解的語法如下:<!-- 註解的文字與標記 -->註解可以放在文件中的任何地方,但在XML宣告之前和標籤內部能放。由於註解中可放標記,所以註解可用來 “關掉” 文件 中的某些部分。當你想暫時移除某一節區,留待稍後再用時,非常有用。不過要注意的就是,小心不要將註解再變成註解,也就是 說,不要把註解放到註解裡面,會有錯誤產生。

3.6 CDATA節區
如果常常要在文字中標記字元,會發現用預設實體 <、>、& 很囉唆。不僅需打字輸入,一般而言,在標記中也很 難閱讀。然而,有另一種方式可大量輸入這些禁用的字元:CDATA節區。CDATA 是字元資料(character data)的簡稱,也就是說“不是標記”。質言之,就是告知解析器,文件的這個節區沒有任何 標記,應視為正常文字。唯一不能改進CDATA 節區的東西是結尾分隔符號( )。如果要放,就得使用預設實體,改寫成 ]]>。 CDATA 節區的語法如下:<![ CDATA [ 文字 ]]>CDATA 節區用在大片區域是最方便的,如電腦程式。如果你在小片小片的文字上大量使用,那文件反而會變得很難閱讀,所 以零碎的使用最好使用實體參考<註三>

<註三> 因為標籤語言本身擁有一些保留符號,例如:標籤中的「<」符號,如果文件內容需要使用到這些符號,此時就需要使用實體參考, 在 XML 中有五個預先保留的實體參考,如下表所示:

實體參考符號

實體參考符號
&lt;<
&gt;>
&amp;&
&apos;'
&quote;"


每一個實體參考都是由「&」符號開始,然後以「;」結束,例如: XML 文件不可以寫成下列的文件內容,如下所示:

< Person > 年齡 < 20 < /Person >

沒有留言:

張貼留言