********** 以下内容摘录自w3cshool **********
例子:
<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 属性?
因使用属性而引起的一些问题:
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展(为未来的变化)
- 属性难以阅读和维护
应使用元素还是属性?
元素用于封装数据,而属性通常用于提供有关元素的伴随信息,而不是封装原始数据本身。实际使用元素还是属性取决于应用程序的需要。
当您的信息需要简单类型的数据并且存在以下情况时,请使用属性:
-
信息需要默认值或固定值。
-
信息需要的数据是现有元素的元数据
-
如果 XML 文件的大小很重要,那么属性所需的字节数往往比元素要少
下面的列表从架构角度描述元素和属性之间的主要差异:
-
架构可以定义元素的排序是否有效,但属性可以任意顺序出现。
-
元素可以用 <choice> 标记嵌套,这意味着列出的元素中有一个且仅有一个可以显示。
-
元素可以出现不止一次,但属性不能。