一、XML Schema 根元素
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="www.broadnew.com"
elementFormDefault="qualified"
attributeFormDefault="qualified">
...
</xs:schema>
代码分析:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
①xmlns属性表示此Schema文件中用到的元素、属性、数据类型的语义约束的命名空间,由于Schema也是xml,也需要语义约束。
②xs表示任意一个标识,当前文档如果用到xmlns所对应的命名空间的元素、属性、数据类型时,需加前缀xs:
targetNamespace="http://www.broadnew.com"
显示被此 schema 文件的命名空间定义为"http://www.broadnew.com"
elementFormDefault="qualified"
指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
attributeFormDefault="qualified"
指出任何 XML 实例文档所使用的且在此 schema 中声明过的属性必须被命名空间限定。
二、XML中引用Schema
1.引用无命名空间Schema
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/Users/Administrator/Desktop/%e7%96%af%e7%8b%82XML%e8%ae%b2%e4%b9%89/Chapter4/4.6/subElement.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
表示导入了"http://www.w3.org/2001/XMLSchema-instance"中的XML Schema
xsi:noNamespaceSchemaLocation="file:///C:/Users/Administrator/Desktop/%e7%96%af%e7%8b%82XML%e8%ae%b2%e4%b9%89/Chapter4/4.6/subElement.xsd"
表示导入自定义的XML Schema
2.引用有命名空间Schema
①每引入一个有命名空间的XML Schema就为XML根元素增加一个xmlns[:xxx]属性,其中[:xxx]是可选的,但最多只能有一个xmlns属性,其他的都必须是形如xmlns:xxx的属性,而且xxx应该互不相同。
②如果XML根元素已有xsi:schemaLocation属性(xsi前缀可变),则在该属性值后为该XML Schema追加一项,追加项要保持schemaNamaspace schemaURI的格式。如果XML根元素中还没有xsi:schemaLocation属性,则为其增加该属性,并设置属性值为schemaNamaspace schemaURI。