XML Schema基础语法
一、XML Schema根元素
schema根元素语法如下:
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
…
</xsd:schema>
在XSD中必须定义一个且只能定义一个schema根元素。根元素中包括模式的约束、XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些属性。Schema作为XML文档的约束文件,本身也是一个XML文档,也需要约束文件
1.1 xmlns:xsd
这里xmlns:xsd是schema属性,用于指定当前XML文档引入的语义约束,其中:xsd可以是任意一个标识名,代表的是语义约束定义的所有元素的命名空间。白话:xmlns:xsd中的xsd可以任意写什么,但要唯一。也可以不写,但不写的xmlns只能有一个。后面会解释
1.2 定义无命名空间Schema
<?xml version=”1.0” encoding=”utf-8”?>
<xs:schema xmlns:xs=”http://www.w3c.org/2001/XMLSchema”>
</xs:schema>
1.3 定义一个有命名空间的Schema
<?xml version=”1.0” encoding=”utf-8”?>
<xs:schema xmlns:xs=”http://www.w3c.org/2001/XMLSchema”
targetNamespace=”自己的命名空间”>
</xs:schema>
二、XML文档中引入Schema
2.1 XML文件引入无命名空间的Schema
1. 先在根元素中导入一个命名空间
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
注意:
http://www.w3c.org/2001/XMLSchema 命名空间—>约束文件–>约束 Schema
http://www.w3.org/2001/XMLSchema-instance 命令空间–>约束文件–>约束 XML
2. 使用xsi
注意现在xsi代表http://www.w3.org/2001/XMLSchema-instance这个网络Schema文件,为什么引入它呢?
因为我们引入自定义Schema要用到它,官方的,用它的noNamespaceSchemaLocation属性
2.2 XML文件引入有命名空间的Schema
a) 使用xmlns[:xxx] 引入有命令空间的Schema, [:xxx]是可选的, 但是最多只有一个xmlns,其他的必须是xmlns:xxx形式,而且:xxx不能相同
b) 使用 xsi:schemaLocation属性来引入有命名空间的Schema的位置