在xml中,定义了namespace,如果要验证xml文档的有效性,需要这些namespace相关的xsd文档。
引入xsd有的方式:
通过schemaLocation方式:
1.xsi:schemaLocation
<?xml version="1.0" encoding="GB2312"?>
<books xmlns="http://www.sunxin.org/bks"
xmlns:p="http://www.sunxin.org/people"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sunxin.org/bks bks.xsd
http://www.sunxin.org/people people.xsd">
这个例子是从这里来的,
简单说明一下:
-
books的缺省命名空间:“http://www.sunxin.org/bks”
-
又定义了一个前缀p: xmlns:p=“http://www.sunxin.org/people” (如果不需要有xsd对应,可以随意定义;如果需要验证,这个namespace必须和xsd中的TargetNamespace一致)
-
xmlns:xsi是xml标准的一个前缀,作用在xsi:schemaLocation中体现出来
-
xsi:schemaLocation中引入对个URI对,
-
第一个为xsd的TargetNamespace(这个必须和后面的xsd中的TargetNamespace匹配),
-
第二个代表从哪里找到这个xsd文件
-
在schemaLocation中,可以出现多个类似的匹配对(URI URL )
-
-
这样前面第一个前缀,通过定义的namespace和schemaLocation中的xsd就可以对应起来了;
2.前缀:schemaLoaction
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:other=“http://www.w3.org/XML/1998/namespace”
other:schemaLocation="xml.xsd">
….
</xs:schema>
说明:
- 定义了前缀other,然后申明other前缀的xsd
3.import 和 include
import: 可以用于不同的命名空间
include: 必须是同一命名空间
<import namespace="http://test.com/test" schemaLocation="http://test.com/test/test.xsd" />