可以將數據存儲在子元素中或屬性中。看看下面這些例子:
< 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中要盡量避免使用屬性。如果信息象數據,就使用子元素。
我喜歡的方式
我喜歡將數據存儲在子元素中。下面的3個XML文檔所包含的信息完全相同:
第一個例子中使用了一個date屬性:
< note date="12/11/99">
< to>Tove< /to>
< from>Jani< /from>
< heading>Reminder< /heading>
< body>Don't forget me this weekend!< /body>
< /note>
第二個例子中使用了一個date 元素:
< note>
< date>12/11/99< /date>
< to>Tove< /to>
< from>Jani< /from>
< heading>Reminder< /heading>
< body>Don't forget me this weekend!< /body>
< /note>
在第三個中使用了一個擴充的date元素(這是我最喜歡的方法):
< note>
< date>
< day>12< /day>
< month>11< /month>
< year>99< /year>
< /date>
< to>Tove< /to>
< from>Jani< /from>
< heading>Reminder< /heading>
< body>Don't forget me this weekend!< /body>
< /note>
要避免使用屬性嗎?
你是否應該避免使用屬性呢? 以下是使用屬性帶來的幾個問題:
屬性不能包含多個值 (而子元素可以)
屬性不容易被擴充(為將來的修改)
屬性不能描述結構(而子元素可以)
屬性更難被程序代碼所操作
屬性值不容易進行DTD測試
如果你將屬性作為一個數據的容器使用,那麼最終的結果是,文檔將難以閱讀和維護。你應該盡量用元素去描述數據。只在提供與數據無關的信息時才使用屬性。
不要這樣結尾( 如果你認為這樣就是 XML, 那麼你還沒有真正理解要點):
< note day="12" month="11" year="99"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
< /note>