XML 屬性

2021-12-01 16:14 更新

XML 屬性

本節(jié)將向你講解 XML 的屬性,它包含在 XML 元素中,一個 XML 元素可以有多個屬性。
本章介紹有關(guān)XML屬性。屬性是XML元素的一部分。一個元素可以有多個獨(dú)特的屬性。屬性提供了有關(guān)XML元素的詳細(xì)信息 XML屬性始終是一個名稱 值對

XML元素具有屬性,類似 HTML。

屬性(Attribute)提供有關(guān)元素的額外信息。


XML 屬性

在 HTML 中,屬性提供有關(guān)元素的額外信息:

<img src="computer.gif">
<a href="demo.html">

屬性通常提供不屬于數(shù)據(jù)組成部分的信息。在下面的實(shí)例中,文件類型與數(shù)據(jù)無關(guān),但是對需要處理這個元素的軟件來說卻很重要:

<file type="gif">computer.gif</file>


XML 屬性必須加引號

屬性值必須被引號包圍,不過單引號和雙引號均可使用。比如一個人的性別,person 元素可以這樣寫:

<person sex="female">

或者這樣也可以:

<person sex='female'>

如果屬性值本身包含雙引號,您可以使用單引號,就像這個實(shí)例:

<gangster name='George "Shotgun" Ziegler'>

或者您可以使用字符實(shí)體:

<gangster name="George "Shotgun" Ziegler">


XML 元素 vs. 屬性

請看這些實(shí)例:

<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person> 
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

在第一個實(shí)例中,sex 是一個屬性。在第二個實(shí)例中,sex 是一個元素。這兩個實(shí)例都提供相同的信息。

沒有什么規(guī)矩可以告訴我們什么時候該使用屬性,而什么時候該使用元素。我的經(jīng)驗(yàn)是在 HTML 中,屬性用起來很便利,但是在 XML 中,您應(yīng)該盡量避免使用屬性。如果信息感覺起來很像數(shù)據(jù),那么請使用元素吧。


我最喜歡的方式

下面的三個 XML 文檔包含完全相同的信息:

第一個實(shí)例中使用了 date 屬性:

<note date="10/01/2008">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

第二個實(shí)例中使用了 date 元素:

<note>
<date>10/01/2008</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

第三個實(shí)例中使用了擴(kuò)展的 date 元素(這是我的最愛):

<note>
<date>
<day>10</day>
<month>01</month>
<year>2008</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>


避免 XML 屬性?

因使用屬性而引起的一些問題:

  • 屬性不能包含多個值(元素可以)
  • 屬性不能包含樹結(jié)構(gòu)(元素可以)
  • 屬性不容易擴(kuò)展(為未來的變化)

屬性難以閱讀和維護(hù)。請盡量使用元素來描述數(shù)據(jù)。而僅僅使用屬性來提供與數(shù)據(jù)無關(guān)的信息。

不要做這樣的蠢事(這不是 XML 應(yīng)該被使用的方式):

<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>


針對元數(shù)據(jù)的 XML 屬性

有時候會向元素分配 ID 引用。這些 ID 索引可用于標(biāo)識 XML 元素,它起作用的方式與 HTML 中 id 屬性是一樣的。這個實(shí)例向我們演示了這種情況:

<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>

上面的 id 屬性僅僅是一個標(biāo)識符,用于標(biāo)識不同的便簽。它并不是便簽數(shù)據(jù)的組成部分。

在此我們極力向您傳遞的理念是:元數(shù)據(jù)(有關(guān)數(shù)據(jù)的數(shù)據(jù))應(yīng)當(dāng)存儲為屬性,而數(shù)據(jù)本身應(yīng)當(dāng)存儲為元素。

以下是總結(jié)性的 XML 屬性需要遵循的規(guī)則:

  • 屬性名稱不能在同一起始標(biāo)簽或空元素標(biāo)簽中出現(xiàn)一次
  • 一個屬性必須使用屬性表聲明的文檔類型定義(DTD)的聲明
  • 屬性值不能包含直接或間接的實(shí)體引用外部實(shí)體
  • 任何實(shí)體的替換文本稱為直接或間接的屬性值中不能包含任何小于號
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號