與HTML類似,XML元素也可以在開始標簽中包含屬性。
屬性被用于提供關于元素的附加信息。
XML元素可擁有屬性。
回憶一下HTML的這個標簽:<IMG SRC="computer.gif">。SRC屬性提供了關于img元素的附加信息。
在HTML(以及XML)中,屬性可提供有關元素的附加(額外的)信息:
<img src="computer.gif"><a href="demo.asp">
屬性常常會提供并非數據組成部分的信息。在下面的例子中,文件的類型和數據是無關的,但是對需要處理這個元素的軟件來說卻很重要:
<file type="gif">computer.gif</file>
屬性值必須被引號所包圍,不過單引號和雙引號均可使用。比如某人的性別,person標簽可以這樣寫:
<person sex="female">
或者這樣也可以:
<person sex='female'>
注釋:如果屬性值本身包含雙引號,那么有必要使用單引號包圍它,就像這個例子:
<gangster name='George "Shotgun" Ziegler'>
注釋:如果屬性值本身包含單引號,那么有必要使用雙引號包圍它,就像這個例子:
<gangster name="George 'Shotgun' Ziegler">
數據可被存儲于子元素之中,或者在屬性中也可以。
請看這些例子:
<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文檔:
第一個例子中使用了屬性:
<note date="12/11/2002"><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
第二個例子中使用了元素:
<note><date>12/11/2002</date><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
第三個例子中使用了擴展的元素(這是我的最愛):
<note><date> <day>12</day> <month>11</month> <year>2002</year></date><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
我們應當避免使用屬性嗎?
如果您使用屬性作為數據的容器,那么就會造就難以閱讀和維護的文檔。請盡量使用元素來描述數據。而僅僅使用屬性來提供與數據無關的信息。
不要做這樣的蠢事(這不是XML應該被使用的方式):
<note day="12" month="11" year="2002"to="Tove" from="Jani" heading="Reminder" body="Don't forget me this weekend!"></note>
規則總有例外。
有時候,我會向元素分配ID索引。這些ID索引可被用來訪問XML元素,其作用的方式與HTML中的NAME屬性或者ID屬性是一樣的。這個例子向我們演示了這種情況:
<messages> <note id="p501"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> <note id="p502"> <to>Jani</to> <from>Tove</from> <heading>Re: Reminder</heading> <body>I will not!</body> </note> </messages>
這個例子中的ID只是一個計數器,或者一個唯一的標識符,用來標示XML文件中不同的便簽,并不是便簽數據的一部分。
在此我們極力向您傳遞的理念是:元數據(有關數據的數據)應當存儲為屬性,而數據本身應當存儲為元素。
新聞熱點
疑難解答