《XML那些事...》 XML中的元素、屬性、命名空間

《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約束

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容