1

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

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

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

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

4

3 回答 3

2

首先,您需要了解没有正确答案。在许多情况下,它几乎没有什么区别。当一个选择影响很小时,不值得花太多时间在决定上,因为做错的惩罚并不高。

如果您采用以下策略,您将不会出错:

(a) 在面向文档的 XML 中,将用户可见的运行文本放入元素中,并将普通用户无法看到的注释(“元数据”)放入属性中。

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

于 2012-05-07T13:39:58.110 回答
0

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

  • 属性是标签内信息,您可以使用它来使标签“更丰富”,我认为就好像我必须引用特定的 html 标签来应用它某种样式或行为,所以例如我会寻找所有带有属性 lang = "ita" 的标签并粘贴一个“翻译这个”功能给它们,或者我可以查找所有带有属性 sex="female" 的标签并将它们渲染成粉红色......关键是读者可以判断文本是不是英语,或者莎拉是男性还是女性,但是您想“让解析器也知道这一点”,并且您可以通过属性而不是内部值更好地 xpath 标记(选择标记)。

  • 其他一切都是元素。

于 2012-05-07T12:18:00.763 回答
0

如果您是程序员
,尽管属性和元素是可以互换的,但您会更好地理解这一点。
每当我创建一个 XML 结构时,我都会尝试将其作为某种编程语言的一个类来计算,比如说 c#
,所以对于所有Fields我制作的属性和所有Propertiese我制作的元素,所以一个具有以下结构的类

class SomeClass

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

会被我改成

<xml>
<object a="some value"><b>"some value"</b></object>
</xml>
于 2012-05-07T11:47:23.850 回答