XML设计原则: IBM的Uche Ogbuji 何时使用元素与属性比较可能是这方面的最佳资源之一。
决定的核心是属性是“完成”的事情。您不能更改,修改或嵌套它们。它们是顺序独立的,并且在元素内是不同的(不能有两个相同的东西)。
如果这些约束中的任何约束可能会发生变化,请使数据成为XML的子节点。
在您的示例中,您有一个具有名称和年龄的人。我有名字,中间名和姓氏...还有一个昵称。有些人的姓氏是娘家姓,多个中间名或尊贵名誉-您如何将John Ronald Reuel Tolkien放入这样的结构中?
因此,我们有一个拥有两个中间名的人,这些中间名对他们有顺序。这应该清楚地表明,不,属性不是为此的最佳选择。
我目前无法找到它,但是在上面的链接文档中有一个声明,即名称是需要一些思考的事情,导致“我希望在以后的文章中扩展标记中对人名的处理”。如果有人对此有所帮助,请发表评论或将其编辑到该位置。
另一方面,年龄是具有固定结构的东西(我建议生日而不是整数)。这样,以一种众所周知的和可理解的格式表示该信息在属性中是有意义的。一个人只有一个生日,并且没有一个要保留的“命令”。
Uche Ogbuji确定了正确设计xml格式的三个核心原则。以下是上述链接文档中的缩写引号。
- 结构化信息的原理
如果信息以结构化形式表示,尤其是结构可以扩展时,请使用元素。另一方面:如果信息表示为原子标记,请使用属性
- 可读性原则
如果要由人阅读和理解信息,请使用元素。如果机器最容易理解和消化信息,请使用属性。
- 元素/属性绑定的原理
如果需要其他属性修改元素的值,请使用元素
因此,名称应该是元素-它们是不是原子标记的结构化数据,与计算机相比,它们更容易被人类读取,并且可以通过名称本身的另一个属性进行修改。
日期应该是属性-它们是原子标记的数据,与人类相比,它们更可能被计算机读取(然后在需要时转换为人类的首选格式),最后它们不太可能被其他人修改属性。