构建XML,属性或节点?

时间:2012-02-25 23:11:08

标签: xml

  

可能重复:
  XML attribute vs XML element

我正在创建一个包含电影院的XML文档。我需要一种方法来表示某个电影院的设施,但不确定如何构建它。

我应该将每个设施作为节点吗?并且该节点内的文本可以是1或0(true为false)?或者将每个设施作为属性或“设施”节点更好?

属性:

<cinema id="1">
    ...
    <facilities advance_screenings="1" concessions="0" ... >1<facilities>
</cinema>

节点:

<facilities>
    <advance_screenings>1</advance_screenings>
    <audio_description>1</audio_description>
    <bar>1</bar>
    <concessions>1</concessions>
    ...
</facilities>

感谢。

3 个答案:

答案 0 :(得分:2)

这在很大程度上取决于偏好/风格。

然而 - 有一些经验法则

  • 非基本类型必须是元素(您使用的是术语“节点”)。您不能拥有表示复杂类型的属性 - 尽管您可以进行一些模式匹配。

  • 单个元素上的1000个属性可能不是一个很好的设计 - 力求人类的可读性。

  • 作为上述观点的必然结果,避免将1000个元素作为单个元素的直接后代。 (在逻辑结构中嵌套/分组元素)。

对于“好结构”与“坏结构”的某种感觉是一种复杂的判断,它考虑了很多因素 - 例如使用数据的行业/背景,以及它代表了。它类似于类设计,或者可能更接近数据库设计。有时,黑客工作不会产生任何差异 - 其他时候语义精确度至关重要。

你只能通过经验很好地掌握它。

答案 1 :(得分:1)

XML的美丽/痛苦的一部分是这些决定完全取决于你。

属性通常是不言自明的 - 它们通常描述元素的某些属性。子节点更多是父节点包含的子数据类型。

但所有这些都是主观的,而且确实没有正确答案 - 这完全是你想要如何构建文档。

答案 2 :(得分:0)

在这种情况下,它们应该是子元素。把它放在MVC 术语,属性应保存有关视图的信息,子元素应保存有关模型的信息。