的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.jar
和xml-apis.jar
复制到
并在
包含该行的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