猿问

如何使用Java和带有include的XSD验证XML文件?

我正在使用Java 5 javax.xml.validation.Validator来验证XML文件。我已经完成了一个仅使用导入的架构,并且一切正常。现在,我尝试使用另一种使用导入和包含的模式进行验证。我的问题是主模式中的元素被忽略,验证表明它找不到它们的声明。


这里是我建的模式:


InputStream includeInputStream = getClass().getClassLoader().getResource("include.xsd").openStream();

InputStream importInputStream = getClass().getClassLoader().getResource("import.xsd").openStream();

InputStream mainInputStream = getClass().getClassLoader().getResource("main.xsd").openStream();

Source[] sourceSchema = new SAXSource[]{includeInputStream , importInputStream, 

mainInputStream };

Schema schema = factory.newSchema(sourceSchema);

现在这是main.xsd中声明的摘录


<xsd:schema xmlns="http://schema.omg.org/spec/BPMN/2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:import="http://www.foo.com/import" targetNamespace="http://main/namespace" elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xsd:import namespace="http://www.foo.com/import" schemaLocation="import.xsd"/>

    <xsd:include schemaLocation="include.xsd"/>

    <xsd:element name="element" type="tElement"/>

    <...>

</xsd:schema>

如果我将包含的XSD的代码复制到main.xsd中,则可以正常工作。如果没有,验证将找不到“ Element”的声明。


眼眸繁星
浏览 579回答 3
3回答
随时随地看视频慕课网APP

相关分类

Java
我要回答