第 2 章 XML基本語法
XML基本語法 - 您的第一份XML文件 以下為描述兩本書籍資料的XML文件。
XML基本語法 - 您的第一份XML文件 將XML文件內容鍵入Notepad後的畫面如下:
XML基本語法 - 您的第一份XML文件 欲瀏覽XML檔時,只要使用Microsoft的Internet Explorer開啟,即可檢視XML檔的內容,畫面將如下所示。
XML基本語法 - 您的第一份XML文件 整份XML文件的結構可以分為以下兩個部份: 文件前言(Prolog) 文件元素(Document Element)
XML基本語法 - 文件前言 XML文件的前言(prolog)包含了以下兩個部份。 文件宣告 文件類型宣告 以下為完整的XML文件宣告語法: <?xml version="版本" encoding="編碼方式" standalone='是否為獨立文件'?> 文件類型宣告的原文Document Type Declaration,簡稱為DTD,它用於定義XML文件的文法規則,可用於檢查XML文件是否正確。
XML基本語法 - 文件前言 文件元素(Document Element)為整份XML文件的主要內容,由於文件元素是XML文件所有元素的最上層元素,亦稱為根元素(Root Element。 一份XML文件必須擁有一個文件元素。在Book.xml中,以<booklist>標籤所包含的部份,為該份文件的文件元素。
XML基本語法 - 文件前言 Book.xml所表達的樹狀結構如下圖所示。
XML基本語法 - 元素的建立 <元素名稱> </元素名稱> 每個元素都必須利用開始標籤與結束標籤標記元素。 開始標籤的建立方式,為利用『<』與『>』符號,加上元素名稱所形成,如下所示。 <元素名稱> 結束標籤的建立方式,則利用『</』與『>』,加上元素名稱所形成,如下所示。 </元素名稱> 完整元素的建立語法如下: <元素名稱>元素內容</元素名稱> 以下為Book.xml中,儲存書籍作者資料的author元素。 006 <author>位元文化(郭尚君)</author>
XML基本語法 - 元素的建立 若該元素具備屬性時,則在開始標籤上利用以下語法建立屬性。 <元素名稱 屬性="屬性值" 屬性="屬性值" …> 屬性值必須使用『“』符號標示。若擁有不止一個屬性時,請用空格分隔。以下為Book.xml內book元素的sale屬性。 004 <book sale="N">
XML基本語法 - 元素的建立 其實也可以為Book.xml中price元素加入unit屬性,說明價格所使用的貨幣單位。 <price unit="NT">650</price> 當然也可以將貨幣單位的屬性,也建立為book元素下的一個子元素,但這樣並不好,原因如下: 貨幣單位與價格擁有較為密切的關係。 若其他程式在讀取出price元素後,還要再到book元素裡讀取unit元素,才能取得所使用的幣別,這似乎也讓人覺得不太合情理。
XML基本語法 - 元素的建立 命名XML文件的元素名稱與屬性名稱時,必須符合XML的命名規則,此規則稱之為XML名稱(XML name),命名規則如下: 可使用A至Z、a至z的英文字母,以及0至9的數字。 可使用非英文的字母、數字或表意文字,如:Ψ、α…等。 可使用底線(_)、連字符號(-)、句號(.)三種標點符號,其他如:引號(”)、錢號($)、分號(;)…等符號,則不可使用。 不可包含空格(space)、回歸字元(carriage return)、換行字元(line feed)或不斷行空白(non-breaking space)。 名稱的開頭可使用字母、表意文字或底線,但不可使用數字、連字符號(-)或句號(.)。 名稱的長度沒有限制。
XML基本語法 - 元素的建立 命名XML文件的元素名稱與屬性名稱時,必須符合XML的命名規則,此規則稱之為XML名稱(XML name),命名規則如下: 可使用A至Z、a至z的英文字母,以及0至9的數字。 可使用非英文的字母、數字或表意文字,如:Ψ、α…等。 可使用底線(_)、連字符號(-)、句號(.)三種標點符號,其他如:引號(”)、錢號($)、分號(;)…等符號,則不可使用。 不可包含空格(space)、回歸字元(carriage return)、換行字元(line feed)或不斷行空白(non-breaking space)。 名稱的開頭可使用字母、表意文字或底線,但不可使用數字、連字符號(-)或句號(.)。 名稱的長度沒有限制。
XML基本語法 - 元素的建立 當某個元素中,包含其他元素時,則可利用下面的語法建立元素。 <元素名稱> <元素名稱>元素內容</元素名稱> …… </元素名稱> 以下為Book.xml內表達書籍資料的元素,該元素包含書籍標題(title)、作者(author)與價格(price)三個元素。
XML基本語法 - 元素的建立 在XML中,對於這些沒有資料的元素,稱之為空元素。建立空元素時,不需要結束標籤,只需要將開始標籤的最後改以『/>』結尾,語法如下: <元素名稱/> 或 <元素名稱 屬性="屬性值" …/> 除了英文以外,您亦可運用任何語言命名元素,以下將以中文命名作者標籤。 <作者>位元文化(郭尚君)</作者>
XML基本語法 –元素的建立 在XML文件中,欲加入註解時語法如下: <!--註解文字--> 大小寫有別:在XML中,請注意!在建立標籤名稱與屬性名稱時,英文字母的大寫與小寫是有分別的,所以<author>與<Author>將被視為兩種標籤。 實體參考 :XML運用幾個特定的符號建立標籤,如:<、>、/。若在元素內容中使用這些符號時,將被XML剖析器誤認為元素的標籤。若欲在元素內容中顯示這些符號必須利用實體參考(Entity Reference)代替。下表為XML中,用於代表各符號的實體參考。
XML基本語法 - 元素的建立 XML文件內若有不希望剖析器解析的資料時,可利用CDATA區塊標示這些資料,標示語法如下: XML標準的xml:space屬性,用於定義元素如何處理元素值所包含空白字元,語法如下: <開始標籤 xml:space=(default|preserve)> 元素內容</開始標籤> 此屬性的預設值為preserve。將xml:space屬性設定為default時,代表此元素將接受應用程式預設的空白處理方法,若設為preserve,代表應用程式應該保留所有空白。
XML基本語法 - 元素的建立 文件的編碼 XML文件為了能夠世界通用,當XML文件未指定編碼方式時,將預設使用Unicode(統一字碼)編碼。 繁/簡體中文所使用的Big5與GB2321編碼,並不是預設使用的編碼。當以繁/簡體中文建立XML文件時,必須指定所使用的編碼方式。 處理指令(Processing Instructions,簡稱PI): 不是XML文件內的資料,而是用於傳遞資料給下游應用程式的元素。 當XML剖析器讀取至處理指令時,將原封不動地傳遞給下游應用程式。 XML文件宣告就是一種處理指令,將告訴XML剖析器,此文件為XML文件。處理指令元素的語法如下: <?名稱 參數1=資料 參數2=資料 …?>
XML基本語法 - XML文件的規則 一份XML文件必須遵循的兩大原則,它們是 符合規格(well-formed) 可驗證(valid ) 文件中必須有一個唯一的文件元素 每個元素必須有結尾 標籤間不可交錯 所有屬性值都必須使用引號 可使用的實體參照
XML基本語法 - 名稱空間(Namespaces) 名稱空間標準並未包含在XML標準內,而是定義在『Namespaces in XML』標準中,您可至http://www.w3.org/TR/REC-xml-names/瀏覽該份標準。 以下語法運用名稱空間做為元素名稱的『前置詞』(Prefix,本書習慣上稱之為字頭),定義出獨一無二的元素標籤。 <名稱空間:元素名稱>…</名稱空間:元素名稱>
XML基本語法 - 名稱空間(Namespaces) 什麼是URI:URI是一個Internet的標準,泛指以字串標示出的網路資源。 建立名稱空間時,將運用URI中的兩種網路資源定位方法 – URL與URN,說明如下: URL – 全文為Uniform Resource Locator,譯為統一資源定位碼,也就是目前常見的網址,如:http://www.bitc.com.tw。與URI不同處,在於URL將更進一步標示出此網路資源所使用的通訊協定,如:http、ftp…等。 URN – 全文為Uniform Resource Name,譯為統一資源命名碼,泛指存在較久,並有機構負責維護的資源,例如:一本書在全球通用的ISBN編碼。
XML基本語法 - 名稱空間(Namespaces) <?xml:namespace ns="URI字串" prefix="前置詞"?> 以下將宣告以位元文化網址(http://www.bitc.com.tw)做為名稱空間,並以bitc為前置詞。 <?xml:namespace ns="http://www.bitc.com.tw" prefix="bitc"?>
XML基本語法 - 名稱空間(Namespaces) 若名稱空間僅使用於某個元素內時,可以將名稱空間宣告於該元素的標籤中,語法如下: <前置詞:元素名稱 xmlns:前置詞="URI字串"> 以下將宣告customlist將以位元文化網址(http://www.bitc.com.tw)做為名稱空間,並以bitc為前置詞。 <bitc:customlist xmlns:bitc="http://www.bitc.com.tw">
XML基本語法 - 名稱空間(Namespaces) 完成名稱空間的宣告後,運用名稱空間建立元素標籤的語法如下: <前置詞:元素名稱>…</前置詞:元素名稱> 以下敘述將運用bitc前置詞所代表的名稱空間,建立phone元素標籤。 <bitc:phone>08-7526621</bitc:phone> 除了元素名稱可使用名稱空間外,元素的屬性也可以使用名稱空間,以下敘述內company元素的level(等級)屬性將使用bitc為名稱空間。 <company bitc:level="3">位元文化</company>
XML基本語法 - 名稱空間(Namespaces)
XML基本語法 - 名稱空間(Namespaces) 若名稱空間宣告於元素時,則該元素內的子元素將預設使用該名稱空間。 以下XML文件將設定customlist元素使用http://www.bitc.com.tw/customlist為名稱空間。
XML基本語法 - 名稱空間(Namespaces) 以上兩個範例若有元素欲使用別的名稱空間時,只要在該元素中再宣告名稱空間即可。 以下XML文件內,phone元素(第6行)的名稱空間,將使用http://www.bitc.com.tw/phone。
XML基本語法 - 名稱空間(Namespaces) 明確宣告:相對於預設宣告,當每個元素都利用前置詞,明確指出該元素名稱所使用的名稱空間時,稱之為明確宣告,範例2-1所採用的就是明確宣告。
XML基本語法 - 名稱空間(Namespaces) 以下程式碼改寫範例2-1,宣告XML文件使用cl與cm兩個名稱空間。