阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

XML中 元素和属性比较

89次阅读
没有评论

共计 1675 个字符,预计需要花费 5 分钟才能阅读完成。

导读 在 XML 中,并没有规定何时使用属性,以及何时使用子元素。

XML 中 元素和属性比较

使用元素 vs. 属性

数据可以存储在子元素或属性。

让我们来看下这些实例:

<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

在第一个例子中 ”sex” 是一个属性。在后面一个例子中,”sex” 是一个子元素。但是两者都提供了相同的信息。

没有特别规定何时使用属性,以及何时使用子元素。我的经验是在 HTML 中多使用属性,但在 XML 中,使用子元素,会感觉更像数据信息。

我喜欢的方式

我喜欢在子元素中存储数据

下面的三个 XML 文档包含完全相同的信息:

本例中使用 ”date” 属性:

<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

本例中使用 ”date” 元素:

<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

本例中使用了扩展的 ”date” 元素: (这是我最喜欢的方式):

<note>
<date>
  <day>12</day>
  <month>11</month>
  <year>2002</year&gt
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
避免使用属性?

你应该避免使用属性?

一些属性具有以下问题:

  1. 属性不能包含多个值(子元素可以)
  2. 属性不容易扩展(为以后需求的变化)
  3. 属性无法描述结构(子元素可以)
  4. 属性更难以操纵程序代码
  5. 属性值是不容易测试,针对 DTD

如果您使用属性作为数据容器,最终的 XML 文档将难以阅读和维护。尝试使用元素来描述数据。只有在提供的数据是不相关信息时我们才建议使用属性。

不要这个样子结束(这不是 XML 应该使用的):

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
一个属性规则的例外

规则总是有另外的

关于属性的规则我有一个例外情况。

有时我指定的 ID 应用了元素。这些 ID 应用可在 HTML 中的很多相同的情况下可作为 NAME 或者 ID 属性来访问 XML 元素。以下实例展示了这种方式:

<messages>
  <note id="p501">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
  </note>
  <note id="p502">
    <to>Jani</to>
    <from>Tove</from>
    <heading>Re: Reminder</heading>
    <body>I will not!</body>
  </note>
</messages>

以上实例的 XML 文件中,ID 是只是一个计数器,或一个唯一的标识符,来识别不同的音符,而不是作为数据的一部分。

在这里我想说的是,元数据(关于数据的数据)应当存储为属性,而数据本身应当存储为元素。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1675字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中