Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有嵌套导入的模式验证java中的XML_Java_Xml_Xsd_Xsd Validation_Xerces - Fatal编程技术网

使用带有嵌套导入的模式验证java中的XML

使用带有嵌套导入的模式验证java中的XML,java,xml,xsd,xsd-validation,xerces,Java,Xml,Xsd,Xsd Validation,Xerces,我正在尝试使用嵌套导入根据xsd模式验证XML字符串: types.xsd implementationsV2.1.xsd ... geofencingServiceV2.1.xsd ... 具有以下验证代码: private void validateResponseSchema(字符串响应)抛出IOException、SAXException{ SchemaFactory factory=SchemaFactory.newInstance(xmlstants.W3C\u XML\

我正在尝试使用嵌套导入根据xsd模式验证XML字符串:

types.xsd


implementationsV2.1.xsd


...
geofencingServiceV2.1.xsd


...
具有以下验证代码:

private void validateResponseSchema(字符串响应)抛出IOException、SAXException{
SchemaFactory factory=SchemaFactory.newInstance(xmlstants.W3C\u XML\u SCHEMA\u NS\u URI);
Schema Schema=factory.newSchema(新类路径资源(“types.xsd”).getURL());
Validator Validator=schema.newValidator();
validator.validate(新的StreamSource(新的ByteArrayInputStream(response.getBytes()));
}
我得到了一个错误:

org.xml.sax.SAXParseException;systemId:file:/…/types.xsd;行号:358 ;;栏目号:87;src resolve.4.2:解析组件“gef:modeId”时出错。
检测到“gef:modeId”位于命名空间中”http://www.example.com/geofencing,但此命名空间中的组件不可从架构文档“file:/…/types.xsd”引用。
如果名称空间不正确,可能需要更改“gef:modeId”的前缀。如果这是正确的命名空间,则应在“file:/…/types.xsd”中添加适当的“import”标记。
如果我直接在
types.xsd
中导入
geofineering
名称空间,它可以工作,但我不明白为什么需要这样做

  • 我在这里包括了一个名称空间,但在
    实现中有几个名称空间
  • 我无法轻松修改正在验证的XSD
  • 通过调试,我可以确认链接文件已正确解析
有没有可能我错过的选择?这个错误似乎是特定于后台使用的java库(ApacheXerces),因为模式在其他情况下是有效的