天天看點

XML 屬性

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

屬性(Attribute)提供有關元素的額外資訊。

在 HTML 中,屬性提供有關元素的額外資訊:

<img src="computer.gif">

<a href="demo.html">

屬性通常提供不屬于資料組成部分的資訊。在下面的執行個體中,檔案類型與資料無關,但是對需要處理這個元素的軟體來說卻很重要:

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

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

<person sex="female">

或者這樣也可以:

<person sex='female'>

如果屬性值本身包含雙引号,您可以使用單引号,就像這個執行個體:

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

或者您可以使用字元實體:

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

請看這些執行個體:

<firstname>Anna</firstname>

<lastname>Smith</lastname>

</person>

<person>

<sex>female</sex>

在第一個執行個體中,sex 是一個屬性。在第二個執行個體中,sex 是一個元素。這兩個執行個體都提供相同的資訊。

沒有什麼規矩可以告訴我們什麼時候該使用屬性,而什麼時候該使用元素。我的經驗是在 HTML 中,屬性用起來很便利,但是在 XML 中,您應該盡量避免使用屬性。如果資訊感覺起來很像資料,那麼請使用元素吧。

下面的三個 XML 文檔包含完全相同的資訊:

第一個執行個體中使用了 date 屬性:

<note date="10/01/2008">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

第二個執行個體中使用了 date 元素:

<note>

<date>10/01/2008</date>

第三個執行個體中使用了擴充的 date 元素(這是我的最愛):

<date>

<day>10</day>

<month>01</month>

<year>2008</year>

</date>

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

屬性不能包含多個值(元素可以)

屬性不能包含樹結構(元素可以)

屬性不容易擴充(為未來的變化)

屬性難以閱讀和維護。請盡量使用元素來描述資料。而僅僅使用屬性來提供與資料無關的資訊。

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

<note day="10" month="01" year="2008"

to="Tove" from="Jani" heading="Reminder"

body="Don't forget me this weekend!">

有時候會向元素配置設定 ID 引用。這些 ID 索引可用于辨別 XML 元素,它起作用的方式與 HTML 中 id 屬性是一樣的。這個執行個體向我們示範了這種情況:

<messages>

<note id="501">

<note id="502">

<to>Jani</to>

<from>Tove</from>

<heading>Re: Reminder</heading>

<body>I will not</body>

</messages>

上面的 id 屬性僅僅是一個辨別符,用于辨別不同的便簽。它并不是便簽資料的組成部分。

在此我們極力向您傳遞的理念是:中繼資料(有關資料的資料)應當存儲為屬性,而資料本身應當存儲為元素。