对XML中的元素和属性感到困惑

时间:2012-05-07 11:23:38

标签: xml

我最近开始学习XML,并且对元素和属性的使用非常困惑。我已经阅读了很多文章和一些经验法则,但仍然无法清楚地了解何时使用什么。例如,一个好的经验法则是使用单值数据作为属性,将多值数据用作元素。另一个将数据表示为元素,将元数据表示为属性。一些文章说了几个其他的方法或规则。我有几个问题,如果有人能帮助我理解,我将非常感激

  1. 如果数据是单值的怎么办?我应该将它作为属性还是元素。例如。一个人的婚姻状况在其数据的同时是单一的。在这种情况下,属性和元素会有什么不同?

  2. 例如,出生日期也是单值数据,但许多论坛建议为日月和年制作单独的元素,有些建议将出生日期元素和日年和月份作为其属性。有什么区别两种方法有何帮助?

  3. 什么对搜索操作更有用?如何?如果我想以这样一种方式设计它,那么它对于搜索我应该做什么更有用和更有效。例如,出生日期的元素或属性将对搜索操作产生什么差异。如果我想搜索1980年出生的人或等等等等。

3 个答案:

答案 0 :(得分:2)

首先,您需要了解没有正确的答案。在许多情况下,它没什么区别。当一个选择产生很小的差异时,不值得在决策上花费太多时间,因为错误的惩罚并不高。

如果采用以下策略,你不会走得太远:

(a)在面向文档的XML中,将用户可见的运行文本放在元素中,以及不是普通用户可以在属性中查看(“元数据”)的注释。

(b)在面向数据的XML中,使用所有内容的元素,ID属性可能除外。

答案 1 :(得分:0)

如果你是程序员,你会更好地理解这一点 虽然属性和元素是可以互换的 当我创建一个XML结构时,我试着把它想象成一类编程语言,比如c#
因此,对于所有Fields i make属性和所有Propertiese i make元素 所以具有以下结构的类

class SomeClass

    {
    int a;
    int b{get; set;}
    }

将由我改为

<xml>
<object a="some value"><b>"some value"</b></object>
</xml>

答案 2 :(得分:0)

我认为对于如何使用两者有很多不同的解释,我一直试图弄清楚它们。这是我个人的观点:

  • 属性是可用于使标签“更丰富”的标签内信息,我认为就好像我必须引用特定的html标签来应用某种样式或行为,例如我会查找属性为lang =“ita”的所有标签并向其添加“翻译此”功能,或者我可以查找属性为sex =“female”的所有标签并将其渲染为粉红色......这一点是读者可以告诉一个文本是英文与否,或者Sarah是男性还是女性,但是你想“让解析器也知道”并且你可以通过属性x而不是通过xpath标记(选择标记)内在价值。

  • 其他一切都是元素。