XML 属性

XML 元素可以有属性,和 HTML 标签的属性一样

属性(Attribute)提供有关元素的额外信息

XML 属性

HTML 中的 属性提供有关元素的额外信息:

<img src="path_to_image.gif"><a href="link_url.html">

属性通常提供不属于数据组成部分的信息

下面的范例,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要

<file type="gif">computer.gif</file>

XML 属性值必须加引号

属性值必须被引号包围,既可以使用单引号,也可以使用双引号

比如一个人的性别,person 元素可以这样写

<person sex="female">

或者这样

<person sex='female'>

如果属性值本身包含双引号,可以使用单引号

<gangster name='George "Shotgun" Ziegler'>

或者使用字符实体

<gangster name="George &quot;Shotgun&quot; Ziegler">

XML 元素 vs. 属性

先来看两个 XML 文档

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

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

sex 是一个属性 sex 是一个元素

这两个范例都提供相同的信息

XML 推荐标准 没有什么规定可以告诉我们什么时候该使用属性,而什么时候该使用元素

但我们的实战经验是

  1. HTML 中,属性用起来很便利
  2. XML 中,应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用元素吧

我最喜欢的方式

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

写情书的日期应该是最重要的,因为日思夜想,所谓属性,它只是标识情书的日期而已

这个使用了 date 属性

<note date="2017-10-18">
  <to>小明</to>
  <from>小红</from>
  <heading>短信</heading>
  <body>I miss you so much</body>
</note>

这个使用了 date 元素 (这是我的最爱)

<note>
  <date>2017-10-18</date>
  <to>小明</to>
  <from>小红</from>
  <heading>短信</heading>
  <body>I miss you so much</body>
</note>

这个使用了扩展的 date 元素

太臃肿了

<note>
  <date>
      <day>18</day>
      <month>10</month>
      <year>2017</year>
  </date>
  <to>小明</to>
  <from>小红</from>
  <heading>短信</heading>
  <body>I miss you so much</body>
</note>

避免 XML 属性?

使用属性可能会引起的一些问题:

  1. 属性不能包含多个值(元素可以)
  2. 属性不能包含树结构(元素可以)
  3. 属性不容易扩展(为未来的变化)

属性难以阅读和维护

请尽量使用元素来描述数据,而仅仅使用属性来提供与数据无关的信息。

记住,千万不要做这样的蠢事 (这不是 XML 应该被使用的方式 )

<note day="18" month="10" year="2017">
  <to>小明</to>
  <from>小红</from>
  <heading>短信</heading>
  <body>I miss you so much</body>
</note>

针对元数据的 XML 属性

有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 id 属性是一样的

比如

<message>
    <note id="520">
      <date>2017-10-18</date>
      <to>小明</to>
      <from>小红</from>
      <heading>短信</heading>
      <body>I miss you so much</body>
    </note>
    <note id="512">
      <date>2017-10-17</date>
      <to>小明</to>
      <from>小红</from>
      <heading>短信</heading>
      <body>I miss you today</body>
    </note>
</message>

上面的 id 属性仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分

标签 VS 属性最佳实战

元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.