1、概述
1)XML:可扩展标记语言(eXtensible Markup Language),XML技术由W3C组织发布,目前遵循的是2000年发布的XML1.0规范。它被设计的宗旨是描述数据,而非显示数据。
2)XML中的数据必须通过软件程序来解析执行或显示,如IE,这样的解析程序称之为解析器(Parser)。
2、XML语法(重点)
一个XML文档一般由如下几部分组成:文档声明、元素、元素属性、注释、CDATA区等。
1)文档声明:
<?xml version=”1.0″ encoding=”UTF-8″?>
注意:
①XML文档声明必须绝对出现在第一行。
②encoding属性声明文档所使用的字符编码,默认为UTF-8。一定要注意的是:保存在磁盘上的文件编码要与声明的编码一致。乱码就是存、取文件时用的码表不一致导致的(☆)。
2)元素:XML元素就是指XML文件中出现的标签。
①一个XML元素(标签)有如下两种书写形式:
单标签:<myTag /> 双标签:<myTag>content</myTag>
②一个XML文档必须有且只有一个根元素(根标签)。
③由于在XML中,空格和换行都作为原始内容被处理,所以在项目上线运行时XML应采用下图第一段所示,开发时采用第二段的形式:
3)元素的属性:属性值一定要用引号(单引号或双引号)引起来。
4)注释:<!–这是XML注释–> 注释不能嵌套。
5)CDATA区(character data),它的作用是将标签当做普通文本内容,如:
<![CDATA[<blog>www.flyne.org</blog>]]>
其中的红色文本将会被当做普通文本而不是标签。
3、XML约束技术
1)为什么需要约束?
XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错(这点毋庸置疑)。
XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。
2)两个概念:
格式良好的XML:遵循XML语法的XML文档。
有效的XML:遵循约束文档的XML。
3)常用约束技术:DTD技术(简单、面临淘汰)和Schema技术。
4、DTD约束技术(看懂DTD即可)
1)DTD:文档类型定义(Document Type Definition),用来约束XMl的书写规范。
2)先从一个简单的DTD案例来个感性认识:
3)在XML中引用DTD的两种方式(<!DOCTYPE >声明):
方式一:在XML文档中直接定义DTD约束。如下:
方式二(重点 + 推荐):在XML中引入外部DTD文档(.dtd),外部DTD文档必须以UTF-8编码保存,根据外部DTD文档在本地还是在网络上又有下面两种写法:
① 引用本地DTD文档:<!DOCTYPE 根元素 SYSTEM “DTD文档路径”>,如:
<!DOCTYPE 书架 SYSTEM “book.dtd”>
② 引用网络上的DTD文档:<!DOCTYPE 根元素 PUBLIC “DTD名称” “URL”>
4)DTD语法(确保看懂DTD文档 ☆):DTD文档主要涉及以下内容的定义:
①定义元素:<!ELEMENT 元素名称 使用规则>
关于(子元素)的定义有如下规则:
②定义元素属性,语法如下:
<!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
…
>
5)编程校验XML文档的有效性:
原理:IE5以上浏览器内置了XML解析工具:Microsoft.XMLDOM,开发人员可以编写JS代码,利用这个解析工具装载XML文件,并对XML文件进行DTD验证(约束校验)。
步骤:
① 创建XML文档解析器对象
var xmldoc = new ActiveXObject(“Microsoft.XMLDOM”);
②开启XML校验
xmldoc.validateOnParse=true;
③装载XML文档:xmldoc.load(“book.xml”);
④获取错误信息:
xmldoc.parseError.reason(错误原因)
xmldoc.parseError.line(错误所在行)
5、Schema约束技术
学习重点:根据约束文档写出XML文件。
XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性。XML Schema现在是W3C的标准,正逐步取代DTD。
1)一些特点
①XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd。
②一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。
③和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为schema。
2)先从一个简单的Schema案例来个感性认识:
根据此Schema文件写出的XML文件如下:
3)名称空间(☆):
在XMLSchema中,每个约束模式文档都可以被绑定到一个唯一的名称空间,名称空间用一个唯一的URI表示。
在XML文件中书写标签时,可以通过名称空间(xmlns)来声明当前编写的标签来自哪个Schema约束文档。
4)在XML中引入Schema文件(使用名称空间)
通常在XML文档中的根结点中使用schemaLocation属性来声明一个文档所遵循的Schema文件的具体位置,此属性有两个值,第一个值是需要使用的名称空间,第二个值是Schema文件的位置,两者之间用空格分隔。如上面例子中的:xsi:schemaLocation=“http://www.flyne.org book.xsd”
5)在XML中引入Schema文件(不使用名称空间)
如:<书架 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation=”xmlbook.xsd”>
6)在XML中引入多个Schema文件(使用名称空间)
7)在XML Schema文档中声明名称空间(见上例中book.xsd所示)
targetNamespace属性用于指定schema文档中声明的元素属于哪个名称空间。
elementFormDefault元素用于指定,该schema文档中声明的根元素及其所有子元素都属于targetNamespace所指定的名称空间。
- 本文固定链接: http://www.flyne.org/article/430
- 转载请注明: 东风化宇 2014年08月08日 于 Flyne 发表