XML(eXtensible Markup Language)可扩展的标记语言。XML和HTML都是从SGML发展起来的标记语言。HTML有一套标准的标记,我们不能创建新的标记。XML没有所谓的标准标记,需要我们自己创建标记,同样的标记根据解析的不同可以表现不同的意义。可以说XML是创建标记语言的元语言。HTML将数据、页面的排版以及页面的表现形式混合在一起,而XML只是用于描述数据和数据的结构,它将数据与显示分开。XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。对 XML 最好的描述是:XML 是独立于软件和硬件的信息传输工具。
XML文档在逻辑上分为5部分:XML声明,文档类型声明,元素,注释,处理指令。所有的这些都是通过显示的标记来指明的。XML标记包括开始标签、结束标签、空元素标签、实体引用、字符引用、注释、CDATA段定界符、文档类型声明、处理指令、XML声明、文本声明及任何在文档实体顶层的空白。其他所有非标记文本组成文档的字符数据。
XML文档总以XML声明开始,用于指明XML版本、文档的编码、文档的独立性。格式如下:
<?xml 版本信息[编码信息][文档独立性信息] ?>
需要注意的是?左右不能有空格,声明必须位于文档第一行,且前面不能有任何字符。记住这两点点就可以了
XML声明中加上版本号的作用是方便以后修订和扩充。文档编码默认是UTF-8。独立文档声明用于声明此文档是否依赖于外部文档。完整的XML声明如下:
<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
因为XML文档可以任意定制标签,所以当你将文档交给别人时,需要一份规范用于判断文档中元素与元素之间、元素与属性之间的关系,以及属性的取值是否正确。我们可以用DTD(Document Type Definition)来规范XML文档(还可以用Schema,DTD的替代品)。HTML就有一个标准的DTD文件。
文档类型声明有两种形式,一种是声明DTD在一个外部的文件中:
<! DOCTYPE note SYSTEM "hello.dtd">
双引号内可以使一段URL。
或者在XML文档中给出DTD。
<?xml version="1.0" encoding="gb2312" standalone="yes" ?> <!DOCTYPE note [ <!ELEMENT note (#PCDATA)> ]>
空元素
<student />
带有属性的空元素
<student name="李四" age="19" />
带有内容的元素
<student> this is a student <name>abyss</name> <age>19</age> </student>
带有内容和属性的元素
<student name="abyss"> <age>19</age> </student>
注意:元素是指开始标签和结束标签以及两者之间的所有内容,包括注释,子元素,文本,属性等。标签仅仅包括一对尖括号以及尖括号内的内容 。
提示:尽量使用元素描述数据,用属性来描述与数据无关的信息。使用属性具有以下缺点:
1、子元素
2、字符数据
字符数据是追不包括任何标记的起始定界符(&、<)和CDATA段结束定界符的任意字符串(]]>),在CDATA段中是指不包括CDATA段的结束定界符的任意字符串
3、字符引用和预定义实体引用
在xml文档中,有些地方不允许出现一些特殊字符,这时候采用字符引用和预定义实体引用。
字符 | 字符引用(十进制) | 字符引用(十六进制) | 预定义实体引用 |
< | < | < | < |
> | > | > | > |
" | " | " | " |
' | ' | ' | ' |
& | & | & | & |
4、CDATA段
CDATA段包含的都是纯字符数据,在字符数据可以出现的任何地方都可以使用CDATA段。主要用于需要将整个文本解释为字符首而不是标记的情况下使用,XML处理器不分析CDATA段的内容,所有可以包含任意字符。代码示例:
<?xml version="1.0"?> <java> <![CDATA[ if(a>b &&c<b){ max=a; } ]]> </java>
注释以<!--开始以-->结束,其中间的内容将被XML处理器忽略。
字符串 -- 不能出现在注释中;
注释不能以--->结尾。
处理指令允许文档中包含由应用程序来处理的指令。通过处理指令来处理XML处理器无法处理的非XML格式的数据。处理指令的语法与XML声明类似,以<?开始,以?>结束。代码示例:
<?xml-stylesheet href="hello.css" type="text/css"?>
第一个字符串叫做处理指令的目标用来指明要使用的程序的名称,非W3C定义的处理指令不能以“XML”、“xml”开头,后面的字符串是传递给应用程序的字符数据。对于不认识的处理指令大多数选择忽略。xml-stylesheet处理指令总是放到XML声明后,其他声明指令可以放在除标记内部和XML声明前任意位置。
在XML文档中可以在元素中使用特殊的属性xml:space,来通知应用程序保留此元素中的空白,此属性在使用时必须声明,且必须声明为枚举类型,值必须是“default”和“preserve”两者之一或都取。
default:表示对此元素使用应用程序的默认空白处理模式;
preserve:表示应用程序保留所有空白。
作用范围为该元素内容中的所有元素,直至被另外一个xml:space属性实例所覆盖。
在XML文档中,可以插入特殊属性xml:lang来指出任何元素的内容和属性的值所使用的语言。注意是语言不是字符编码,其值时在IETFRFC 3066或后继版本中定义的语言标识符。
作用范围为该元素内容中的所有元素,直至被另外一个xml:lang属性实例所覆盖。