Donnerstag, Juni 4, 2020

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?

InformationsquelleAutor Mac | 2013-09-17

4 Kommentare

  1. 10

    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:

    <import namespace="http://www.whatever.gov" location="../wherever" />
    <import namespace="http://www.whatever.gov" location="../folder/superawesomeschema.xsd" />
    • Diese lösen es. Sorry, sollte ich zunächst mehr von der Datei in meinem ersten code-tag (aus, die Sie Bearbeiten). Ich war auch zwei xsd-Dateien unter sei.com/utility/1 namespace, von denen die ObjectHistory_1_0.xsd. Es ist immer das dumme Zeug…
    • sorry, es wird nicht funktionieren, um zu überprüfen, wenn ein anderer namespace enthalten ist ?
    • diese Antwort gelöst.
  2. 6

    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.

    • Du hattest Recht.. Wenn ich etwas ändern über ObjectHistory_1_0.xsd, die Fabrik nicht abholen das Problem
  3. 4

    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 und xercesImpl.jar zu <jdk-home>/jre/lib/endorsed und
    erstellen einer jaxp.properties Datei in <jdk-home>/jre mit der Linie

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

    Ich 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:

    <plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>jaxb2-maven-plugin</artifactId>
     <version>1.6</version>
        <executions>
         <execution>
          <id>xjc</id>
          <goals>
           <goal>xjc</goal>
          </goals>
         </execution>
        </executions>
        <configuration>
         <schemaFiles>MySchema.xsd</schemaFiles>
         <outputDirectory>src/main/java</outputDirectory>
        </configuration>
    </plugin> 
    • Das hilft mir auch – ausdrücklich darauf genau einem xsd Datei (es sind mehrere xsd – Dateien im gleichen Verzeichnis).

Kostenlose Online-Tests