@caelumtian
2017-08-30T11:29:18.000000Z
字数 3022
阅读 904
Web程序设计(考研)XML 指可扩展标记语言(eXtensible Markup Language)。XML 被设计用来传输和存储数据。
XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。例如:
<?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
指名XML的版本,和编码格式
<?xml version="1.0" encoding="UTF-8"?>
XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有的元素都可以有子元素:
<root><child><subchild>.....</subchild></child></root>
XML的基本要求和HTML类似,但是更加的严格:
1. 所有的 XML 元素都必须有一个关闭标签
2. XML 标签对大小写敏感
3. XML 必须正确嵌套
4. XML 文档必须有根元素
5. XML 属性值必须加引号
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
一个元素可以包含:
<bookstore><book category="CHILDREN"><title>Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book><book category="WEB"><title>Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book></bookstore>
在上面的实例中, 和 都有 元素内容,因为他们包含其他元素。 元素也有属性(category="CHILDREN")。、、 和 有文本内容,因为他们包含文本。
XML元素具有属性,类似 HTML。属性(Attribute)提供有关元素的额外信息。属性必须加引号才可以。
XML 命名空间提供避免元素命名冲突的方法。
在 XML 中的命名冲突可以通过使用名称前缀从而容易地避免。该 XML 携带某个 HTML 表格和某件家具的信息:
<h:table><h:tr><h:td>Apples</h:td><h:td>Bananas</h:td></h:tr></h:table><f:table><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length></f:table>
当在 XML 中使用前缀时,一个所谓的用于前缀的命名空间必须被定义。命名空间是在元素的开始标签的 xmlns 属性中定义的。命名空间声明的语法如下。xmlns:前缀="URI"。
<root><h:table xmlns:h="http://www.w3.org/TR/html4/"><h:tr><h:td>Apples</h:td><h:td>Bananas</h:td></h:tr></h:table><f:table xmlns:f="http://www.w3cschool.cc/furniture"><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length></f:table></root>
在上面的实例中, 标签的 xmlns 属性定义了 h: 和 f: 前缀的合格命名空间。
XML 文档中的所有文本均会被解析器解析。只有 CDATA 区段中的文本会被解析器忽略。
XML 解析器通常会解析 XML 文档中所有的文本。当某个 XML 元素被解析时,其标签之间的文本也会被解析。
术语 CDATA 是不应该由 XML 解析器解析的文本数据。
像 "<" 和 "&" 字符在 XML 元素中都是非法的。
"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
"&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。
某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由 "" 结束。
合法的 XML 文档是"形式良好"的 XML 文档,这也符合文档类型定义(DTD)的规则:
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE note SYSTEM "Note.dtd"><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
在上面的实例中,DOCTYPE 声明是对外部 DTD 文件的引用。下面的段落展示了这个文件的内容。
DTD 的目的是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构, 下面的文件为Note.dtd:
<!DOCTYPE note[<!ELEMENT note (to,from,heading,body)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)>]>
W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:
<xs:element name="note"><xs:complexType><xs:sequence><xs:element name="to" type="xs:string"/><xs:element name="from" type="xs:string"/><xs:element name="heading" type="xs:string"/><xs:element name="body" type="xs:string"/></xs:sequence></xs:complexType></xs:element>
DTD和Schema,可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD的缺点:使用的是与XML无关的语言写的,所以XML分析器不能正确的分析他们。DTD不能对数据的格式做出限制,这些数据一般作为特定标签的内容。解决这些问题的是Schema,相比DTD他提供了更多的对数据类型的控制。而且是基于XML架构的,可以直接被XML解析器解析。