XML

------------------------------XML------------------------------------

XML(Extensible Markup Language) 是一种通用的数据交换格式,许多系统的配置文件都使用 XML 格式

JSP 文档也逐步向 XML 语法格式过渡,许多项目都采用 XML 作为数据交换格式

例如在 Tomcat 5.5/webapps/jsp-examples/xml/xml.jsp 的这个文件

就是用 XML 语法格式所编写的 JSP 文件

传统配置文件与 XML 配置文件的对比

配置文件就是记录应用程序的配置信息的文件

传统配置文件的格式:

#Bb.Properties

DBServer=192.168.0,100

Database=emp

Port=1433

Username=xxx

Password=123

每一行表示一个配置信息 , 但很难表达出具有层次结构的信息

 

XML 配置文件的格式:

<web-app> 

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

可以很清晰的表达出层次关系

 

XML 的起源与作用

最初是为了解决计算机之间的电子文档的交换标准而制定的

在线电子商务活动交换的电子文档必须采用某种标准格式,统一电子文档的标准规范是电子商务的基础

HTML 不适合作为电子商务的文档标准

SGML(Standard Generalized Markup Language) 过于复杂 , 无法适应网络上的日常应用

W3C 1998 2 月批准了 XML 1.0 版本。

XML 是对 SGML 的简化,语法与 HTML 非常相似,具备了 HTML 的简单性,并具有 SGML 的强大功能和可扩展性。

 

XML HTML 的比较

1.  HTML 将数据和其显示效果混在一起,它是一种表现技术 ;XML 文档只是存储了数据和描述了数据之间的关系,没有规定该如何显示数据

2.  HTML 的格式要求比较松散 ;XML 是非常严格的标记语言。

3.  HTML 的标记集合是固定的 ;XML 只是提供了一个标准,人们可以按照这个标准来定义自己专用的标记

4.  XML 允许粒度更新 ; HTML 不支持类似功能。

5.  XML 不是 HTML 的升级,也不是 HTML 的替代产品。

6.  HTML 目前已经不再是 WEB 标记的标准,它已经被 XHTML 所取代 XHTML HTML XML 的混合物,是 XML WEB 领域的一种应用。

 

XML 与数据库的比较

XML 文档可以看成是一个非常小型的数据库

1.  一个 XML 文档就像数据库中一个表,具有三个要素 : 文档结构,文档数据和文档样式

2.  XML 文档的结构相当于数据库的表结构

3.  XML 标签内嵌套的数据就相当于数据库表中的某个字段内的数据

4.  数据库表中的数据可以采用表格、表单或其他形式显示,还可以用程序来查询、运算、修改。 XML 文档中的数据也可以被其他应用程序查询、运算、修改和多种显示方式

5.  多个 XML 文档的元素之间还可以像数据库的表字段一样定义主外键关系

 

XML 的基本语法

1.  文档声明

在一个完整的 xml 文档中,必须包含一个 xml 的文档声明语句

声明语句必须是 xml 文档的第一行

( 注: xml 文件的后缀名必须是大写的 .XML ,小写的 xml 电脑不能识别出该格式文件! )

例如:一个简单的声明语法:

<?xml version=”1.0” encoding=”GB2312” standalone=”yes” ?>

(1) xml 属性表明当前的文档是一个 xml 格式的文档,

(2) version 属性说明当前文档所遵循的版本号是 1.0

(3) encoding 属性说明文档的字符编码,如果没有指定字符编码,默认使用 UTF-8 UTF-16

windows 的记事本程序默认使用的字符编码是 GB2312( 国标 2312)

(4) standalone 属性为 yes 时说明该 xml 文档为独立文档,不与其他文件,如 CSS DTD 文件等联合使用

(5) standalone 属性必须在 encoding 属性之后来设置

2.  元素定义

(1) 一个 xml 元素由一个标记来定义,包括开始和结束标记以及其中的内容,例如:

< 书名 >Think In Java</ 书名 >

(2) 一个元素中可以嵌套若干子元素

(3) 格式良好的 xml 文档必须有且仅有一个根元素,其他元素都是这个根元素的子孙元素

(4) 空元素可以不使用结束标记 例如: <img></img> 转化为 <img src=”log.gif” />

(5) 所有元素都必须合理嵌套,不允许标签交叉,例如:

<b>Welcome To<i>Google </b></i>

(6) 元素的标记名称规范

可以包含字母、数字以及其他一些可见字符,但必须遵守下面的一些规范:

    区分大小写,例如 <P> <p> 是两个不同的标记

    不能以数字或 ”_”( 下划线 ) 开头

    不能以字符组合 xml( XML 、或 Xml ) 开头

    不能包含空格

    名称中间不能包含冒号 (:)

3.  属性定义

(1) 一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:

< 售价 单位 =” ”>58</ 售价 >

(2) 属性值一定要用双引号 ”” 或单引号 ’’ 括起来

(3) 属性遵循与标签相同的命名规范

(4) 属性可以被改成用子元素来描述同样的信息,例如:

< 售价 >

      < 单位 > </ 单位 >

      < 价格 >58</ 价格 >

</ 售价 >

    两种方法描述的语义是完全一样的,只是在程序处理的时候他们的处理方式有所区别

4.  注释

(1) ”<!—- 注释 -->” 这种格式加入注释

(2) xml 声明之前不能有注释,因为 xml 声明语句必须作为 xml 文件的第一行

(3) 一对注释符号之中不能包含另一对注释符号,例如:

<!—- 大段注释

……

    <!— 局部注释 -->

……

-->

5.  空格和换行的处理

(1) 对于 xml 中的标签以外的所有空格和换行, xml 解析程序都要一个一个如实地交给下游程序去处理,与 html 的这方面不同

(2) 下面两段内容的意义是不一样的

第一段: < 网址 >www.google.com</ 网址 >

第二段:

< 网址 >

www.google.com

</ 网址 >

第一段不带有回车等,第二段包含了回车换行,和一个 tab 的制表符

(3) xml 中,空格和换行都作为原始内容被处理,所以,在编写 xml 文件时,使用换行和缩进等方式让原文件中的内容清晰可读的 良好 书写习惯可能要被迫改变

6.  CDATA

(1) CDATA 区所要解决的问题是: xml 文档中包含类似 ”Elements look like <this>” 的文本,其中的 ”<this>” 将被解析程序解释成一个元素,而人们实际想要的是 ”<this>” 带有 <> 本身的文本信息

(2) CDATA 区全称为 character data ,以 <![CDATA[ 不解析的数据 ]]> 格式,在 [] 中嵌入不想被解析程序解析的原始数据,解析器不对 CDATA 区中的内容进行解析,而是将这些数据原封不动地交给下游程序去处理

(3) <![CDATA[]]> CDATA 几个字母必须要大写

(4) CDATA 区中的起始和结束处有和没有空格和换行字符是有区别的,例如:

<![CDATA[www.google.com]]>

<![CDATA[

www.google.com

]]>

(5) 如果想要在 CDATA 区内部出现字符串 ]]> ,该如何解决

方法: <![CDATA[google]] ]]><![CDATA[> ]]>

这样用两个 <![CDATA[]]> 标记拆分 ]]> 即可解决  

7.  特殊字符

特殊字符      替代符号

&        &amp;

<        &lt;

Ø            &gt;

“        &quot

,        &apos;

8.  处理指令 (processing instruction)

(1) 处理指令是 processing instruction 的中文翻译,通常简称 PI ,用来为处理 xml 文档的应用程序提供指示信息

(2) 处理指令格式为 <? ?> xml 声明语句就是最常见的一种处理指令

(3) xml 分析器把处理指令原封不动地传给应用程序,由应用程序来解释这个指令,按照它所提供的信息进行处理。例如:在某个 xml 文档中可以包含下面的语句来告诉浏览器使用 book.css 控制其显示效果

<?xml-stylesheet type=”text/css” href=“book.css”?>

 

XML 约束模式

1.  约束模式定义了 xml 文档中允许出现的元素名 ( 也就是标记名 ) 、元素中的属性、元素中的内容类型以及元素之间的嵌套关系和出现顺序

2.  xml 约束模式不仅定义了 xml 文档的词汇表,它还定义了一个 xml 文档必须遵循什么样的结构

3.  如果把一个 xml 文件看作是数据库中的一个表,那么 xml 约束模式就相当于数据库表结构的定义,如果为一个 xml 文档指定了约束模式,那么它必须满足约束模式所规定的结构、数据类型和数据关联等内容

4.  xml 约束模式语言是用来创造 xml 标记语言的语言,这种用于定义另一种语言的语言被称为元语言

5.  约束模式通常都是在一个单独的文件中进行定义,这个文件被称作模式文档,依照模式文档编写的 xml 文档被称为实例文档

6.  先后出现的 xml 约束模式语言有 XML DTD,XDR,SOX,XML Schema 等,其中应用最广泛和具有代表意义的是 XML DTD XML Schema

 

 

DTD(Document Type Definition)

1.  中文名称是文档类型定义,是一个早期的 xml 约束模式语言。 DTD 文件应该使用 UTF-8 Unicode 编码

2.  xml 文档中引入外部 DTD 文件

(1) xml 文档通过使用 DOCTYPE 声明语句 ( 文档类型定义语句 ) 来指明它所遵循的 DTD 文件, DOCTYPE 声明语句紧跟在 XML 文档声明语句后面,有两种格式:

<!DOCTYPE 文档类型名称 SYSTEM “DTD 文件的 URL”>

<!DOCTYPE 文档类型名称 PUBLIC “DTD 名称 ” “DTD 文件的 URL”>

SYSTEM 关键字表示该 xml 文件所遵循的是一个本地计算机或某个组织内部所使用的 DTD 文件

PUBLIC 关键字表示该 xml 文件所遵循的是由一个权威机构制定的公开提供给特定行业或公众的 DTD 文件

示例程序:

<!DOCTYPE 书架 SYSTEM “book.dtd”>

<!DOCTYPE web-app PUBLIC

“-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN”

“http://java.sun.com/dtd/web-app_2_3.dtd”>

    DTD 标识名称应符合一些标准的规定,对于 ISO 标准的 DTD ISO 三个字母开头。

    被改进的非 ISO 标准的 DTD 以加号 ”+” 开头

    未被改进的非 ISO 标准的 DTD 以减号 ”-” 开头

对于一些已经制订成为了行业标准的 DTD 文件,一些相应的解释器程序可能已经将他们内嵌进去,所以在解析时并不一定要到从指定的 URL 上进行下载

(2) book.xml 中引入 book.dtd 文件

book.XML

<?xml version="1.0" encoding="gb2312" ?>

<!DOCTYPE 书架 SYSTEM "book.dtd">

< 书架 >

       < >

           < 书名 >java 就业培训教程 </ 书名 >

           < 作者 > 张孝祥 </ 作者 >

           < 售价 >39.00 </ 售价 >

       </ >

       < >

           < 书名 >JavaScript 网页开发 </ 书名 >

           < 作者 > 张孝祥 </ 作者 >

           < 售价 >28.00 </ 售价 >

       </ >

</ 书架 >

 

book.dtd(DTD 文件应该使用 UTF-8 Unicode 编码 )

<!ELEMENT 书架 ( +)>

<!ELEMENT ( 书名 , 作者 , 售价 )>

<!ELEMENT 书名 (#PCDATA)>

<!ELEMENT 作者 (#PCDATA)>

<!ELEMENT 售价 (#PCDATA)>

 

3.  xml 文档中直接嵌入 DTD 定义语句

格式:

<?xml version=”1.0” encoding=”UTF-8” standalone=”yes” ?>

<!DOCTYPE 根元素名 [

DTD 定义语句

……

]>

4.  引入外部 DTD 文件的同时加入 DTD 定义语句

(1) 引用内部:

<!DOCTYPE 书架

[

    !ENTITY copyright SYSTEM “http://localhost:8008/Test/copyright.xml”

]>

(2) 引用外部:

<!DOCTYPE web-app PUBLIC

“-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN”

“http://java.sun.com/dtd/web-app_2_3.dtd”   

[

    !ENTITY copyright SYSTEM “http://localhost:8008/Test/copyright.xml”

]>

(3) 示例: book.XML

<?xml version="1.0" encoding="gb2312" ?>

<!DOCTYPE 书架

[

    <!ELEMENT 书架 ( +)>

<!ELEMENT ( 书名 , 作者 , 售价 )>

<!ELEMENT 书名 (#PCDATA)>

<!ELEMENT 作者 (#PCDATA)>

<!ELEMENT 售价 (#PCDATA)>

 

]>

< 书架 >

       < >

           < 书名 >java 就业培训教程 </ 书名 >

           < 作者 > 张孝祥 </ 作者 >

           < 售价 >39.00 </ 售价 >

       </ >

       < >

           < 书名 >JavaScript 网页开发 </ 书名 >

           < 作者 > 张孝祥 </ 作者 >

           < 售价 >28.00 </ 售价 >

       </ >

</ 书架 >

 

5.  元素定义

book.dtd 文件定义了 book.xml 文件中的各个元素和它们的相互关系

(1) 其中的每一个 <!ELEMENT …> 语句用于定义一个元素 , 它的一个语法规则如下:

<!ELEMENT  元素名称   使用规则 >

例如:

”<!ELEMENT ( 书名 , 作者 , 售价 )>” 表示元素名称,

”( 书名 , 作者 , 售价 )” 为使用规则。元素的使用规则定义了元素中包含的组成成分,以及每种组成成分出现的次数,次序

( 书名 , 作者 , 售价 )” 表示元素中要嵌套书名,作者,售价子元素,是若干子元素的组合,并且这些子元素是要按顺序出现的

”#PCDATA” parsed character data 的简写,表示元素中嵌套的内容是普通文本字符串 ;”

使用规则还可以设置为 EMPTY ANY

    EMPTY :表示该元素为一个空元素,元素中的内容为空

       例如: <!ELEMENT HR EMPTY> 定义的元素形式为 <HR />

ANY: 元素当中的内容可以是任何形式的,可以是普通的字符串,可以是若干个子元素的组合,可以是子元素和普通文本字符串的组合,或者是空元素

(2) 一个元素的各个组成成份之间可以有各种关系

<!ELEMENT ( 书名 作者 售价 )> 三个子元素在 xml 文件中可以按任意顺序出现

<!ELEMENT ( 书名 , 作者 , 售价 )> 三个子元素在 xml 文件中的顺序必须与此一致

<!ELEMENT ( 书名 | 作者 | 售价 )> 三个子元素在 xml 文件中只能出现其中一个

(3) 在元素的使用规则中可以定义子元素出现的次数

+” 表示它修饰的成份必须出现一次或多次。

?” 表示它修饰的成份出现一次或不出现。

*” 表示它修饰的成份出现一次或多次,也可以不出现。

表示它修饰的成份必须且只能出现一次。

(4) 一对圆括号 () 可用于将括在其中的内容组合成一个可统一操作的分组,分组中可以嵌套更小的分组

例如: <!ELEMENT (( 书名 *, 作者 ?, 售价 )*| 注释 )>

6.  属性定义

(1) 语法格式:

<!ATTLIST 元素名

    属性名 1 属性类型 设置说明

    属性名 1 属性类型 设置说明

    ……

例如:

<!ATTLIST 商品

    类别 CDATA #REQUIRED

    颜色 CDATA #IMPLIED

    名称 CDATA #FIXED “ 电脑

    价格 CDATA “5000”

xml 文件中的应用:

< 商品 类别 =” 服装 颜色 =” 黄色 ”> …… </ 商品 >

< 商品 类别 =” 服装 ”> …… </ 商品 >

(2) 属性类型

CDATA   表示属性值的内容为普通的文本字符串,属性值当中出现的特殊字符需要使用转义字符序列来表示

ENUMERATED 表示所设置的属性值只能是一组值当中的某一个,在定义时不会出现该关键字,例如: <!ATTLIST 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) “ 鸡肉 ”>

ID 用于唯一的标识 xml 文档中的某个元素,

IDREF IDREFS

NMTOKEN NMTOKENS

NOTATION

ENTITY ENTITYS

(3) 设置说明

#REQUIRED 表示属性必须被设置

#IMPLIED 表示属性可有可无

#FIXED 表示属性的取值总是固定为某一个特定的值,在定义时就要为该属性设置固定值,在 xml 文件的应用中,就不能再更改该属性的值了

设置说明部分还可以直接使用默认值

7.  实体定义

实体的根本作用是为一段文本内容创建一个别名,以后在 xml 文档中就可以多次引用这个别名, xml 解析器程序将把 xml 文档由出现的别名引用转变成其所对应的文本内容

格式: <!ENTITY > 语句用于定义一个实体

实体可以分为两种类型:引用实体和参数实体

(1) 引用实体,在 dtd 中定义, xml 中使用

格式:

<!ENTITY 实体名称 实体内容 ”>

<!ENTITY 实体名称 SYSTEM “ 外部 xml 文档的 url”>

xml 中的引用方式: & 实体名称 ;

示例程序:

<!DOCTYPE copyright [

    <!ENTITY copyright SYSTEM “http://www.it315.org/copyright.xml”>

]>

……

&copyright;

(2) 参数实体,在 dtd 中定义, dtd 中使用

格式:

<!ENTITY % 实体名称 实体内容 ”>

xml 中的引用方式: % 实体名称 ;

示例程序:

dtd 中定义: <!ENTITY % TAG_NAMES “ 姓名 |EMAIL| 电话 | 地址 ”>

dtd 中使用:

<!ELEMENT % 个人信息 (%TAG_NAMES;| 生日 )>

<!ELEMENT % 客户信息 (%TAG_NAMES;| 公司名 )>

 

Schema

XML Schema 约束语言,它是另一种约束 XML 的语言,它出现的目的就是为了克服 DTD 的局限性,比如 DTD 并不能很好地实现应用程序的不同模块间的相互协调,缺乏对文档结构、属性、数据类型等约束的足够描述等,它不是使用 XML 语法的

1.  XML Schema DTD 的比较

(1) XML Schema 符合 xml 语法结构

(2) DOM SAX XML API 很容易解析出 XML Schema 文档中的内容

(3) XML Schema 采用与 XML 文档同样的合法性验证机制

(4) XML Schema 对名称空间支持的非常好

(5) XML Schema XML DTD 支持更多的数据类型,并支持用户自定义新的数据类型

(6) XML Schema 定义约束的能力非常强大,可以对 XML 实例文档作出细致的语义限制

(7) XML Schema 基本上满足了关系模式在数据描述上的需要

2.  通过一个例子初步认识 XML Schema

book.xml

<?xml version="1.0" encoding="gb2312" ?>

<!--  引入外部的 Schema 文件 -->

< 书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:noNameSpaceSchemaLocation="book.xsd">

       < >

              < 书名 >JavaScript 网页开发 </ 书名 >

              < 作者 > 张孝祥 </ 作者 >

              < 售价 >28.00 </ 售价 >

       </ >

</ 书架 >

 

book.xsd

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

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <xs:element name=' 书架 '>

      <xs:complexType>

         <xs:sequence maxOccurs='unbounded'>

            <xs:element name=' '>

               <xs:complexType>

                   <xs:sequence>

                      <xs:element name=' 书名 ' type="xs:string"/>

                     <xs:element name=' 作者 ' type="xs:string"/>

                     <xs:element name=' 售价 ' type="xs:string"/>

                   </xs:sequence>

               </xs:complexType>

            </xs:element>

         </xs:sequence>

      </xs:complexType>

   </xs:element>

</xs:schema>

 

注解:

(1) Schema 文件的后缀名为 .xsd

(2) <xs:complexType> 定义一个复杂类型 ,” 书架 这个元素包含多个子元素 , 所以 书架 是一个复杂类型 , <xs:complexType> 标签中可以定义所有的子元素和属性

(3) 用于声明子元素的语句,必须嵌套在 <xs:sequence> 标签中,在 xml 文件中子元素出现的顺序必须与标签中定义的子元素声明的顺序相同

(4) <xs:sequence maxOccurs='unbounded'> 标签中的 maxOccurs 属性表示:嵌套在 <xs:sequence> 中子元素的内容可以在 xml 文档中出现多次

3.  名称空间的概念

在不同的约束模式文档中,出现表示不同含义的相同标记名称是完全有可能的

(1) 每个约束模式文档被赋以一个唯一的名称空间,每个名称空间都用一个唯一的 URI(Uniform Resource Identifier, 统一资源标识符 ) 表示

(2) xml 实例文档中为来自不同模式文档的元素增加不同的前缀部分,元素名称前增加的各个前缀名称分别代表各个模式文档的名称空间

例如:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <xs:element name=' 书架 '>

4.  名称空间的声明

(1) 基本格式: xmlns: 前缀名称 =”URI”

(2) 在任何元素中声明的名称空间,只对该元素及其中嵌套的所有子孙元素有效,声明名称空间的元素自身上也可以使用代表该名称空间的前缀

(3) QName(Qualified Name, 限定名 ) 是指用冒号 (:) 把前缀与本地部分进行分隔的名称,即被限定在了某个名称空间中的名称

5.  默认名称空间

可以将名称空间声明中的前缀省略

基本格式: xmlns=”URI”

例如:

< 书架 xmlns="http://www.w3.org/2001/XMLSchema">

    < >

           < 书名 >JavaScript 网页开发 </ 书名 >

           < 作者 > 张孝祥 </ 作者 >

           < 售价 >28.00 </ 售价 >

    </ >

    </ 书架 >

6.  属性的名称空间问题

(1) xml 实例文档中通常只需要将元素限定于该模式文档的名称空间中,而不需要将该元   素的属性限定于名称空间中

例如: <xi:include xmlns:xi=”http://www.w3.org/2001/XInclude”

Href=”http://example.com/std/defs” parse=”xml” />

(2) 如果属性名称中有一个前缀部分,该属性将被限定在该前缀所指定的名称空间中。如果属性名称中没有前缀部分,那么该属性就不属于任何名称空间。属性不受默认名称空间的影响。

例如:

<x xmlns=”http://www.w3.org” xmlns:nl=”http://www.w3.org”>

     <good a=”1” nl=”2” />

</x>

x good 都属于默认名称空间中的元素,而在 good 中又用到了 nl 元素,但 nl 元素并不属于默认名称空间, nl 是属于 xmlns:nl=”http://www.w3.org”

(3) a=”1” 属性名称中没有前缀部分,那么该属性就不属于任何名称空间。属性不受默认名称空间的影响,所以 a 也不属于默认的名称空间

7.  内置属性

(1) xml 规范中,还定义了两个内置属性 xml:space xml:lang 属性

前缀名 ”xml” 已经被隐式地绑定到了一个名称空间上,内置属性名称以 xml: 作为前缀,自定义的属性名不能以 xml: 作为前缀,否则 xml 解析程序就会报告错误

(2) xml:space 属性用于设置下游应用程序应该如何处理解析器传递的空格等字符,设置值只能是 ”default” ”preserve”

preserve 表示要把空格字符当成普通的文本字符一样来对待

default 表示会自行去处理空格字符

例如:

< 网址 xml:space=”preserve”>    www.it315.org    </ 网址 >

表示该标签中的空格有效

(3) xml:lang 属性用于设置元素的本地化语言信息, ISO-639 规范中规定了代表各个国家和地区的本地化语言的名称,例如 ”en” 表示英文、 ”la” 表示拉丁文、 ”zh” 表示中文、 ”zh-CN” 表示中文 ( 中国 ) ”zh-TW” 表示中文 ( 台湾地区 )

例如:产品元素有一个到期日期的属性

<product xml:lang=”zh-CN” release-date=”2002-08-18”/>

<product xml:lang=”en-US” release-date=”8/18/2002”/>

这两个是 zh-CN( 中国 ) en-US( 美国 ) 设置日期的不同格式

(4) 在某个元素中设置了 xml:space xml:lang 属性,嵌套在该元素中的子孙元素都将沿袭其设置结果

8.  引入 XML Schema 文档

(1) 引入一个 Schema 文档

例如:

<?xml version=”1.0” encoding=”UTF-8”?>

< 书架 xmlns="http://www.it315.org/xmlbook/Schema"

  xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

  xsi:schemaLocation=”http://www.it315.org/xmlbook/schema”

         “http://www.it315.org/xmlbook.xsd”

     < >

            < 书名 >JavaScript 网页开发 </ 书名 >

            < 作者 > 张孝祥 </ 作者 >

            < 售价 >28.00 </ 售价 >

     </ >

</ 书架 >

schemaLocation 属性的设置值中包含有两个部分,第一个部分就是名称空间的 URI ,第二个部分就是该名称空间所标识的 XML Schema 文件的位置或 URL 地址,这两个部分之间用空格分隔

书架,书等元素都是属于 xmlns="http://www.it315.org/xmlbook/Schema" 的默认名称空间之内的,还要为这个默认名称空间用 schemaLocation 属性来设置 schema 文件的位置,但是 schemaLocation 属性又是属于 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” 名称空间范围之内的,所以调用 xsi:schemaLocation 属性前需要加上前缀 xsi:

(2) 引入多个 Schema 文档

<?xml version=”1.0” encoding=”UTF-8”?>

< 书架 xmlns=http://www.it315.org/xmlbook/Schema

  xmlns:demo=”http://www.it315.org/demo/schema”

  xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

  xsi:schemaLocation=”http://www.it315.org/xmlbook/schema”

         “http://www.it315.org/xmlbook.xsd”

         “http:// www.it315.org/demo/schema”

“http:// www.it315.org/demo.xsd” >

     < >

            < 书名 >JavaScript 网页开发 </ 书名 >

            < 作者 > 张孝祥 </ 作者 >

            < 售价 demo: 币种 =” 人民币 ”>28.00 </ 售价 >

     </ >

</ 书架 >

定义了 demo xsi 两个名称空间,并分别为两个名称空间指定了 schema 文件的实际路径

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值