xml 的特性
xml的設(shè)計(jì)宗旨是傳輸數(shù)據(jù)挡闰,而html宗旨是顯示內(nèi)容乒融。
xml有自我描述性。
需要自定義標(biāo)簽摄悯。
-
xml元素指的是從標(biāo)簽開始到結(jié)束的部分赞季。元素可以包含其他元素,文本或者兩者的混合物奢驯。
<bookstore> <book category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2008</year> <price>99.99</price> </book> </bookstore>
上例子中碟摆,只有book有屬性。
xml的命名規(guī)則
- 名稱可以含有數(shù)字叨橱,字母和其他字符典蜕。
- 不能以數(shù)字或者標(biāo)點(diǎn)開始。
- 不能以xml開始罗洗。
- 不能包含空格愉舔。
- 避免有中劃線"-"』锊耍可以使用下劃線"_"轩缤。
- 避免":"。冒號(hào)會(huì)被轉(zhuǎn)換為命名空間使用贩绕。
- 空標(biāo)簽的寫法:<noelement></noelement>或者<noelelment />火的。
W3C對(duì)xml的一些規(guī)定
- xml對(duì)大小寫敏感。
- 必須正確的嵌套淑倾。
- 必須有根元素馏鹤。
- 屬性值必須加引號(hào)。單引號(hào)和雙引號(hào)都可以娇哆。
- 文本中的<必須被<代替湃累。否則解析錯(cuò)誤。
- 注釋和html相同碍讨。
- xml中以\n來存儲(chǔ)換行治力,win以\r\n存儲(chǔ)換行,linux和unix以\r存儲(chǔ)換行勃黍。
- 建議xml少用屬性:屬性無法包含多重值宵统,屬性無法描述為樹結(jié)構(gòu),屬性不易擴(kuò)展覆获,屬性難以閱讀马澈。
- 元數(shù)據(jù)==存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)應(yīng)當(dāng)存儲(chǔ)為屬性瓢省。
xml的DTD(文檔類型定義)
DTD的作用是定義xml的文檔結(jié)構(gòu),使用一系列合法的元素來定義文檔結(jié)構(gòu):
<!DOCTYPE note [
<!ELEMENT note ( to, from, heading, body ) >
<!ELEMENT to ( #PCDATA )>
<!ELEMENT from ( #PCDATA ) >
<!ELEMENT heading ( #PCDATA )>
<!ELEMENT body (#PCDATA) >
]>
而W3C支持一種基于XML的DTD代替者箭券,名字為XML Schema:
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string" />
<xs:element name="from" type="xs:string" />
<xs:element name="heading" type="xs:string" />
<xs:element name="body" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
xml有命名空間
如果兩個(gè)xml文件同時(shí)使用相同的元素名稱净捅,那么命名會(huì)起沖突。
例如辩块,一個(gè)表格:
<table>
<tr>
<td>Apple</td>
</tr>
</table>
一個(gè)有關(guān)桌子的信息:
<table>
<name>Coffee table</name>
<width>20</width>
</table>
使用前綴
某個(gè)表格信息可以表示為:
<h: table>
<h: tr>
<h: td>Apple</h:td>
</h: tr>
</h:table>
某個(gè)家具信息:
<f:table>
<f:name>Coffee table</f:table>
<f:width>20</f:width>
</f:table>
使用命名空間
<h:table xmlns:h="http://www.w3.org/html4">
<h: tr>
<h: td>Apple</h:td>
</h: tr>
</h:table>
帶有家具信息的xml:
<f:table xmlns:f="http://www.w3.org/furniture">
<f:name>Coffee table</f:table>
<f:width>20</f:width>
</f:table>
通過xmlns將此xml與某個(gè)命名空間相關(guān)聯(lián)蛔六。
默認(rèn)命名空間
如果每次在元素前面加f:或者h(yuǎn):是件很繁瑣的事情,以下辦法就可以省去命名空間的前綴:
xmlns="namespaceURI"
xml文檔的解析
xml文檔中的所有文本均會(huì)被解析废亭,這是由于每個(gè)元素中可能嵌套其他元素国章。
<message>此處文本會(huì)被解析</message>
除非用CDATA來標(biāo)識(shí)出不應(yīng)該被解析的部分
CDATA部分以"<!CDATA["開始,以"]]>"結(jié)束豆村。
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>
xml編碼
編碼方式
xml需要編碼為unicode編碼液兽。