从Xml文档内部引用Xml Schema验证

在创建了一个Xml Schema文档之后,就可以用它来验证xml文档的有效性了。做起来很简单,只需要在xml文档根元素内引用该schema文件就可以了。不过,根据xml schema文档是否包含targetNamespace属性,xml文档内的引用有以下两种方式:
1、使用noNamespceSchemaLocation属性引用schema文件
当xml schema文档不包括targetNamespace属性时,应当通过xml文档根元素的noNamespaceSchemaLocation属性及W3C的schmea实例命名空间(xmlns:xsi="http://www.w3.org/2001/XMLScheam-instance")来引用名xml schema文件。下面的例子引用不包含"targetNamespace"属性的名为"noTargetNS.xsd"的架构文件:


LinY
42

2、使用schemaLocation属性引用schema文件
然而,如果xml schmea文件包含了一个targetNamespace 属性,在xml文档中就将通过schemaLocation属性而不是noNamespaceSchemaLocation属性来引用schema文档。而且,这个属性所指定的值必须是完整的。它需要包含以空格分开的两部分,前一部分是Uri,这个Uri与schema文档的targetNamespace属性内部引用的Uri是一致的;后一部分是schema文件完整路径及名称。另外,Xml文档的根元素也必须声明schema实例名字空间(xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"),下面的例子引用包含"targetNamespace"属性的名为yesTargetNS.xsd架构文件:


xsi:schemaLocation="http://www.tuha.net yesTargetNS.xsd"
Xmlns="http://www.tuha.net">
XiaoM
25

在xml文档内部正确地引用schema文件之后,在解析xml文档时将执行验证。

原文地址:https://www.cnblogs.com/beta2013/p/3377414.html