1. XML 基本語法(Syntax)
- tag
- 註解
- Well-formed
- Entity Reference
- Built-in Entity
-
CDATA
- Namespace
- 中文標記及內容
1.tag
html的標籤是呈現文件的佈局和外觀,但是xml的標籤可以自己訂定,定義標籤按照自己的意思來表達內容,而且可以是中文。相較於HTML的標籤,XML就可以很清楚的表達標籤內容
例如:
<player>
<firstName>John</firstName>
<lastName>Doe<lastName>
<battingAverage>0.375</battingAverage>
</player>
2.註解
如果要加入註解,語法:
<!--註解-->
註解可以加在任何位置,但不能加在標籤之間。
3.well-formed
良好的格式的要求是:
1.在文件的第一行必須宣告XML版本 例:<?xml version="1.0" encoding="utf-8" ?>
在上面的宣告中version說明此文件所用的XML版本,不可省略。
encoding則是編碼方式,省略時會用預設的unicode編碼方式。
2.文件中必須含有一個根元素(root element)。以上面的player例子來說,<player>就是root。
3.起始標籤和結束標籤一定要成對 例:<標籤名稱>...</標籤名稱>。
4.空標籤(empty)要以"/>"結尾 例:HTML中的<hr>要寫成<hr/>
例:<img src="img.gif"/>
5.標籤要巢狀排列,不可交錯 例:<標籤1><標籤2>內容</標籤2></標籤1>
6.英文字母大小寫是有區別的(case sensitive)
7.屬性要用雙引號框住 例:<student age="20">
8.相同屬性在同一標籤只能出現一次 錯誤例:<標籤1><標籤1>內容</標籤1></標籤1>
4.Entity reference
XML有些符號是有特殊功能的,為了防止瀏覽器或其他程式讀取的時候無法辨識但是又要在螢幕上顯示出來的時候就需要用Entity Reference來實現,可以參考第四項Built-in Entity
此外還有像是某些語言或符號輸入不出來的也可以用下列方式來替代
Ӓ 其中的1234是指Unicode碼
5.built-in Entity
預設系統的保留字以及對應的表
表示方式 顯示的符號
< <
> >
& &
" "
' '
6.CDATA(character data)
舉W3CSCHOOL上面的例子來看
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>
一般來說,如果文件內容出現<、>符號的時候會被parser解析,如果沒有轉成上述的<或>的話就會出現錯誤。在文件中,空一個和空很多格是一樣的,如果在後面打了10個空格,最後也是會變成一個空格,如果想要保留空格或者換行自己的格式就要用到CDATA,<![CDATA[ 和 ]]>之間的文字會被當成字元原封不動的處理,包含空白和換行,parser不會去解析裡面的標記。
7.namespace
XML namespaces 提供一個方法防止使用者命名的時候有衝突
例如:<subject>Math</subject>
<subject>Music</subject>
XML可以自己定義標籤,如果大家取的名字都一樣,如果要處理文件或交換檔案就會產生"撞名"的情況,一樣的標籤但卻有不一樣的意義。
如果加上一些東西,例如:
<school:subject>Math</school:subject>
<medical:subject>Music</medical:subject>
上面的school和medical都是namespace prefixes
•每個 namespace 之前都用一個 URI (uniform resource identifier) 來個別定義 namespace。
‧create namespace:
用xmlns這個關鍵字
例如:
xmlns:text="urn:deitel:textInfo"
xmlns:image="urn:deitel:imageInfo"
在文件內的運用
<text:file fileName="book.xml">
<image:file fileName="funny.gif">
以例子來看:urn:deitel:tectInfo就是 text這個prefix的URI。
–URI是由一連串不同名字的字元所組成
–創立XML者可以自行定義它們自己的namespace prefixes
–任何名字都能作為 namespace prefix, 但是 namespace prefix xml在XML使用的標準裡是被保留的
•為了估計每個XML所需要的namespace prefix, 建立者可以定義一個 default namespace 做為一個元素和他的子元素
–當我們宣告一個 default namespace 的時候我們必須使用 keyword xmlns 並以一個 URI (Uniform Resource Identifier) 作為他的值
例:
<directory xmlns = "urn:deitel:textInfo"
xmlns:image = "urn:deitel:imageInfo">
如果在文件中,以這兩個例子來看
<file fileName="book.xml">←這個就會用default
<image :file fileName="funny.gjf">
•文件的建立者通常會使用URLs (Uniform Resource Locators) 來代替 URIs, 因為預設的名字通常是獨一無二的(e.g., deitel.com)
8.中文標記及內容
XML規範中,內定字集是Unicode並要求所有XML的應用軟件都支持UTF-8和UTF-16字集。
我們也可以指定使用其他字集如BIG5,指定字集全是為了方便程序去閱讀該份文件。
要使用中文,XML文件的第一句要加上encoding="BIG5"
例如,<?xml version="1.0" encoding="BIG5"?>
那麼整份文件也可以使用中文了(包括標記及內容)。