2010-01-05

XML element 與 attribute 的使用時機 (元素 v.s. 屬性)

基本上 XML 的標準裡面,並沒有說明何時該用 element, 何時該用 attribute
所以,會出現一種狀況,就是資料有多種表示方式,如:
<person id="123" name="REX"></person> 或
<person id="123"><name>REX</name></person>

下列是看到的兩篇相關文章,各別有建議判斷準則:

1. w3school 中的文章 http://www.w3schools.com/DTD/dtd_el_vs_attr.asp

總而言之,建議 data 放 element, metadata 放 attribute

2. IBM Developerworks 中的文章 http://www.ibm.com/developerworks/xml/library/x-eleatt.html

提到了四類原則:

1. 核心內容原則 (priciple of core content)
屬於主要內容 用來表達所欲傳達資訊時,放在 element
屬於附帶內容或是便於application處理實際的主要內容之用途時,放在 attribute
這個原則,基本上就是 w3school 文章內提到的 data/metadata 的原則

2. 結構化資訊原則 (priciple of structured information)
當資訊必需以結構化方式表示(如, parent/child 的關係) 或結構未來可能會擴充時,使用element
當資訊用最基本方式即可表達時(atomic token),使用 attribute

3. 可讀性原則 (principle of readability)
當資訊是提供給人時,使用element
當資訊是提供給系統以利處理時,使用attribute

4. 元素/屬性繫結原則 (principle of element/attribute binding)
當資訊會因其它attribute值改變 而必然隨之改變時,使用element
(即, 避免一個attribute的變動 連帶變動另一個attribute的狀況發生, 或可說為 避免 attribute 與 attribute 間有binding的關係)

上述的四個原則,在考量採 element or attribute 時,應一併納入進行總體考量

--
以上~ 希望對各位有幫助