当前位置: 首页 > 网络学院 > XML相关教程 > DTD > DTD - 元素和属性

DTD
DTD - 介绍
DTD - XML 基本组件群
DTD - 元素
DTD - 属性
DTD - 实体
DTD - 校验
DTD - 案例
DTD - 摘要
DTD - 元素和属性

DTD - 元素和属性


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-03-01   浏览: 590 ::
收藏到网摘: n/a

In XML, there are no rules about when to use attributes, and when to use child elements.
在XML中,对于何时使用属性或是何时使用子元素并没有什么特定的规则。


Use of Elements vs. Attributes
元素和属性的使用

Data can be stored in child elements or in attributes.
数据可以被存储在子元素或属性中。

Take a look at these examples:
看看下面这个案例:

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

</person>

 

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

<lastname>Smith</lastname>
</person>

In the first example sex is an attribute. In the last, sex is a child element. Both examples provide the same information.
在第一个案例中,sex [ 性别 ] 是一个属性。在最后一个案例中,sex [ 性别 ] 是一个子元素。两个案例都提供了相同的信息。

There are no rules about when to use attributes, and when to use child elements. My experience is that attributes are handy in HTML, but in XML you should try to avoid them. Use child elements if the information feels like data.
对于何时使用属性或是何时使用子元素并没有什么特定的规则。我的经验是:属性是在HTML内处理的,但是,你必须避免在XML中使用它们。如果是数据信息,那么可以使用子元素。


My Favorite Way
我最喜欢的方式

I like to store data in child elements.
我喜欢在子元素中存储数据。

The following three XML documents contain exactly the same information:
下述三个XML文档精确地包含了相同的信息:

A date attribute is used in the first example:
第一个案例中使用了“date [ 日期 ] 属性”:

<note date="12/11/2002">
<to>Tove</to>

<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

A date element is used in the second example:
第一个案例中使用了“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>

An expanded date element is used in the third: (THIS IS MY FAVORITE):
第一个案例中使用了“扩展 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>

 


Avoid using attributes?
避免使用属性?

Should you avoid using attributes?
你是否应该避免使用属性呢?

Some of the problems with attributes are:
使用属性会出现下列问题:

  • attributes cannot contain multiple values (child elements can)
    属性不能包含多值(然而,子元素可以包含多值)
  • attributes are not easily expandable (for future changes)
    属性不易扩展(对将来的修改并不方便)
  • attributes cannot describe structures (child elements can)
    属性不能描述结构(然而,子元素可以描述结构)
  • attributes are more difficult to manipulate by program code
    属性更不容易被程序代码操作
  • attribute values are not easy to test against a DTD
    属性值不容易被DTD测试

If you use attributes as containers for data, you end up with documents that are difficult to read and maintain. Try to use elements to describe data. Use attributes only to provide information that is not relevant to the data.
如果你将属性定为数据容器,那么最终的结果是:所有的文档都会变得难以阅读及难以维护。所以,最好尝试使用元素来描述数据,仅使用属性来提供与指定的数据毫不相关的信息。

Don't end up like this (this is not how XML should be used):
不要出现下述局面(这并不是说明XML的用法):

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"

body="Don't forget me this weekend!">
</note>

 


An Exception to my Attribute Rule
我所定义的属性规则例外

Rules always have exceptions.
这项规则通常会有例外。

My rule about attributes has one exception:
我所定义的属性规则包含一个例外:

Sometimes I assign ID references to elements. These ID references can be used to access XML elements in much the same way as the NAME or ID attributes in HTML. This example demonstrates this:
有时,我为元素指定一个ID参数。这些ID参数可以用于访问XML元素,这与HTML中的“NAME [ 名称 ]” 或 “ID 属性”的访问方式差不多。请看下述案例:

<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>

The ID in these examples is just a counter, or a unique identifier, to identify the different notes in the XML file, and not a part of the note data.
这些案例中的ID属性仅是一个计数器,或者是一个独立的检验器,用于检验XML文件中不同的“note”,而不是检验“note”数据的一部分。

What I am trying to say here is that metadata (data about data) should be stored as attributes, and that data itself should be stored as elements.
我想说的是,这里指出的“metadata [ 元数据:与数据相关的数据 ]”应该以属性的方式存储,并且,数据本身应该以元素的方式存储。

评论 (0) All

登陆 | 还没注册?