屬性 (Attribute) 提供關於元素的額外資訊。
XML屬性
從HTML,你會回想起這個:。 "src" 屬性提供有關元素的額外資訊。
在HTML中(以及在XML中),屬性提供有關元素的額外資訊:
<img src="computer.gif"> <a href="demo.asp">
屬性通常提供不屬於資料組成部分的資訊。在下面的例子中,檔案類型與資料無關,但是對需要處理這個元素的軟體來說卻很重要:
<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">Anna Smith female Anna Smith
在第一個例子中,sex 是一個屬性。在第二個例子中,sex 則是一個子元素。兩個例子均可提供相同的資訊。
沒有什麼規矩可以告訴我們什麼時候該使用屬性,而什麼時候該使用子元素。我的經驗是在HTML中,屬性使用起來很便利,但在XML中,您應該盡量避免使用屬性。如果資訊感覺起來很像數據,那麼請使用子元素吧。
我最喜歡的方式
下面的三個XML文件包含完全相同的資訊:
第一個範例中使用了date 屬性:
<note date="08/08/2008"> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting this weekend!</body> </note>
第二個範例中使用了date 元素:
<note> <date>08/08/2008</date> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting this weekend!</body> </note>
第三個範例中使用了擴充的date 元素(這是我的最愛):
<note> <date> <day>08</day> <month>08</month> <year>2008</year> </date> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting this weekend!</body> </note>
避免XML屬性?
因使用屬性而引起的一些問題:
屬性無法包含多個值(子元素可以)
屬性無法描述樹狀結構(子元素可以)
屬性不易擴展(為未來的變化)
屬性難以閱讀和維護
請盡量使用元素來描述資料。而僅使用屬性來提供與資料無關的資訊。
不要做這樣的蠢事(這不是XML應該被使用的方式):
<note day="08" month="08" year="2008" to="George" from="John" heading="Reminder" body="Don't forget the meeting this weekend!"> </note>
針對元資料的XML屬性
有時候會指派 ID 參考元素。這些 ID 索引可用來識別XML元素,它運作的方式與HTML中 ID 屬性是一樣的。這個例子向我們演示了這種情況:
<messages> <note id="501"> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting this weekend!</body> </note> <note id="502"> <to>John</to> <from>George</from> <heading>Re: Reminder</heading> <body>I will not</body> </note> </messages>
上面的 ID 只是一個標識符,用於標識不同的便簽。它並不是便籤資料的組成部分。
在此我們極力向您傳遞的理念是:元資料(有關資料的資料)應儲存為屬性,而資料本身應儲存為元素。
以上是XML開發基礎-XML屬性的程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!