我有几个XML文件,我必须根据程序中的Schema进行验证。我有本地存储的Schema文件,当我获得XML文件时,我知道要应用哪个模式。当我尝试根据模式验证我的一个XML文件时,我遇到一个奇怪的错误,并且此模式使用import语句导入某个名称空间。这是我想要应用于我的XML的示例XSD:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:test="http://www.test.com/test" xmlns:tns="http://www.test.com/test/folder/targetnamespace" targetNamespace="http://www.test.com/test/folder/targetnamespace" elementFormDefault="qualified">
<import namespace="http://www.test.com/test" schemaLocation="test.xsd"/>
<element name="tag1">
<complexType>
<sequence minOccurs="1" maxOccurs="1">
<choice>
...
...
</choice>
...
...
<element name="..." type="..." minOccurs="1" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<complexType name="tag2">
<sequence>
<choice minOccurs="1" maxOccurs="1">
...
...
</choice>
<element ref="test:entries" minOccurs="1" maxOccurs="1"/>
</sequence>
</complexType>
</schema>
test.xsd与此xsd文件位于同一位置。我试图针对此模式验证的XML如下所示:
<?xml version="1.0" encoding="utf-8"?>
<tag1 xmlns="http://www.test.com/test/folder/targetnamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.test.com/test">
<id>ABCDEF</id>
<profile>
...
...
<test:entries>
...
...
</test:entries>
</profile>
</tag1>
关于出了什么问题的任何想法?我得到的XML中是否缺少模式文件的位置?我希望根据我在验证例程中加载的Schema文件验证此XML。有什么想法吗?
这是导入的架构:
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.test.com/test/folder/targetnamespace"
elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.test.com/test">
<complexType name="EntriesType">
<sequence>
...
...
</sequence>
</complexType>
<complexType name="...">
...
...
</complexType>
<element name="entries" type="tns:EntriesType"></element>
</schema>
答案 0 :(得分:0)
我设法通过在验证器例程中加载XSD文件来摆脱这种情况。即使其中一个XSD文件被导入另一个,但即使在更正了对命名空间的所有引用之后,它也总是会失败。所以我决定在我的验证器例程中加载两个XSD文件,然后它开始工作。