XML指南——XML 属性

跟HTML一样,XML元素再开始标记处可以由元素属性。
属性通常包含一些关于元素的额外信息。

XML属性
XML元素可以拥有属性。
你一定还记得这样的HTML代码吧: <IMG SRC="computer.gif">。src是img元素的属性,提供了关于img元素的额外信息。
在HTML中 (在XML中也一样)元素的属性提供了元素的额外信息。
<img src="computer.gif">
<a href="demo.asp">

书信提供的信息通常不是数据的一部分。在下面的例子中,类型和数据毫不相关,但对于操作这个元素的软件来说却相当重要。
<file type="gif">computer.gif</file>

引用风格"female" 还是 'female'?
属性值必须用引号引着。单引号、双引号都可以使用。例如一个人的性别,person元素可以这样写:
<person sex="female">

也可以这样写: 
<person sex='female'>

上面的两种写法在一般情况下是没有区别的,使用双引号的应用更普遍一些。但是在某些特殊的情况下就必须使用单引号,比如下面的例子:
<gangster name='George "Shotgun" Ziegler'>

使用子元素还是使用属性
数据既可以存储在子元素中也可以存储在属性中。
请看下面的例子:
<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文档包含了相同的信息:
第一个例子使用了data属性:
<note date="12/11/99">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

第二个例子使用了data元素:
<note>
<date>12/11/99</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

第三个例子使用了扩展的data元素: (这就是我推荐的样式):
<note>
<date>
<day>12</day>
<month>11</month>
<year>99</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

避免使用属性?
应该避免使用属性么?
这里有一些使用属性引发的问题: 
属性不能包含多个值(子元素可以)。 
属性不容易扩展。 
属性不能够描述结构(子元素可以)。 
属性很难被程序代码处理。 
属性值很难通过DTD进行测试。 
如果使用属性来存储数据,那么所编写的XML文档一定很难阅读和操作。尽量使用元素来描述数据,仅使用属性来描述那些与数据关系不大的额外信息。
不要象下面的例子那样(如果你那么做了说明你还没有明白上面的观点)。
<note day="12" month="11" year="99"
to="Tove" from="Jani" heading="Reminder" 
body="Don't forget me this weekend!">
</note>

属性规则的例外
规则总是有例外的。
我的关于属性的规则也有一个例外:
有些时候应该为一个元素设计一个ID引用,通过这个ID可以引用存取特定的XML元素,就象HTML中的name和id属性一样。请看下面的例子:
<messages>
<note ID="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note ID="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note> 
</messages>

在上面的例子中,ID属性就相当于一个计数器,或者是一个唯一的标识符,在XML文档中标识不同的便条信息,他不是便条信息的一部分。
我们所要尽力向读者说明的是:元数据(与数据有关的数据)应该以属性的方式存储,而数据本身应该以元素的形式存储。

(0)

相关推荐

  • XML指南——XML元素

    XML元素是可以扩展的,它们之间有关联. XML元素有简单的命名规则. XML元素是可以扩展的 XML文档可以被扩展一边携带更多的信息. 请看下面的XML便条例子: <note> <to>Lin</to> <from>Ordm</from> <body>Don't forget me this weekend!</body> </note> 让我们来设想一个能够读取此XML文档的并能解读其中XML元素(<

  • XML指南——XML数据岛

    使用IE5.0或者更高的版本,XML数据可以以数据岛的形式嵌入HTML页面.  在HTML页面中嵌入XML数据  使用非官方标准的<xml>标记可以将XML数据嵌入到HTML页面中.  XML数据可以象下面的例子那样嵌入HTML页面:  <xml id="note">    <note>    <to>Tove</to>    <from>Jani</from>    <heading>Re

  • XML指南——XML 确认

    符合语法的XML文档称为结构良好的XML文档. 通过DTD验证的XML文档称为有效的XML文档. "结构良好的" XML文档 一个结构良好的XML文档应该使用正确的语法. 一个结构良好的XML文档应该遵守XML语法规则,前面一章给出的例子就是一个结构良好的XML文档: <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> &

  • XML指南——XML 语法

    XML的语法规则既简单又严格,非常容易学习和使用. 正因为如此,编写读取和操作XML的软件也是相对容易的事情. 一个XML文档的例子 XML文档使用了自描述的和简单的语法. <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Lin</to> <from>Ordm</from> <heading>Reminder</he

  • XML指南——XML 浏览器(Netscape、Explorer)

    在我们这个XML指南里,我们把焦点放在Internet Explorer 5.0及其以后的版本上. Web站点上的XML 许多应用程序都支持XML.我们主要研究Internet Explorer 5.X+ 对此有些人可能会抱怨,但是我们只想把事情简单化,在网络环境中这时我们所知道的唯一一个真实测试XML例子的方法. XML Netscape 6 Netscape 6 支持 XML. 在Netscape 6中察看XML源文件可以在页面上点鼠标右键,然后选择"察看源文件". XML Int

  • XML指南——XML 属性

    跟HTML一样,XML元素再开始标记处可以由元素属性. 属性通常包含一些关于元素的额外信息. XML属性 XML元素可以拥有属性. 你一定还记得这样的HTML代码吧: <IMG SRC="computer.gif">.src是img元素的属性,提供了关于img元素的额外信息. 在HTML中 (在XML中也一样)元素的属性提供了元素的额外信息. <img src="computer.gif"> <a href="demo.asp

  • XML指南——XML编码

    XML文档可以包含外文字符比如挪威语或者法语(中文当然也可以!这一部分还是不能照原文翻译,下面有些内容是我自己写的) 为了让你的解析器能够明白这些字符,你必须在XML文档中统一的字符编码标准. Windows 95/98 记事本 Windows 95/98 记事本不能以Unicode的编码格式保存文件. 可以使用记事本来编辑和保存包含了外文字符的XML文档 (比如:挪威语或者法语或者中文) <?xml version="1.0"?> <note> <fro

  • XML指南——XML CDATA

    在XML文档中的所有文本都会被解析器解析. 只有在CDATA部件之内的文本会被解析器忽略. -------------------------------------------------------------------------------- 解析数据 XML 解析器通常情况下会处理XML文档中的所有文本. 当XML元素被解析的时候,XML元素内部的文本也会被解析: <message>This text is also parsed</message> XML解析器这样做

  • php操作xml入门之xml标签的属性分析

    本文实例讲述了php操作xml入门之xml标签的属性.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <class>  <student id="No001" haha="美女">   <name>小乔</name>   &

  • jQuery实现遍历XML节点和属性的方法示例

    本文实例讲述了jQuery实现遍历XML节点和属性的方法.分享给大家供大家参考,具体如下: 用jquery遍历xml网上已经有很多, 但是看了好多文章, 对于不指定属性名称的遍历方法却没有 研究了一下, 好像jquery没有attributes. 还是要借助于原生态的JS 以下是JS代码 <script type="text/javascript" src="js/jquery.min.js"></script> <div id=&qu

随机推荐