XML的全称是eXtensible Markup Language,意即可扩展标记语言。目前推荐遵循的标准时W3C组织发布的XML 1.0版本。与HTML语言一样,XML也是标准通用标记语言SGML的一个子集,但XML是一种能定义其他语言的语言。最初设计XML的目的是为了弥补HTML的不足,以强大的扩展性满足网络信息发布的需要,后来逐渐用于网络数据的转换和描述。XML也是Ajax技术的重要组成部分。
一、XML 文档结构
XML文档是扩展名为.xml 的文本文件。一个XML文档由两部分组成:文档序言和根元素。序言部分包括必需的XML文档声明和一些可选的处理指令等;根元素是文档的顶层元素,其中可以嵌套一些子元素。一个XML文档具有且仅有一个根元素。
若一个XML文档完全遵循XML文档规则、但未引用DTD和Schema,则称为格式良好的XML文档。若一个XML文档遵循XML文档规则、并且完全遵守DTD或Schema的定义,则称为有效的XML文档。
1、XML文档声明
XML文档通常总是以一个XML文档声明开始,用于指定所用的XML版本、编码字符集及文档独立性信息,语法如下:
其中,version属性是必须的,另外两个属性都是可选的。
encoding:指定该文档所使用的编码字符集,若省略,则使用utf-8字符集;
standalone:指定该文档是否需要引用其他外部资源,yes表示该文档是一个独立文档,不依赖外部文档;no意义相反。
创建XML文档时,虽然XML文档声明不是必需的,但是通常建议为文档加上XML文档声明。使用XML文档声明时,必须将其放在文档的第一行。XML文档声明前不能有任何内容,包括空格和注释在内。
2、处理指令
在XML声明后面,根据需要可以包含一些处理指令,其作用是为XML解析器提供传递给应用程序的信息,语法如下:
其中,piname表示处理指令名称,attribute表示属性名,value表示属性值。
例如,使用xml-stylesheet处理指令可以在XML文档中引用外部CSS样式表文件或XSLT样式表文件。
3、文档类型定义
为了规范XML文档,可以在处理指令之后包含DTD(Document Type Definition,即文档类型定义)。除了在XML文档中包含DTD外,也可以引用外部DTD文件(.dtd)。
4、XML元素
在XML文档中,元素由开始标记、元素内容和结束标记组成。空元素则由空元素标记组成。每个元素有一个用名称标识的类型,还有一个属性集;每个属性包含一个名称或一个值。
其中,<element>表示元素的开始标记,content表示元素的内容,</element>表示元素的结束标记。
5、注释
注释的语法格式如下:
注释不能出现在XML声明之前或元素标记中,也不能在注释中包含字符串“–”。
二、XML元素
元素是XML文档的主要组成部分。XML元素通过XML标记来定义。
1、命名规则
XML元素由开始标记、元素内容和结束标记组成,其中开始标记由小于号“<”、标记名称和大于号“>”组成,结束标记由小于号“<”、斜线“/”、标记名称和大于号“>”组成。标记名称即元素名称。元素名称的命名规则有:
b、可以包含字母、汉字、数字、下划线,以及XML标准允许的其他字符;
c、不能包含空格;
d、字母是区分大小写的;
e、尽量不要使用冒号,因为冒号在名称空间中有专门用途。
2、元素的形式
XML元素有四种形式:
<element />
包含属性的空元素
<element attribute="value" attribute="value" …/>
包含内容的元素
<element>content</element>
包含属性和内容的元素
<element attribute="value" attribute="value" …/>content</element>
3、元素的内容
在一个XML元素中,可以包含子元素、字符数据、字符引用和预定义实体引用及CDATA段。
a、子元素
元素下面可以包括其他以元素方式定义的元素,称为子元素;
b、字符数据
可以包含字母、汉字、数字等各种字符数据,但不能包含字符“&”、“<”及字符串“]]>”。
c、预定义实体引用
若要在元素内容中使用字符“&”和“<”,可通过预定义实体方式来引用。XML定义了5个实体引用:“&”用“&”表示,“<”用“<”表示,“>”用“>”表示,“'”用“'”表示,“"”用“&aquot;”表示。
d、CDATA段
CDATA段包含纯字符数据,这些内容不被XML解析器解析,可以用在允许使用字符数据的任何位置。语法格式如下:
其中,text表示CDATA段包含的文本内容,可以包含“> < &”等字符,甚至是跨行的数据。
当需要把文本解析为字符数据而不是标记时,可以使用CDATA段。由于CDATA段的结束标记是字符串“]]>”,因此在CDATA段中不能包含该字符串。
如果确实需要使用该字符串,可以把字符串“]]>”拆分到两个不同的CDATA段中。
三、XML属性
属性时XML元素的可选部分,其作用是对元素及其内容的附件信息进行描述。空元素和非空元素都可以定义属性。
属性的命名规则与元素相似。在定义多个属性时,各个属性之间用空格分开,不能为同一个元素定义多个同名的属性。
每个属性总是以属性名-属性值形式成对出现,两者用等号“=”连接。
属性值必须使用双引号或单引号括起来。如果属性值本身包含双引号,可以用单引号或预定义实体引用来表示,其他不能使用的符号也采用相同的做法。
四、XML名称空间
由于XML是一种可扩展的标记语言,在XML文档中使用的元素不是固定的。如果在两个不同的XML文档中使用同一名称来描述不同类型的元素,而且两个XML文档又在一起使用,这就会导致命名冲突。为此,XML提供了名称空间机制。
1、声明名称空间
在XML文档中,可以在某个元素的开始标记中定义一个名称空间:
其中,element指定在哪个元素上声明名称空间,该名称空间适用于声明它的元素及其属性,以及该元素内容中的所有子元素及其属性。对一个元素可以声明多个名称空间。
“xmlns:prefixname”指定该元素的一个属性名,其中prefixname是一个标识符,给出名称空间前缀的名称,该名称不能包含冒号。
该属性值是一个URInate(统一资源标识符)引用,不过此URI纯粹是形式上的标识符,它仅用于标记一个唯一的名称空间,并不需要指向真实存在的网络资源。
对于一个元素声明名称空间之后,在XML文档中表示该元素的属性和内容中的子元素时,就需要添加“prefixname:”作为前缀,以区别于文档中同名的其他元素或属性。
2、声明默认名称空间
如果声明名称空间时,在某元素的开始标识只使用xmlns关键词而未指定标识符,则对该元素声明了一个默认名称空间:
在XML文档对一个元素声明默认名称空间后,则该元素和所有未加名称空间前缀的子元素及其属性都将属于这些默认名称空间,除非对它们另外声明了名称空间。
定义名称空间的范例:
<students xmlns="http://www.linuxfly.org/student"
xmlns:gua="http://www.linuxfly.org/guardian">
<student studentno="20070701">
<name>李云飞</name>
<gender>男</gender>
<guardian>
<gua:name>张曼莉</gua:name>
<gua:gender>女</gua:gender>
</guardian>
</student>
</students>
[转]XML Schema 与 XML DTD的技术比较与分析
用Schema规范XML文档
用DTD规范XML文档
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/105108.html