SAXParseException; src-resolve: Cannot resolve name '...', um eine(n) 'Typ-definition' - Komponente
Ich versuche zu tun, schema-Validierung, die derzeit mit einem javax.xml.validation.SchemaFactory
. Leider, Wenn ich rufen Sie die newSchema(Source schema)
Funktion, bekomme ich die folgende Fehlermeldung:
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.<init>(SimpleXmlValidator.java:83)
... 75 more
Den utility:ObjectStatusDateType
- element wird in der .xsd-Datei, die ich leite in der newSchema(Source schema)
Funktion. Ich bin der Import der ObjectStatusDateType
von den anderen .xsd-Datei, für die ich dreifach überprüft den Pfad der Datei. Die utility
- namespace wird deklariert richtig.
Hier ist ein Ausschnitt des Schemas leite ich in die Funktion (LocateCoverageIndexesByIdentifier_3_0.xsd):
<xs:import namespace="http://www.sei.com/utility/1/" schemaLocation="../../utility/InvocationOutcome_1_0.xsd"/>
<xs:import namespace="http://www.sei.com/utility/1/" schemaLocation="../../utility/ObjectHistory_1_0.xsd"/>
<xs:import namespace="http://www.sei.com/individual/component/4/" schemaLocation="../PrivateComponentTypes_4_0.xsd"/>
<xs:import namespace="http://www.sei.com/individual/shared/5/" schemaLocation="../IndividualTypes_5_0.xsd"/>
.
. <!-- Some more stuff -->
.
<xs:element name="coveragePeriod"
type="utility:ObjectStatusDateType"
minOccurs="0"/>
- Und dies ist von ObjectHistory_1_0.xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.sei.com/utility/1/"
targetNamespace="http://www.sei.com/utility/1/"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
.
. <!-- Some more stuff -->
.
<xs:complexType name="ObjectStatusDateType">
<xs:sequence>
<xs:element name="effectiveDate" type="xs:date"/>
<xs:element name="cancelDate" type="xs:date" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Und schließlich die Bohne
<bean id="locateClaimValidator"
class="com.sei.ec.xml.validation.SimpleXmlValidator">
<constructor-arg>
<value>classpath:WEB-INF/schemas/xsd/individual/ci/LocateCoverageIndexesByIdentifier_3_0.xsd
</value>
</constructor-arg>
</bean>
Hat jemand auf diese Art von Problem vor?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dieses Problem vor. Alles validiert in Eclipse, aber brach beim laufen. Haben Sie Ihre schemas importieren mehr als ein schema in der gleichen namespace?
Etwas wie, das wird nicht funktionieren, sondern wird validiert werden, die von Eclipse:
Viele Menschen haben festgestellt, diese Art von Problem vor. Es kommt, Wann Ihre Prüfung ist, aus welchem Grund auch immer, nicht das laden der schema-Dokumente, die Sie wollen, es zu laden (und denke, dass es geladen wird).
Um die Diagnose zu bestätigen: versuchen Sie, die Einführung eines Fehler-sagen, ein Wohlgeformtheit Fehler -- in ObjectHistory_1_0.xsd, und sehen, ob das system meckert.
Verwendung von Xerces dies kann gelöst werden, indem die Einstellung der Funktion
http://apache.org/xml/features/honour-all-schemaLocations
zu wahren.Die Funktion
http://apache.org/xml/features/honour-all-schemaLocations
ist nur verfügbar,von Xerces 2.7.0. Aktuelle Versionen von Java 5.0 und 6.0 haben eine Xerces 2.6.2
built-in. Daher verwenden Sie einen neueren Xerces-Bibliothek, um für diese zu arbeiten,
dh. kopieren
xml-apis.jar
undxercesImpl.jar
zu<jdk-home>/jre/lib/endorsed
understellen einer
jaxp.properties
Datei in<jdk-home>/jre
mit der LinieIch hatte das gleiche problem beim ausführen des maven-jaxb2-plugin-maven-plugin.
Nach explizit mentionning die xsd-Datei zu analysieren, es funktionierte wie ein Charme:
xsd
Datei (es sind mehrerexsd
- Dateien im gleichen Verzeichnis).