Skip to content

Latest commit

 

History

History
497 lines (452 loc) · 19.3 KB

File metadata and controls

497 lines (452 loc) · 19.3 KB

1、XML 简介和用途

1、XML 与 HTML 区别

XML 被设计用来传输和存储数据, HTML 被设计用来显示数据。

2、XML 基本

它没有预定义的标签,用户需自定义标签。XML 具有自我描述性。 XML 是不作为的,只是纯文本,有能力处理纯文本的软件都可以处理 XML,但能够读懂 XML 标签的应用程序可以有针对性地处理 XML 标签,标签的功能性意义依赖于应用程序 的特性。 XML 是独立于硬件和软件的信息传输工具。 XML 应用于 web 开发的许多方面,常用于简化数据的存储和共享。

3、XML 把数据从 HTML 分离

如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编 辑 HTML。 通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行 布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。 通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数 据内容。

4、XML 简化数据共享

在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。 XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。 这让创建不同应用程序可以共享的数据变得更加容易。

5、XML 简化数据传输

通过 XML,可以在不兼容的系统之间轻松地交换数据。 对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据。 由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性。

6、XML 简化平台的变更

升级到新的系统(硬件或软件平台),总是非常费时的。必须转换大量的数据,不兼容 的数据经常会丢失。 XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到 新的操作系统、新应用程序或新的浏览器。

7、XML 使您的数据更有用

由于 XML 独立于硬件、软件以及应用程序,XML 使您的数据更可用,也更有用。 不同的应用程序都能够访问您的数据,不仅仅在 HTML 页中,也可以从 XML 数据源中 进行访问。 通过 XML,您的数据可供各种阅读设备使用(手持的计算机、语音设备、新闻阅读器 等),还可以供盲人或其他残障人士使用。

8、XML 用于创建新的 Internet 语言

很多新的 Internet 语言是通过 XML 创建的: 其中的例子包括: XHTML - 最新的 HTML 版本 WSDL - 用于描述可用的 web service WAP 和 WML - 用于手持设备的标记语言 RSS - 用于 RSS feed 的语言 RDF 和 OWL - 用于描述资源和本体 SMIL - 用于描述针针对 web 的多媒体

9、XML 是可扩展的

XML 元素是可扩展的,以便携带更多的信息。

2、XML 树结构

XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。 XML 文档必须包含根元素。该元素是所有其他元素的父元素。 XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。 所有元素均可拥有子元素.所有元素均可拥有文本内容和属性.

3、XML 语法规则

1)所有 XML 都必须有关闭标签。但 XML 声明不属于 XML 的组成部分,它不是 XML 元 素,也不需要关闭标签。 2)XML 标签对大小写敏感。 3)XML 必须正确嵌套。 4)XML 文档必须有根元素。 5)XML 属性值必须加引号,单双引号都可. 6)五个实体引用: < 用 &lt; 代替,> 用 &gt; 代替, & 用 &amp; 代替,’ 用 &apos 代替,” 用 &quot; 代替。 7)XML 注释 <!– This is a comment –> 8)在 XML,空格会被保留,即输入多少个空格,就会有多少个空格在 XML 中保留。 9)XML 中以 LF (即 \n)来表示换行。

4、XML 元素

1、基本概念

XML 元素指从(且包括)开始标签直到(且包括)结束标签的部分。 元素可包含元素、文本或两者的混合,元素也可拥有属性。

2、元素命名规则

1)名称可以含数字、字母及其它字符。 2)名称不能以数字或标点符号开始。 3)名称不能以字符 “xml” (或 XML、Xml) 开始。 4)名称不能包含空格。 5)可使用任意名称,没有保留的字词。

3、命名习惯

1)使名称具有描述性。 2)名称应当比较简短。 3)避免 “-” “.” “:” 字符。 4)XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素,实用做 法是实用数据库的名称规则来命名 XML 文档中的元素。

5、XML 属性

1、基本

XML 元素可在开始标签中包含属性,属性通常提供不属于数据组成部分的信息。 在 HTML 中,属性用起来很便利,但在 XML 中,应尽量避免使用属性,若信息感觉起来 很像数据,就尽量使用子元素。 元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。

2、XML 属性常引起的问题

1)属性无法包含多重的值(元素可以) 2)属性无法描述树结构(元素可以) 3)属性不易扩展(为未来的变化) 4)属性难以阅读和维护 尽量使用元素来描述数据,仅使用属性来提供与数据无关的信息。

6、XML 验证

1、基本

拥有正确语法的 XML 被称为”形式良好”的 XML。 通过 DTD 验证的XML 是”合法”的 XML。

2、DTD (Document Type Definition)

1、简介和作用

作用是定义 XML 文档的合法构建模块,它使用一系列合法的元素定义文档的结构。

2、在 XML 中内部声明

格式为: <!DOCTYPE 根源素 [元素声明]> 以下是个例子:

<?xml version=”1.0”?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don’t forget the meeting!</body> </note>

DOCTYPE 第一行定义此文档是 note 类型的文档。 第二行定义 note 元素有四个元素。 接下来几行定义 note 元素的四个元素分别为 #PCDATA 类型。

3、在 XML 中外部文档声明

格式为: <!DOCTYPE 根元素 SYSTEM “文件名”> 其中,”文件名”是磁盘上的某个以 .dtd 为后缀的文件,如下例子:

<?xml version=”1.0”?> <!DOCTYPE note SYSTEM “note.dtd”> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don’t forget the meeting!</body> </note>

其中 note.dtd 文件为:

<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

4、使用 DTD 的原因

通过 DTD,每个 XML 文件均可携带一个有关其自身格式的描述。 通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据,而自己的程序也可 使用某个标准的 DTD 来验证从外部接收的数据。 还可使用 DTD 来验证自身的数据。

5、XML-DTD 构建模块

所有的 XML 及 HTML 文档均由以下简单的构建模块构成: 1)元素 2)属性 可提供有关元素的额外信息。 3)实体 实体是用来定义普通文本的变量,实体引用是对实体的引用,如 &nbsp;、&lt; 、 &gt;、&amp; 、&quot;、&apos; 4)PCDATA 意思是被解析的字符数据 (Parsed Character Data)。字符数据是在 XML 文档开始 标签和结束标签之间的数据,PCDATA 是会被解析器解析的文本,这些文本将被解析 器检查实体及标记。文本中的标签会被当作标记处理,而实体会被展开。 5)CDATA 意思是字符数据 (Character Data),是不会被解析器解析的文本。

6、DTD 元素

1、格式

<!ELEMENT 元素名称 类别> 或 <!ELEMENT 元素名称 (元素内容)>

2、空元素

<!ELEMENT 元素名称 EMPTY> 例: <!ELEMENT br EMPTY> XML 例子: <br />

3、只有 PCDATA 的元素

<!ELEMENT 元素名称 (#PCDATA)>

4、带有任何内容的元素

<!ELEMENT 元素名称 ANY> 则该元素可包含任何解析数据的组合。

5、带有子元素(序列)的元素

<!ELEMENT 元素名称 (子元素名称1 [, 子元素名称2, 子元素名称3,…])> 当子元素按由逗号分隔开的序列进行声明时,这些元素必须按照相同的顺序出现在文 档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。

6、声明只出现一次的子元素

<!ELEMENT 元素名称 (子元素名称)>

7、声明至少出现一次的子元素

<!ELEMENT 元素名称 (子元素名称+)>

8、声明出现零次或多次的子元素

<!ELEMENT 元素名称 (子元素名称*)>

9、声明”非…/即…”类型的内容

例: <!ELEMENT note (to, from, (message|body))> 即 message 和 body 只能且只能有一个出现。

10、声明混合型的内容

例: <!ELEMENT note (#PCDATA|to|from)> 即 “note” 元素可包含零次或多次的 #PCDATA 或 to 或 from。

7、DTD 属性

1、基本格式

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

2、etc

参考 ~/Web/XML/DTD_属性.pdf 文件.

8、DTD 实体

1、基本

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。 实体引用是对实体的引用。 实体可在内部或外部进行引用。

2、内部实体声明

<!ENTITY 实体名称 “实体的值”>

DTD 例子: <!ENTITY writer “Bill Gates”> <!ENTITY copyright “Copyright W3School.com.cn”>

XML 例子: <author>&writer;&copyright</author>

3、外部实体声明

<!ENTITY 实体名称 SYSTEM “URL/URI”>

DTD 例子: <!ENTITY writer SYSTEM “http://www.w3school.com.cn/dtd/entities.dtd”> <!ENTITY copyright SYSTEM “http://www.w3school.com.cn/dtd/entities.dtd”>

XML 例子: <author>&writer;&copyright</author>

9、DTD 验证

可通过 XML 解析器进行验证. 当您试图打开某个 XML 文档时,XML 解析器有可能会产生错误。通过访问 parseError 对象,就可以取回引起错误的确切代码、文本甚至所在的行。 注释:load( ) 方法用于文件,而 loadXML( ) 方法用于字符串。

例: var xmlDoc = new ActiveXObject(“Microsoft.XMLDOM”) xmlDoc.async=”false” xmlDoc.validateOnParse=”true” xmlDoc.load(“note_dtd_error.xml”)

document.write(“<br>Error Code: “) document.write(xmlDoc.parseError.errorCode) document.write(“<br>Error Reason: “) document.write(xmlDoc.parseError.reason) document.write(“<br>Error Line: “) document.write(xmlDoc.parseError.line)

关闭验证 通过把 XML 解析器的 validateOnParse 设置为 “false”,就可以关闭验证。

例: var xmlDoc = new ActiveXObject(“Microsoft.XMLDOM”) xmlDoc.async=”false” xmlDoc.validateOnParse=”false” xmlDoc.load(“note_dtd_error.xml”)

document.write(“<br>Error Code: “) document.write(xmlDoc.parseError.errorCode) document.write(“<br>Error Reason: “) document.write(xmlDoc.parseError.reason) document.write(“<br>Error Line: “) document.write(xmlDoc.parseError.line)

3、XML Schema

1、基本

它是基于 XML 的 DTD 替代者。 它描述 XML 文档的结构。 XML Schema 语言也称做 XML Schema 定义(XML Schema Definition, XSD).

2、XML Schema 优势

1)XML Schema 支持数据类型 2)XML Schema 使用 XML 语法 3)XML Schema 可保护数据通信 当数据从发送方被发送到接收方时,其要点是双方应有关于内容的相同的”期望值”. 通过 XML Schema,发送方可以用一种接收方能够明白的方式来描述数据. 4)XML Schema 可扩展

3、使用的例子

定义一个名为 “note.xsd” 的文件:

<?xml version=”1.0”?> <xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema” targetNamespace=”http://www.w3school.com.cn” xmlns=”http://www.w3school.com.cn” elementFormDefault=”qualified”>

<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>

</xs:schema>

然后引用:

<?xml version=”1.0”?> <note xmlns=”http://www.w3school.com.cn” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.w3school.com.cn note.xsd”>

<to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don’t forget the meeting!</body> </note>

还有一个例子:

<?xml version=”1.0” encoding=”utf-8”?> <xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema” elementFormDefault=”qualified”>

<xs:element name=”persons”> xs:complexType xs:sequence <xs:element name=”person” maxOccurs=”unbounded”> xs:complexType xs:sequence <xs:element name=”full_name” type=”xs:string”/> <xs:element name=”chilf_name” type=”xs:string” minOccurs=”0” maxOccurs=”10”/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

<?xml version=”1.0” encoding=”utf-8”?> <persons xmlns=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”family.xsd”>

<person> <full_name>Tony Smith</full_name> <child_name>Cecilie</child_name> </person>

<person> <full_name>Davai Simth</full_name> <child_name>Jogn</child_name> <child_name>mike</child_name> <child_name>kylee</child_name> <child_name>mary</child_name> </person>

<person> <full_name>Michael Simith</full_name> </person> </persons>

4、XSD-schema 元素

具体参见 ~/Web/XML/XSD_schema_元素.pdf 文件.

5、XSD 简易元素

简易元素指仅包含文本的元素,它不包含其它任何的元素或属性。 基本格式: <xs:element name=”xxx” type=”yyy”/> 其中,”xxx” 指元素名称,”yyy” 指元素的类型,常用的类型有: 1)xs:string 2)xs:decimal 3)xs:integer 4)xs:boolean 5)xs:date 6)xs:time 以下两个例子是对简易元素设置默认值和固定值: <xs:element name=”color” type=”xs:string” default=”red”/> <xs:element name=”color” type=”xs:string” fixed=”fixed”/>

6、XSD 属性

简易元素没有属性。若某个元素拥有属性,则它会被当作某种复合类型。但属性本身 是作为简易元素被声明的。 格式: <xs:attribute name=”xxx” type=”yyy”/> 其中,”xxx” 指属性名称,”yyy” 指属性类型,类型同 XSD 简易元素的类型。 XSD 属性也有默认值和固定值的用法,同 XSD 简易元素中相应的用法。 缺省情况下,属性是可选的,但也可设置为属性必选: <xs:attribute name=”xxx” type=”yyy” use=”required”/>

7、XSD 限定

具体参考 ~/Web/XML/XSD_限定_facets.pdf 文件.

8、XSD 复合元素

指包含其它元素及/或属性的 XML 元素,有 1)空元素 如 <product pid=”1234” /> 2)包含其它元素的元素 如 <employee> <firstname>zhang</firstname> <lastname>fei</lastname> </employee> 3)仅包含文本的元素 如 <food type=”dessert”>Ice cream</food> 4)包含元素和文本的元素 如 <description> It happened on <date lang=”zh-cn”>09/02/2010</datea>… </description>

9、XSD 复合空元素

它不能包含内容,只能包含属性。 如 <product prodid=”1234”/> 可用如下方法定义:

<xs:element name=”product”> xs:complexType <xs:attribute name=”prodid” type=”xs:positiveInteger”/> </xs:complexType> </xs:element>

<xs:element name=”product” type=”prodtype”/> xs:complexType <xs:attribute name=”prodtype” type=”xs:positiveInteger”/> </xs:complexType> 具体定义方法参见 ~/Web/XML/XSD复合空元素 .

10、XSD 复合元素——仅含元素

如 <person> <firstname>zhang</firstname> <lastname>fei</lastname> </person>

可用如下方法定义:

<xs:element name=”person”> xs:complexType xs:sequence <xs:element name=”firstname” type=”xs:string”/> <xs:element name=”lastname” type=”xs:string”/> </xs:sequence> </xs:complexType> </xs:element>

<xs:element name=”person” type=”persontype”/> <xs:complexType name=”persontype”> xs:sequence <xs:element name=”firstname” type=”xs:string”/> <xs:element name=”lastname” type=”xs:string”/> </xs:sequence> </xs:complexType>

11、XSD 仅含文本的复合元素

它可包含文本和属性。 如 <shoesize country=”France”>35</shoesize>

可用如下方法定义:

<xs:element name=”shoesize”> xs:complexType xs:simpleContent <xs:extension base=”xs:integer”> <xs:attribute name=”country” type=”xs:string”/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

<xs:element name=”shoesize” type=”shoetype”> <xs:complexType name=”shoetype”> xs:simpleContent <xs:extension base=”xs:integer”> <xs:attribute name=”country” type=”xs:string”/> </xs:extension> </xs:simpleContent> </xs:complexType>

其中可用 restriction 替代 extension.

12、XSD 复合指示器

具体参见 ~/Web/XML/XSD复合指示器.pdf 文件.

13、XSD any 元素

详见 ~/Web/XML/XSD_any_元素.pdf 文件。

14、XSD anyAttribute 元素

详见 ~/Web/XML/XSD_anyAttribute_元素.pdf 文件.

15、XSD 元素替换

没看明白,详见 ~/Web/XML/XSD元素替换.pdf 文件.

7、XML 显示

1、通过 CSS 来显示

这种方法不常用,方法同 html 中使用 css,只是换换标签。 在 xml 文件中引用 css 文件: <?xml-stylesheet type=”text/css” href=”css 文件位置”?>

2、通过 XSLT 来显示

1、简介

XSL (EXtensible Stylesheet Language) 可用来描述如何显示 XML 文档。 包括三部分: 1)XSLT : 用于转换 XML 文档的语言,将 XML 文档转换成 XHTML 文档或其它 XML 文档。 2)XPath : 在 XML 文档中导航的语言。 3)XSL-FO : 用于格式化 XML 文档的语言。 XSL 样式表本身也是一个 XML 文件。