XML 屬性
XML 元素可以擁有屬性,就像 HTML 一樣。
屬性用於包含與特定元素相關的資料。
XML 屬性必須加引號
屬性值必須始終加引號。可以使用單引號或雙引號。
對於一個人的性別,<person> 元素可以這樣寫
<person gender="female">
或者這樣
<person gender='female'>
如果屬性值本身包含雙引號,則可以使用單引號,如下例所示
<gangster name='George "Shotgun" Ziegler'>
或者你可以使用字元實體
<gangster name="George "Shotgun" Ziegler">
XML 元素與屬性
看看這兩個例子
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
在第一個例子中,gender 是一個屬性。在最後一個例子中,gender 是一個元素。兩個例子都提供了相同的資訊。
在 XML 中,關於何時使用屬性或何時使用元素的規則並不存在。
我最喜歡的方式
以下三個 XML 文件包含完全相同的資訊
第一個例子中使用了日期屬性
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
第二個例子中使用了 <date> 元素
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
第三個例子中使用了展開的 <date> 元素: (這是我的最愛)
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
避免使用 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 屬性用於標識不同的筆記。它不是筆記本身的一部分。
我想說的是,元資料(關於資料的資料)應該儲存為屬性,而資料本身應該儲存為元素。