XML学习笔记(二)——XML元素与属性


XML 元素


元素命名
XML元素必须遵守以下的命名规则:
名字可包含字母、数字以及其他的字符
名字不能以数字或者标点符号开始
名字不能以字符“xml”(或者XML、Xml)开始
名字不能包含空格
当您“发明创造”元素名称时,请留意并遵循下面的简单的规则:

您可以使用除保留字外的任何名称,但是理想的做法是使名称具有描述性。使用下划线的名称也是不错的。

例子: <first_name>,<last_name>

应该在名称中避免"-"和"."。比方说,如果您将某个元素命名为"first-name",那么当您的软件试图从first段来提取名称时可能会出现混乱的局面。或者如果您将某个元素命名为"first.name",您的软件也许会认为"name"是"first"对象的一个属性。

元素名称可以是你希望的任何长度,但是也不要太夸张。名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。

XML文档经常有一个对应的数据库,其中的域会对应XML文档中的某个元素。有一个实用的经验,即使用数据库的名称规则命名XML文档中的元素。

非英语的字母比如éòá也是合法的XML元素名,不过需要注意当软件开发商不支持字母时出现的问题。

不应在XML元素名称中使用":",这是由于它是用于被称作命名空间(namespaces)的保留字。


XML元素之间是有关系的
元素之间有父与子的关系。

为了理解XML的术语,我们需要了解XML之间的关系是如何命名的,以及元素的内容是如何被描述的。

下面是一个用XML文档描述的一本书:

<book><title>我的第一个XML</title><prod id="33-657" media="paper"></prod><chapter>XML 简介<para>HTML 的概念</para><para>XML 的概念</para></chapter><chapter>XML 的语法<para>元素必须拥有关闭标签</para><para>元素必须被正确地嵌套</para></chapter></book>
book(书)是根元素。Title、prod以及chapter是book的子元素。book是Title、prod以及chapter的父元素。Title、prod以及chapter是兄弟元素或者姐妹元素,这是因为它们都拥有相同的父母。

元素拥有内容
元素可以拥有不同的内容类型。

一个XML元素由(且包括)元素的开始标签起始,到(且包括)元素的结束标签终止。

一个元素可以拥有元素内容、混合型内容、简易内容或者空内容。元素也可以拥有属性。

在上面的例子中,book拥有元素内容,因为它包含了其他的元素。chapter拥有混合型内容,因为即包含文本,也包含其他的元素。para拥有简易内容(或文本内容),因为它仅包含文本。prod拥有空内容,因为它没有携带信息。

在上面的例子中,仅有prod元素拥有属性。名为id的属性的值为"33-657"。名为medea的属性的值为"paper"。

 


XML 属性
与HTML类似,XML元素也可以在开始标签中包含属性。
属性被用于提供关于元素的附加信息。

引号类型,"female" 还是 'female'?
属性值必须被引号所包围,不过单引号和双引号均可使用。比如某人的性别,person标签可以这样写:

<person sex="female">
或者这样也可以:

<person sex='female'>
注释:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:

<gangster name='George "Shotgun" Ziegler'>
注释:如果属性值本身包含单引号,那么有必要使用双引号包围它,就像这个例子:

<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则是一个子元素。两个例子均可提供相同的信息。

没有规则可以告诉我们什么时候该使用属性,而什么时候该使用子元素。在XML中,我们应该尽量避免使用属性。

因使用属性而引起的一些问题:
属性无法包含多个值(子元素可以)
属性不易扩展(为未来的变化)
属性无法描述结构(子元素可以)
属性更难被编程代码处理
不易通过某个DTD对属性值进行测试 - DTD用来定义XML文档的合法元素
如果您使用属性作为数据的容器,那么就会造就难以阅读和维护的文档。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

我们应该坚持这样的理念:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值