更新时间:2021-07-22 来源:黑马程序员 浏览量:
若想通过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
<?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元</售价> </书> </书架>
在例1中, schemaLocation属性用于指定名称空间所对应的XML Schema文档的位置,由于schemaLocation属性是在另外一个公认的标准名称空间中定义的,因此,在使用schemaLocation属性时,必须要声明该属性所属的命名空间。
需要注意的是,一个 XML 实例文档可能引用多个名称空间,这时,可以在schemaLocation属性值中包含多对名称空间与它们所对应的XML Schema文档的存储位置,每一对名称空间的设置信息之间采用空格分隔。接下来通过一个案例来演示在一个XML文档中引入多个名称空间名称的情况,如例2所示。
例2 xmlbook.xml
<?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元</售价> </书> </书架>
2、 不使用名称空间引入XML Schema文档
在XML文档中引入XML Schema文档,不仅可以通过xsi:schemaLocation属性引入名称空间的文档,还可以通过xsi:noNamespaceSchemaLocation属性直接指定,noNamespaceSchemaLocation属性也是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance”中定义的,它用于定义指定文档的位置。接下来,通过一个案例来演示noNamespaceSchemaLocation属性在XML文档中的使用,如例3所示。
例3 xmlbook.xml
<?xml version="1.0" encoding="UTF-8"?> <书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xmlbook.xsd"> <书> <书名>JavaScript网页开发</书名> <作者>张孝祥</作者> <售价>28.00元</售价> </书> </书架>
在例3中,文档xmlbook.xsd与引用它的实例文档位于同一目录中。