2
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 に配置されます。しかし、後続の着信メッセージでは、メッセージ

「データ要素定義が見つかりません」エラーなしでスキーマに対して検証されます。誰かを持つことができます

XSD が ws02 esb にどのように読み込まれたか教えてください。これはキャッシュされていますか?

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>
4

1 に答える 1

1

メインの XSD を編集し、インポート スキーマの場所を指定する必要があります。つまり、2 番目のスキーマのレジストリ パスを最初のメイン スキーマに正しく指定する必要があります。その後、メッセージがシーケンスにヒットしたときにのみ、スキーマを解決できます。

于 2013-03-26T17:05:12.990 に答える