前几次我们曾经谈到过属性的问题。事实上,对它们使用不当或者不一致是很让人恼火的。因此,弄清属性的定义以及为什么要使用它们是非常重要的。
XML是一种标记语言,理解这一点,你就会知道任何数据都是被包含在标记符里的。换句话说,在你设定标记符的时候,里面的内容就应经被定义了。比如:
<FirstName>Joe</FirstName>
Joe在这里是数据,很显然你一看就知道Joe是一个姓氏(从标记就可以看出)。但是,如果你把标记写成下面的样子会如何呢。
<FirstName value="Joe"/>
这仍然是一个有效的XML写法,因为XML的语法允许这样写。但是,它看起来有些怪异,也很让人费解。再来看看下面的例子:
<Name type="first"value="Joe" />
你仍然可以看出Joe是个姓氏。但是,跟第一个例子比较,它既不一目了然也很麻烦。这就说明,应该由标记来决定你的数据。你应该保留有关内容的属性信息。下面是一个将属性位置放置不恰当的典型例子:
<Address>
<Type>Billing</Type>
<Street>900 N. Michigan Ave.</Street>
<City>Chicago</City>
<State>IL</State>
<Zip>60612</Zip>
</Address>
在这个例子中,<Type>标记并不是地址的一部分,它只是地址的一个特性。所以,与其作为一个元素,还不如作为<Address>的属性。就象这样:
<Address type="billing">
<Street>900 N. Michigan Ave.</Street>
<City>Chicago</City>
<State>IL</State>
<Zip>60612</Zip>
</Address>
这样,在描述地址的相关数据时,<Address>元素就可以同它的子元素保持一致。