《XML那些事...》->跟隨『我』學(xué)習(xí)XML...
By:0x584A Date:2015年9月29日
第二章 XML中的元素、屬性、命名空間
上一章XML快速入門,不知道大家有沒有聽懂.. 不過沒關(guān)系,反正我寫的也沒人看.. ((>﹏<))
我就自己樂呵樂呵得了
1. 元素
先來說說元素吧,元素
我們也可以理解為節(jié)點、標(biāo)簽、標(biāo)記。
一個合理的標(biāo)簽要有起始和結(jié)束(這個是不能省略),它們是成對出現(xiàn)的。接觸過HTML、PHP等一看就知道..
例如:<li>項目列</li>
要注意的是,一個合理的標(biāo)簽可以嵌套若干個子標(biāo)簽:<div><span>內(nèi)容</span></div>
,但及允許合理的嵌套,不允許交叉嵌套。
同樣,一個XML文檔必須要有一個根標(biāo)簽,其他標(biāo)簽都是這個根標(biāo)簽的子標(biāo)簽。
<根元素>
<子元素></子元素>
</根元素>
說到標(biāo)簽,那么就不得不說說標(biāo)簽的命名規(guī)范了。雖然XML允許自定義標(biāo)簽名稱,但也不是無限制的,你總得讓它認識你不?
元素的命名規(guī)范:
- 元素(標(biāo)簽)的名稱可以包含英文、數(shù)字、減號、下劃線、和英文句點。不允許出現(xiàn)特殊字符
- 嚴格區(qū)分大小寫
- 只能已字母下劃線開頭
- 名稱字符之間不能有空格或制表符
- 名稱字符之間不能使用冒號
2. 元素的屬性
說完了元素的標(biāo)記,當(dāng)然不得不提元素的屬性了。與HTML標(biāo)簽一樣,XML也具備屬性這一樣?xùn)|東。
<class>
<person>
<name id="DB101" sex="男">德邦總管-趙信</name>
<time>2015年9月29日 01:07:23</time>
<msg>陷陣之志,有死無生!</msg>
<!--這里是CDATA區(qū)間-->
<data><![CDATA[【德瑪西亞學(xué)院】 -- 三年級學(xué)生 ]]></data>
</person>
</class>
其中id="DB101" sex="男"
便是其屬性了,它同樣也等價于:
<class>
<person>
<id>DB101</id>
<name>德邦總管-趙信</name>
<time>2015年9月29日 01:07:23</time>
<sex>男</sex>
<msg>陷陣之志,有死無生!</msg>
<!--這里是CDATA區(qū)間-->
<data><![CDATA[【德瑪西亞學(xué)院】 -- 三年級學(xué)生 ]]></data>
</person>
</class>
個人傾向于后者的寫法,因為這樣在解析時會更加方便。
- 一個元素可以有多個屬性,屬性之間通過空格隔開即可
- 屬性值一定要用引號(單引號或雙引號)引起來
在php中,單引號中的變量是無法解析的,雙引號中的變量是可以正常解析的
在xml中,單引號和雙引號功能是一致的,沒有任何區(qū)別
- 屬性名稱的命名規(guī)范與元素的命名規(guī)范相同
- 元素中的屬性是不允許重復(fù)的
- 標(biāo)簽屬性所代表的信息也可以被改成用子元素的形式來描述
3. 注釋
額... 這個就真沒什么好講的了,大家應(yīng)該都懂的:``
4. 特殊字符
先上一段代碼吧
<class>
<person>
<id>DB101</id>
<name>德邦總管-趙信</name>
<time>2015年9月29日 01:07:23</time>
<sex>男</sex>
<msg>陷陣之志,有死無生!</msg>
<force>武力 < 5 </force>
</person>
</class>
看到?jīng)]?代碼作色都錯了,說明在標(biāo)簽內(nèi)部中<
是不能這樣使用的。<
屬于特殊字符范圍內(nèi)。如要使用,必須使用轉(zhuǎn)義過后的字符進行輸出。
轉(zhuǎn)義 | 替換 | 說明 |
---|---|---|
< |
< | 小于 |
> |
> | 大于 |
& |
& | 和號 |
' |
' | 單引號 |
" |
" | 雙引號 |
所以通過轉(zhuǎn)義字符,可以代碼替換成這樣即可:<force>武力 < 5 </force>
5. CDATA區(qū)段
當(dāng)在標(biāo)簽內(nèi)部特殊字符大量出現(xiàn)怎么辦?此時我們就必須要使用CDATA區(qū)段了。其主要為了解決這種需求的。
主要功能:把標(biāo)簽的內(nèi)容當(dāng)然普通文本內(nèi)容。
語法如下:<![CDATA[內(nèi)容]]>
代碼我也就直接引用上面的代碼好啦。
<class>
<person>
<id>DB101</id>
<name>德邦總管-趙信</name>
<time>2015年9月29日 01:07:23</time>
<sex>男</sex>
<msg>陷陣之志,有死無生!</msg>
<!--這里是CDATA區(qū)間-->
<data><![CDATA[【德瑪西亞學(xué)院】 -- <三年級學(xué)生> ]]></data>
</person>
</class>
好啦,就說到這吧?又學(xué)了多少了呢? 下章就來教大家怎么做一個簡單的RSS(簡易供稿),以及詳解DTD約束。