WS02 ESB无法加载数据元素定义

时间:2013-01-17 22:00:01

标签: wso2 wso2esb

I have validation sequence that will validate incoming XML message using defined XSD. I have 

使用本地注册表指定主XSD文件(TP.xsd)的文件位置。 TP.xsd定义是

导入位于同一物理位置的另一个XSD(CORE.xsd)。所以当我尝试测试

代码,第一条消息无法验证,因为找不到

的数据元素定义 位于CORE.xsd的

甚至存在定义。但是在随后的传入消息上,消息

针对架构进行验证,但未找到“未找到数据元素定义”错误。可以有人

告诉我如何在ws02 esb中加载XSD?这是缓存吗?

This is the error thrown in ws02 server logs:
2013-01-15 18:53:39,922 [-] [HttpServerWorker-6] ERROR ValidateMediator Error creating a new schema objects for schemas : [TPXSD-KEY]
org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'DateTimeType' 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.getGlobalDecl(Unknown Source)
        at org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseNamedElement(Unknown Source)
        at org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseGlobal(Unknown Source)
        at org.apache.xerces.impl.xs.traversers.XSDHandler.traverseSchemas(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)

Snippet of Core.xsd file:
         <xsd:complexType name="DateTimeType">
        <xs:sequence>
            <xs:element ref="Year"/>
            <xs:element ref="Month"/>
            <xs:element ref="Day"/>
            <xs:element ref="Hour" minOccurs="0"/>
            <xs:element ref="Minute" minOccurs="0"/>
            <xs:element ref="Second" minOccurs="0"/>
            <xs:element ref="Fraction" minOccurs="0"/>
            <xs:element ref="TimeZone" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

1 个答案:

答案 0 :(得分:1)

您必须编辑主XSD,指向导入架构的位置。也就是说,您必须正确地将第二个模式的注册表路径提供给第一个主模式。然后,只有当消息命中序列时,它才能解析模式。