元素
元素是XML文档的基本单元,其中可以包含其他的元素、字符数据、字符引用、实体引用、PI、注释以及CDATA节,它们合在一起被称做元素内容(element content),相当于一个盛放文档内容的容器。
在XML文档中,所有的“内容”都必须被各种各样大大小小的容器封装起来,然后在容器上标示出对承载内容进行说明的标记,所有的XML数据(除了根元素、注释、PI和空白)都必须包容在其他元素中。
在XML文档中,所有的“内容”都必须被各种各样大大小小的容器封装起来,然后在容器上标示出对承载内容进行说明的标记,所有的XML数据(除了根元素、注释、PI和空白)都必须包容在其他元素中。
一个元素包含一个起始标记、一个结束标记及标记之间的数据内容,格式如下:
<标记>数据内容</标记>
元素使用标记(tag)进行分隔,由一对尖括号(“< >”)围住元素类型名(一个字符串)。每一个元素都必须由一个起始标记和一个结束标记分隔开,这与要求比较宽松的HTML文档不同,后者的结束标记可以省略。
元素使用标记(tag)进行分隔,由一对尖括号(“< >”)围住元素类型名(一个字符串)。每一个元素都必须由一个起始标记和一个结束标记分隔开,这与要求比较宽松的HTML文档不同,后者的结束标记可以省略。
说明:
1)XML元素的标记名称也就是该元素的名称。
2)开始标记和结束标记必须配对使用(没有内容的空元素除外)。起始标记和结束标记必须一样,只是在结束标记 的名称前需要加“/”。
3)XML是大小写敏感的。下面的两个例子不是等同的标记。
1)XML元素的标记名称也就是该元素的名称。
2)开始标记和结束标记必须配对使用(没有内容的空元素除外)。起始标记和结束标记必须一样,只是在结束标记 的名称前需要加“/”。
3)XML是大小写敏感的。下面的两个例子不是等同的标记。
<BookList>content</BookList>
<bookList>content</booklist>
4)各个元素的起始标记和结束标记可以嵌套使用,但不能交叉使用。
5)在元素的起始标记中,可以为该元素添加若干个相关的属性数据。
标记的基本语法形式:< 标记名[[属性名1=” 属性值1”] [属性名2=” 属性值2”] …]>
标记的基本语法形式:< 标记名[[属性名1=” 属性值1”] [属性名2=” 属性值2”] …]>
标记的名称必须符合以下规则:
(1)标记名字必须以英文字母或下划线“_”开头,中文标记名称必须以汉字或下划线“_”开头。
(2)在使用默认字符集的情况下,标记名称可由零个或多个字母、数字、句点“.”、连字符(-),或底划线“_”构成。
(3)XML解析器对标记名称中的英文字母大小写是敏感的。
(4)标记名称中不能含有空格。
(5)冒号“:”被保留作为名称空间的分隔符
(1)标记名字必须以英文字母或下划线“_”开头,中文标记名称必须以汉字或下划线“_”开头。
(2)在使用默认字符集的情况下,标记名称可由零个或多个字母、数字、句点“.”、连字符(-),或底划线“_”构成。
(3)XML解析器对标记名称中的英文字母大小写是敏感的。
(4)标记名称中不能含有空格。
(5)冒号“:”被保留作为名称空间的分隔符
元素的类型
XML元素由XML标记来定义。XML标记有两种:非空标记与空标记。相应的,XML元素也就有非空元素与空元素之分。 1.非空标记与非空元素
非空标记由开始标记和结束标记组成。对于XML文档,起始标记和结束标记有着非常重要的作用,它们将文档的数据进行结构化组织,并确定元素的范围和相互关系。
非空元素由非空标记来定义,其一般表示形式如下:
<标记名>元素内容</标记名>
非空标记必须是对称性标记,起始标记和结束标记同名。在XML文档中,起始标记和结束标记之间一定要有其他内容、字符数据或其他标记。
如:
2.空标记与空元素
<?xml version="1.0" encoding="gb2312"?>
<!—非空元素举例-->
<客户>
<公司名称>东南实业</公司名称>
<联系人>王先生</联系人>
<职位>销售经理</职位>
<地址>临江东街62号</地址>
<电话>65785678</电话>
</客户>
2.空标记与空元素
所谓空元素是指没有内容的元素,即在开始标记与结束标记之间既无数据内容也无属下的子元素。
例如下面的元素:
<RESUME></RESUME>
此种情况下,可将上面的空元素写成: <RESUME/>
空元素虽然没有具体的内容,却具有下面两种可能的用途:可使用空元素告诉XML应用程序,执行某个动作或显示某个对象,例如,HTML中“BR”是空元素,它能告诉浏览器加入一个换行符:“HR”也是空元素,用来告诉浏览器加入一个水平分界线。
空元素可以通过属性来储存信息。许多空元素都可以携带各种属性:
空元素可以通过属性来储存信息。许多空元素都可以携带各种属性:
<东南实业 联系人="王先生" 电话="65785678"/>
元素的属性
XML元素与HTML元素一样,可以用属性来表达数据。元素可以有多个属性,但每个属性都是由一个“名称—数值”对组成,名称和数值分别为一个字符串,同一个元素不能有两个同名的属性。
例如我们表达一个矩形时,它的长和宽就成为了矩形的属性,如
例如我们表达一个矩形时,它的长和宽就成为了矩形的属性,如
<矩形 长=“40” 宽=“60”/>
属性名是字符串,遵循与标记名同样的规则。 对于非空元素,其属性的定义格式如下:
属性名是字符串,遵循与标记名同样的规则。 对于非空元素,其属性的定义格式如下:
<标记名 属性名="属性值" 属性名="属性值"...>数据内容</标记名>
对于空元素,属性的定义格式如下:
<标记名 属性名="属性值" 属性名="属性值".../ >
属性值的定义应遵守下面规则:
1)属性值字符串应该使用半角的单引号或双引号括起来。
2)属性值的字符串中不能包含用来界定属性值的引号。当属性值本身含有单引号时,应该用双引号括起来;当属性值本身含有双引号时,应该用单引号括起来。
3)属性值的字符串中不能包含“<”、“>”、“&”、单引号和双引号等字符,但可以包含预定义的特殊字符编码或内部实体引用。
1)属性值字符串应该使用半角的单引号或双引号括起来。
2)属性值的字符串中不能包含用来界定属性值的引号。当属性值本身含有单引号时,应该用双引号括起来;当属性值本身含有双引号时,应该用单引号括起来。
3)属性值的字符串中不能包含“<”、“>”、“&”、单引号和双引号等字符,但可以包含预定义的特殊字符编码或内部实体引用。
例子:
<?xml version=“1.0” encoding=“UTF-8” standalone=“no”?>
<BookList>
<Book ISBN=“7-5606-0924-4/TP0851”> <Title>软件工程</Title>
<Abstract>介绍软件工程理论...</Abstract> <Author>邓良松</Author>
<Category>计算机</Category>
<Publisher>西安电子科技大学出版社</Publisher>
<PubDate>2001年6月</PubDate>
<Price>20.00</Price>
</Book>
<Book ISBN="7-5606-0492-7/TP0229"> <Title>软件系统开发技术(修订版)</Title>
<Abstract>介绍软件系统的开发技术...</Abstract>
<Author>潘锦平</Author>
<Category>计算机</Category>
<Publisher>西安电子科技大学出版社</Publisher>
<PubDate>2001年1月</PubDate>
<Price>12.30</Price>
</Book>
</BookList>
何时使用子元素及何时使用属性并没有严格的规范可以遵循。一个好的经验规则是数据本身应当存储在元素中,而有关数据的信息(元数据)应当存储在属性中;不知道怎么做时,就把信息放在元素中。
元素嵌套
XML规范指出:一个格式正确的XML文档必须明确地拥有一个唯一的顶层元素,该元素被称为文档元素或根元素,而其它所有的元素都被嵌套在这个元素之下。事实上,XML文档中几乎所有的元素都是以嵌套形式存在的。
例子:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<BookList>
<Book>
<ISBN>7-5606-0924-4/TP0851</ISBN> <Title>软件工程</Title>
<Abstract>介绍软件工程理论...</Abstract>
<Author>
<Name>邓良松</Name>
<Gender>男</Gender>
</Author>
<Category>计算机</Category>
<Publisher>西安电子科技大学出版社</Publisher>
<PubDate>2001年6月</PubDate>
<Price>20.00</Price>
</Book>
<Book>
<ISBN>7-5606-0492-7/TP0229</ISBN> <Title>软件系统开发技术(修订版)</Title>
<Abstract>介绍软件系统的开发技术...</Abstract>
<Author>
<Name>潘锦平</Name>
<Gender>男</Gender>
</Author>
<Category>计算机</Category>
<Publisher>西安电子科技大学出版社</Publisher>
<PubDate>2001年1月</PubDate>
<Price>12.30</Price>
</Book>
</BookList>