引入Schema文档
若想通过XML Schema文件对某个XML文档进行约束,必须得将XML文档与Schema文件进行关联。在XML文档中引入Schema文件有两种方式,具体如下:
1、 使用名称空间引入XML Schema文档
在使用名称空间引入XML Schema文档时,需要通过属性xsi:schemaLocation来声明名称空间的文档,xsi:schemaLocation属性是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance
”中定义的,在该属性中,包含了两个URI,这两个URI之间用空白符分隔。其中,第一个URI是名称空间的名称,第二个URI是文档的位置,接下来,通过一个案例来演示如何使用名称空间引入XML Schema文档,如例1所示。
例1 book.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <书架 xmlns="http://www.it315.org/xmlbook/schema"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.it315.org/xmlbook/schema
5 http://www.it315.org/xmlbook.xsd">
6 <书>
7 <书名>JavaScript网页开发</书名>
8 <作者>张孝祥</作者>
9 <售价>28.00元</售价>
10 </书>
11 </书架>
在例1中, schemaLocation属性用于指定名称空间所对应的XML Schema文档的位置,由于schemaLocation属性是在另外一个公认的标准名称空间中定义的,因此,在使用schemaLocation属性时,必须要声明该属性所属的命名空间。
需要注意的是,一个 XML 实例文档可能引用多个名称空间,这时,可以在schemaLocation属性值中包含多对名称空间与它们所对应的XML Schema文档的存储位置,每一对名称空间的设置信息之间采用空格分隔。接下来通过一个案例来演示在一个XML文档中引入多个名称空间名称的情况,如例2所示。
例2 xmlbook.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <书架 xmlns="http://www.it315.org/xmlbook/schema"
3 xmlns:demo="http://www.it315.org/demo/schema"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://www.it315.org/xmlbook/schema
6 http://www.it315.org/xmlbook.xsd
7 http://www.it315.org/demo/schema
8 http://www.it315.org/demo.xsd">
9 <书>
10 <书名>JavaScript网页开发</书名>
11 <作者>张孝祥</作者>
12 <售价 demo:币种="人民币">28.00元</售价>
13 </书>
14 </书架>
2、 不使用名称空间引入XML Schema文档
在XML文档中引入XML Schema文档,不仅可以通过xsi:schemaLocation属性引入名称空间的文档,还可以通过xsi:noNamespaceSchemaLocation属性直接指定,noNamespaceSchemaLocation属性也是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance
”中定义的,它用于定义指定文档的位置。接下来,通过一个案例来演示noNamespaceSchemaLocation属性在XML文档中的使用,如例3所示。
例3 xmlbook.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:noNamespaceSchemaLocation="xmlbook.xsd">
4 <书>
5 <书名>JavaScript网页开发</书名>
6 <作者>张孝祥</作者>
7 <售价>28.00元</售价>
8 </书>
9 </书架>
在例3中,文档xmlbook.xsd与引用它的实例文档位于同一目录中。