XML语法概述

XML文档使用的是自描述的和简单的语法,一个XML文档最基本的构成包括:声明,处理指令(可选)和元素。以下是一个简单的XML文档:

1<?XML version ="1.0" encoding ="GB2312" standalone="yes" ?>
2<?XML-stylesheet type="text/xsl" href="yxfqust.xsl" ?>
3<!--以下是一个学生名单-->
4<学生名单>
5 <学生>
6 <学号>2003081205</学号>
7 <姓名>田淋</姓名>
8 <班级>计03.2班</班级>
9 </学生>
10 <学生>
11 <学号>2003081232</学号>
12 <姓名>杨雪锋</姓名>
13 <班级>计03.2班</班级>
14 </学生>
15</学生名单>第1行是XML声明,第2行是处理指令,第3行是注释,4到15就是文档的各个元素。(注:XML标记都是大小写敏感的).

一。文档的声明:
<?XML version="1.0" encoding="GB2312" standalone="yes"?>
XML标记说明它是一个XML文档,后面两个属性值表明了它的版本号和编码标准,standalone取yes表明该文件未引明其他外部XML文件。
二。处理指令
格式:<?处理指令名 处理指令信息 ?> <?XML-stylesheet type="text/xsl" href="yxfqust.xsl" ?>三。注释:

格式:<!--注释内容-->
<!--以下是一个学生名单-->注释应注意的问题:
1.注释不能出现在XML声明之前;
2.注释不能出现在标记中;
3.注释中不能出现连续两个连字符,即"--" 如:<!--this is a bad document.--do you know!-->;
4.注释中可包含元素,但元素中不能包含"--"包含的元素解析时被忽略;
5.注释不能嵌套;

四。元素与标记:
所有的XML元素必须合理包含,且所有的XML文档必须有一个根元素。如同HTML一样,XML元素同样也可以拥有属性。XML元素的属性以名字/值成对的出现。XML语法规范要求XML元素属性值必须用引号引着。请看下面的两个例子,第一个是错误的,第二个是正确的。

<?XML version="1.0" encoding="ISO-8859-1"?>
<note date=12/11/2002>
<to>Tove</to>
<from>Jani</from>
</note>
---------------------------
<?XML version="1.0" encoding="ISO-8859-1"?>
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
</note>格式:<标记 属性名1="值1".......>数据内容</标记>
XML元素是可以扩展的,它们之间有关联,XML元素有简单的命名规则:

Names can contain letters, numbers, and other characters (元素的名字可以包含子母,数字和其他字符。)
Names must not start with a number or punctuation character (元素的名字不能以数字或者标点符号开头。)
Names must not start with the letters XML (or XML or XML ..) (元素的名字不能以XML(或者XML,XML,XML...)开头。)
Names cannot contain spaces(元素的名字不能包含空格。)
元素是XML文档的灵魂,它构成了文档的主要内容。XML元素则是由标记来定义的,同时标记分为非空标记和空标记。

1.非空标记格式:
<标记>元素内容</标记> 如:

<学号>2003081205</学号>
<姓名>田淋</姓名>
<班级>计03.2班</班级>
2.空标记格式:
<标记名 属性名="属性值", 属性名="属性值"......> 如:<田淋 学号="2003081205">

同时元素也支持合理的嵌套,如上面的文档例子,学生名单与学生就是一层嵌套。嵌套需满足以下规则:
1.所有XML文档都从一个根节点开始,根节点包含了一个根元素;
2.文档内所有其他元素必须包含在根元素中;
3.嵌套在内的为子元素,同一层的互为兄弟元素;
4.子元素还可以包含子元素;
5.包含子元素的元素称为分支,没有子元素的元素称为树叶;

数据既可以存储在子元素中也可以存储在属性中,应尽量使用子元素而避免使用属性。原因如下:

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 Document Type Definition (DTD) - which is used to define the legal elements of an XML document(属性值很难通过DTD进行测试)

你可能感兴趣的:(数据结构,xml,XSL)