[关闭]
@caelumtian 2017-08-30T19:29:18.000000Z 字数 3022 阅读 673

web程序设计 第八课 - XML简介

Web程序设计(考研)

XML

简介

XML 指可扩展标记语言(eXtensible Markup Language)。XML 被设计用来传输存储数据。
XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。例如:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <note>
  3. <to>Tove</to>
  4. <from>Jani</from>
  5. <heading>Reminder</heading>
  6. <body>Don't forget me this weekend!</body>
  7. </note>

XML 文档形成一种树结构;

开头的验证

指名XML的版本,和编码格式

  1. <?xml version="1.0" encoding="UTF-8"?>

XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有的元素都可以有子元素:

  1. <root>
  2. <child>
  3. <subchild>.....</subchild>
  4. </child>
  5. </root>

XML用途

基本语法

XML的基本要求和HTML类似,但是更加的严格:
1. 所有的 XML 元素都必须有一个关闭标签
2. XML 标签对大小写敏感
3. XML 必须正确嵌套
4. XML 文档必须有根元素
5. XML 属性值必须加引号

XML元素

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
一个元素可以包含:

  1. <bookstore>
  2. <book category="CHILDREN">
  3. <title>Harry Potter</title>
  4. <author>J K. Rowling</author>
  5. <year>2005</year>
  6. <price>29.99</price>
  7. </book>
  8. <book category="WEB">
  9. <title>Learning XML</title>
  10. <author>Erik T. Ray</author>
  11. <year>2003</year>
  12. <price>39.95</price>
  13. </book>
  14. </bookstore>

在上面的实例中, 和 都有 元素内容,因为他们包含其他元素。 元素也有属性(category="CHILDREN")。、、 和 有文本内容,因为他们包含文本。

XML属性

XML元素具有属性,类似 HTML。属性(Attribute)提供有关元素的额外信息。属性必须加引号才可以。

XML命名空间

XML 命名空间提供避免元素命名冲突的方法。

使用前缀来避免命名冲突

在 XML 中的命名冲突可以通过使用名称前缀从而容易地避免。该 XML 携带某个 HTML 表格和某件家具的信息:

  1. <h:table>
  2. <h:tr>
  3. <h:td>Apples</h:td>
  4. <h:td>Bananas</h:td>
  5. </h:tr>
  6. </h:table>
  7. <f:table>
  8. <f:name>African Coffee Table</f:name>
  9. <f:width>80</f:width>
  10. <f:length>120</f:length>
  11. </f:table>

XML 命名空间 - xmlns 属性

当在 XML 中使用前缀时,一个所谓的用于前缀的命名空间必须被定义。命名空间是在元素的开始标签的 xmlns 属性中定义的。命名空间声明的语法如下。xmlns:前缀="URI"。

  1. <root>
  2. <h:table xmlns:h="http://www.w3.org/TR/html4/">
  3. <h:tr>
  4. <h:td>Apples</h:td>
  5. <h:td>Bananas</h:td>
  6. </h:tr>
  7. </h:table>
  8. <f:table xmlns:f="http://www.w3cschool.cc/furniture">
  9. <f:name>African Coffee Table</f:name>
  10. <f:width>80</f:width>
  11. <f:length>120</f:length>
  12. </f:table>
  13. </root>

在上面的实例中, 标签的 xmlns 属性定义了 h: 和 f: 前缀的合格命名空间。

CDTAT

XML 文档中的所有文本均会被解析器解析。只有 CDATA 区段中的文本会被解析器忽略。

PCDATA - 被解析的字符数据

XML 解析器通常会解析 XML 文档中所有的文本。当某个 XML 元素被解析时,其标签之间的文本也会被解析。

CDATA - (未解析)字符数据

术语 CDATA 是不应该由 XML 解析器解析的文本数据。
像 "<" 和 "&" 字符在 XML 元素中都是非法的。
"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
"&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。
某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由 "" 结束。

XML验证

验证 XML 文档

合法的 XML 文档是"形式良好"的 XML 文档,这也符合文档类型定义(DTD)的规则:

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE note SYSTEM "Note.dtd">
  3. <note>
  4. <to>Tove</to>
  5. <from>Jani</from>
  6. <heading>Reminder</heading>
  7. <body>Don't forget me this weekend!</body>
  8. </note>

在上面的实例中,DOCTYPE 声明是对外部 DTD 文件的引用。下面的段落展示了这个文件的内容。

XML DTD

DTD 的目的是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构, 下面的文件为Note.dtd

  1. <!DOCTYPE note
  2. [
  3. <!ELEMENT note (to,from,heading,body)>
  4. <!ELEMENT to (#PCDATA)>
  5. <!ELEMENT from (#PCDATA)>
  6. <!ELEMENT heading (#PCDATA)>
  7. <!ELEMENT body (#PCDATA)>
  8. ]>

XML Schema

W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:

  1. <xs:element name="note">
  2. <xs:complexType>
  3. <xs:sequence>
  4. <xs:element name="to" type="xs:string"/>
  5. <xs:element name="from" type="xs:string"/>
  6. <xs:element name="heading" type="xs:string"/>
  7. <xs:element name="body" type="xs:string"/>
  8. </xs:sequence>
  9. </xs:complexType>
  10. </xs:element>

Schema与DTD的区别

DTD和Schema,可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD的缺点:使用的是与XML无关的语言写的,所以XML分析器不能正确的分析他们。DTD不能对数据的格式做出限制,这些数据一般作为特定标签的内容。解决这些问题的是Schema,相比DTD他提供了更多的对数据类型的控制。而且是基于XML架构的,可以直接被XML解析器解析。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注