XML学习笔记
XML语法
XML文档的语法格式如下。
(1)必须有一个顶层元素,即文档元素,所有其他元素必须嵌入在该元素中。
(2)元素嵌套要正确,即如果一个元素在另一个元素中开始,那么必须在同一元素中结束。
(3)每个元素必须同时拥有开始和结束标记。
(4)开始标记中的元素类型名必须与相应结束标记中的名称完全匹配。
(5)元素类型名区分大小写,如分别定义开始标记
(6)元素类型名称中可以包含字母、数字及其他字母元素类型,也可以使用非英文字符。名称不能以数字或符号“-”开头,名称中不能包含空格符和冒号。
(7)元素的属性值必须使用引号“”””括起。
XML声明
XML声明的作用是使浏览器识别将要处理的文档是XML文件,它在文档中是可选内容,推荐使用XML声明。其语法格式如下:
1 | "version" encoding="value" standalone="value" xml version= |
(1)version:指定遵循XML规范的版本号,在XML声明中必须包含该参数,并且必须放在XML声明中其他属性之前。
(2)encoding:指定XML文档中字符使用的编码标准。
(3)standalone:指定该XML文档是否一个外部文档嵌套使用,取值为yes或者no。为yes,说明是一个独立的XML文档,与外部文件无关联;否则说明XML文档不独立。
元素
XML元素指从其开始标记到结束标记之间的内容,包括元素内容、混合内容、简单内容或者空内容。XML元素由开始标记、元素内容和结束标记3个部分组成,定义XML元素的语法格式如下:
1 | <TagName>content</TagName> |
(1)TagName:XML元素的开始标记,其中TagName是元素名。元素名可以包含字母,数字和其他字符,但最好不使用“-”和“.”,以免产生混淆。并且元素名只能以字母、下画线或冒号开头,而不能以XML(包括xml、Xml、xMl…)开头。也不能包含空格,并且至少含有一个字母。
(2)content:元素内容,可以包含其他元素、字符数据、字符引用、实体引用、处理命令、注释和CDATA部分。
(3)/TagName:XML元素的结束标记,其中TagName是元素名,该名称必须与开始标记中指定的元素名相同,包括字母的大小写。
属性
在一个元素的开始标记中可以自定义一个或者多个属性,属性依附于元素存在,属性值用单引号或者双引号括起。
1 | <book Type="WebBook"></book> |
为元素添加属性是为其提供信息的一种方法。当使用CSS样式表显示XML文档时,浏览器不会显示属性及其值。如果使用数据绑定、HTML页中的脚本或者XSL样式表显示XML文档,则可以访问属性及其值。
注释
注释是为了便于阅读和理解,在XML文档中添加的附加信息。它是对文档结构或者内容的解释,不属于XML文档的内容,所以XML解析器不会处理注释内容。注释以字符串“<! –”开始,以字符串“–>”结束。XML解析器将忽略注释中的所有数据,这样可以在XML文档中添加注释说明程序用途,或者临时注释掉没有准备好的文档部分。
字符和实体引用
在XML文档中有些字符会被XML解析器作为标记处理,如果要把这些字符作为普通字符处理,则需要引用实体。XML常用的实体引用如表1所示。
XML的两种语法规则
定义XML文档结构的两种形式是DTD(Document TypeDefinition)文档类型定义和Schema模式定义。
DTD文档类型定义
DTD文档类型定义是一套关于标记符的语法规则,用于定义可用在XML文档中的元素、属性和实体,以及这些内容之间的相互关系,其语法格式如下:
1 | <! ELEMENT name content> |
(1)name:一个标准的XML标记名。(2)content:可以是EMPTY、ANY或者描述包含在本元素中子元素顺序和重复次数的内容模型。
下面分别介绍5种内容模型和元素出现次数指示符。
(1)EMPTY类型EMPTY类型用于定义空元素,即说明该元素只能有属性,不能有字符数据或者子元素。
1 | <! ELEMENT blank EMPTY> |
(2)ANY类型ANY类型表明该元素可以包含DTD中定义的其他任何元素或者已编译过的字符数据。
(3)#PCDATA类型#PCDATA类型表明该元素中不包含其他子元素,而只包含字符数据。
(4)子元素类型子元素类型表明元素可以包含一系列的子元素,它有如下两种结构。
1.序列结构:子元素必须按照定义的顺序出现,并且只能出现一次。
1 | <! ELEMENT book(title,pages,datetime)> |
2.选择结构是指子元素是定义子元素集合中的一个,但不能包含其中的两个或者更多。
1 | <! ELEMENT book (title-pages-datetime)> |
(5)混合类型混合类型指元素包含子元素和已编译的字符数据。
混合内容元素的声明必须遵循以“#PCDATA”开始,后面是混合内容中可能出现的子元素类型,在右括号之后加符号“*”。
1 | <! ELEMENT book (#PCDATA-title-pages-datatime)*> |
(6)元素出现次数指示符。使用元素出现次数指示符可以指定元素出现的次数,该指示符有以下3种。
- “? ”字符,说明元素可以出现0次或者一次。
- “*”字符,说明元素可以不出现、出现一次或者多次。
- “+”字符,说明元素必须出现至少一次。
DTD可以定义元素的属性,声明属性的语法格式如下:1
<! ATTLIST Element_name Attribute_name Type Default_value>
DTD属性声明中的参数如表2所示。
DTD属性声明中的属性类型如表3所示。
DTD属性声明中的属性默认值如表4所示。
DTD可以包含在XML文档中,也可以独立为一个文件,根据其位置可以分成内部和外部DTD。
(1)内部DTD。
将DTD定义在XML文档的内部构成内部DTD,其语法格式如下:
1 | <! DOCUMENT NAME |
(2)外部DTD。
可以将DTD部分放在XML文档的外部,一个DTD文件可以提供给多个XML文档使用,DTD文件的扩展名为“.dtd”。
在XML文档中引用DTD文件的语法格式如下:
1 | <! DOCUMENT name SYSTEM"DTD文件路径"> |
Schema文档规则
Schema文档规则使用一种类似XML的语言,在Schema模式定义中有全局和局部声明。该模式具有一套完整的数据类型系统,允许详细定义数据类型。Schema模式是一个文本文件,独立于XML文档,扩展名为“.xsd”。
下面通过具体示例说明Schema模式的基本结构和使用方法。
book.xsd
1 | "1.0" encoding="UTF-8" xml version= |
mr.xml
1 | "1.0" encoding="UTF-8" xml version= |
XML的3种显示格式
1.CSS样式表
在XML文档中直接链接一个CSS样式表文件,可以使用CSS样式表显示其内容。CSS样式表中的样式名称应与XML文档中定义的元素名称相同。
语法格式如下:
1 | "text/css"href="CSS样式文件路径" xml-stylesheet type= |
2.XSL样式语言
XSL(the eXtensible Stylesheet Language)语言与CSS样式表的功能类似,一个XSL样式表链接到一个XML文档可以显示XML数据,在XML文档中应用CSS样式表只允许指定每个XML元素的格式。而XSL样式表可以完整控制整个XML文档的输出,它能够精确地选择需要显示的XML数据,按照任意顺序排列显示的数据并方便地修改或者添加数据。XSL样式表是一个正确有效的XML文档,其扩展名为“.xsl”。
在XML文档中使用XSL样式表的语法格式如下:
1 | "texxt/xsl"href="XSL样式表路径" xml-stylesheet type= |
3.XML数据岛技术
XML数据岛技术可以有效地分离显示格式和显示数据,使用该技术的文档也是一个正确有效的XML文档。在XML文档中存放的数据可以通过HTML页面调用该文档,从而显示其中的内容。
在HTML文件中链接XML文档的语法格式如下:
1 | <xml id="value" src="XML文件"> |