XML技術手冊login
XML技術手冊
作者:php.cn  更新時間:2022-04-14 15:57:53

XML 屬性



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

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


XML 屬性

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

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

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

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


XML 屬性必須加引號

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

<person sex="female">

或這樣也可以:

<person sex='female'>

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

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

或您可以使用字元實體:

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


XML 元素vs. 屬性

請看這些實例:

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

<person>
   <sex>female</sex>
   <firstname>Anna</firstname>
   <lastname>Smith</lastname>
</person>
#

在第一個實例中,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>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
# <body>Don't forget me this weekend!</body>
</note>

第三個實例中使用了擴展的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 屬性?

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

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

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

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

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

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

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

#

針對元資料的 XML 屬性

有時候會分配 ID 到元素。這些 ID 索引可用於識別 XML 元素,它運作的方式與 HTML 中 id 屬性是一樣的。這個實例向我們示範了這個情況:

<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 屬性只是標識符,用來識別不同的便條。它並不是便籤資料的組成部分。

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