的SAXParseException; src-resolve:无法将名称“…”解析为(n)’类型定义’组件

我正在尝试进行模式validation,目前使用的是javax.xml.validation.SchemaFactory 。 不幸的是,当我调用newSchema(Source schema)函数时,我收到以下错误:

 Caused by: org.xml.sax.SAXParseException; systemId: file:/C:/Users/C42056/Documents/workspace-sts-3.2.0.RELEASE/cec-sample-ws-integration-2-war/target/classes/WEB-INF/schemas/xsd/individual/PrivateComponentTypes_4_0.xsd; lineNumber: 33; columnNumber: 88; src-resolve: Cannot resolve the name 'utility:ObjectStatusDateType' to a(n) 'type definition' component. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.getGlobalDecl(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseNamedElement(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseLocal(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.traverseLocalElements(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source) at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source) at com.sei.ec.xml.validation.SimpleXmlValidator.loadSchema(SimpleXmlValidator.java:70) at com.sei.ec.xml.validation.SimpleXmlValidator.(SimpleXmlValidator.java:83) ... 75 more 

utility:ObjectStatusDateType元素用于.xsd文件,我将其传递给newSchema(Source schema)函数。 我从另一个.xsd文件导入ObjectStatusDateType我已经检查了文件路径。 utility命名空间也正确声明。

这是我传递给函数的模式的片段(LocateCoverageIndexesByIdentifier_3_0.xsd):

     . .  .  

这是来自ObjectHistory_1_0.xsd:

  . .  .       

最后,豆子

   classpath:WEB-INF/schemas/xsd/individual/ci/LocateCoverageIndexesByIdentifier_3_0.xsd    

以前有人遇到过这类问题吗?

我以前遇到过这个问题。 所有在Eclipse中validation的东西,但在运行时破坏了。 您的任何模式是否将多个模式导入同一名称空间?

这样的东西不起作用,但将由Eclipsevalidation:

   

很多人以前遇到过这类问题。 无论何种原因,无论何时您的validation器都没有加载您希望它加载的架构文档(并认为它正在加载),它就会出现。

要确认诊断:尝试在ObjectHistory_1_0.xsd中引入错误(例如,格式错误),并查看系统是否抱怨。

使用Xerces可以通过将functionhttp://apache.org/xml/features/honour-all-schemaLocations设置为true来解决。

functionhttp://apache.org/xml/features/honour-all-schemaLocations仅适用于Xerces 2.7.0。 Java 5.0和6.0的当前版本内置了Xerces 2.6.2。 因此,必须使用较新的Xerces库才能使其工作,即。 将xml-apis.jarxml-apis.jar复制到/jre/lib/endorsed并在/jre包含该行的jaxp.properties文件

 javax.xml.validation.SchemaFactory\:http\://www.w3.org/2001/XMLSchema=org.apache.xerces.jaxp.validation.XMLSchemaFactory 

我在执行maven插件jaxb2-maven-plugin时遇到了同样的问题。 在明确提到要解析的xsd文件后,它就像一个魅力:

  org.codehaus.mojo jaxb2-maven-plugin 1.6   xjc  xjc     MySchema.xsd src/main/java