XML中 元素和属性比较

news/2024/7/3 2:33:22
在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>
</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是只是一个计数器,或一个唯一的标识符,来识别不同的音符,而不是作为数据的一部分。

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

 


http://lihuaxi.xjx100.cn/news/282197.html

相关文章

开源机器学习库清单

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达最近我们发现了一些非常有趣的开源机器学习库并把它们列成了一个清单&#xff0c;今天就一起来分享以下吧。01.DeOldify这个开源项目主要是将灰度图像转换成色彩图像&…

php linux脚本文件,Unix/Linux中如何直接执行PHP脚本文件?

使用Linux系统的服务器都有搭建完整的PHP环境&#xff0c;因此有些用户会用PHP去写一些执行自动化任务的脚本&#xff0c;可是发现每次执行PHP脚本都需要使用php myscript.php的方式&#xff0c;感觉有点麻烦。其实我们是可以直接执行PHP脚本文件的&#xff0c;但是具体该怎么操…

从0到1 | 手把手教你如何使用哈工大NLP工具——PyLTP!

作者 | 杨秀璋来源 | CSDN 博客&#xff08;CSDN id&#xff1a;Eastmount&#xff09;&#xff08;本文经作者授权&#xff0c;此系列文章整理后微信平台首发于AI科技大本营&#xff09;【导语】此文是作者基于 Python 构建知识图谱的系列实践教程&#xff0c;具有一定创新性和…

转载:用 Tomcat 和 Eclipse 开发 Web 应用程序

原文地址:http://www.ibm.com/developerworks/cn/opensource/os-eclipse-tomcat/所需的组件 Eclipse V3.2 Callisto 集成开发环境 (IDE) 包括了用于 Web 开发及与服务器集成的工具。所以&#xff0c;除了软件开发工具箱 (SDK) 之外&#xff0c;只需安装 Eclipse 和 Apache Tomc…

因为没有数学,就没有现在的计算机科学。所以,请务必学好数学!

数学在计算机科学中的重要性数学是一门工具性很强的科学&#xff0c;它与别的科学比较起来还具有较高的抽象性等特征。起初是计算机科学工作者离不开数学&#xff0c;而数学工作者认为计算机对他们可有可无&#xff0c;但是现在是互相都离不开对方了&#xff0c;计算机也提高了…

我们一起来玩转 Grep 指令

grep这个linux指令大家一定不陌生&#xff0c;其用于查找文件中符合条件的字符串&#xff0c;下面来看看这个高频的指令如何使用。在一个阳光明媚、晴空万里的中午&#xff0c;一个挠头的程序员正在与团队一姐排查超时问题&#xff0c;只见一姐手速极快的查找着一个又一个日志&…

MySQL数据库-错误1166 - Incorrect column name 'xxx' 的解决方法

在用Navicat for MySQL给MySQL数据库修改表的字段时报如下的错误&#xff1a; 解决方法&#xff1a;检查字段里面是不是有空格&#xff0c;去掉就可以了。转载于:https://www.cnblogs.com/shuiyelifang/p/6524969.html

基于OpenCV的位姿估计

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达今天我们的目标是找出我们相对于球场上的位置&#xff0c;从而了解我们在比赛中的全局位置。01.什么是单应性单应性是一种平面关系&#xff0c;可将点从一个平面转换为另一…