2015-06-18 13 views
5

Ich möchte eine Schema-Validierung mit einer XSD-Datei durchführen. Wenn ich die XSD-Datei importieren, Eclipse, ohne die Validierung Klasse ausgeführt wird, habe ich die folgende Fehlermeldung:src-resolve: Der Name 'ds: Signature' kann nicht in eine 'element declaration' Komponente aufgelöst werden

src-resolve: Cannot resolve the name 'ds:Signature' to an 'element declaration' component

Ich bin irgendwie neu zu XML vs XSD Validierungsprozess. Obwohl ich bei Google nach ähnlichen Fragen gesucht habe, konnte ich nicht herausfinden, was hier falsch ist.

Die XSD-Datei ist wie folgt:

<?xml version="1.0" encoding="UTF-8"?> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xerces="http://xerces.apache.org" 
     xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
     xmlns:abc="http://abc.123.com" targetNamespace="http://abc.123.com" 
     xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#" elementFormDefault="qualified" 
     attributeFormDefault="unqualified"> 
     <xs:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="XAdES.xsd"/> 
     <xs:import namespace="http://uri.etsi.org/01903/v1.4.1#" schemaLocation="XAdESv141.xsd"/> 
     <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> 
    <xs:complexType name="headerType"> 
     <xs:sequence> 
      <xs:element name="doorNumber" type="xs:int"/> 
      <xs:element ref="ds:Signature"/> 
     </xs:sequence> 
    </xs:complexType> 

Wie soll ich die XSD ändern, diesen Fehler zu beheben?

+0

Um ... Nimm das 'ds:' aus dem 'ref', oder füge ein Schema für' ds' hinzu, wie du 'xs' hast. (Sie müssen tatsächlich sowohl die Fehlermeldung und die XSD lesen. Drei Zeilen von unten.) –

+0

vielleicht, dass das Element Signatur nicht im Schema "xmldsig-core-schema.xsd" vorhanden ist. Beachten Sie, dass bei xml die Groß-/Kleinschreibung beachtet wird. – Kachna

Antwort

6

Wenn Sie xmldsig-core-schema.xsd im selben Verzeichnis wie die XSD haben, und wenn ist es das gleiche wie this XSD, dann sollten Sie nicht einen Fehler zu einem Fehler bekommen ds:Signature zu lösen.

Daher vermute ich, dass der Import fehlschlägt, und Sie verpassen oder eine Warnung wie die folgenden zu ignorieren:

[Warning] try.xsd:9:56: schema_reference.4: Failed to read schema document 'xmldsig-core-schema.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema> .

dieses XSD als Test Versuchen; lädt es direkt aus der URL für xmldsig-core-schema.xsd:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
      xmlns:abc="http://abc.123.com" 
      targetNamespace="http://abc.123.com" 
      elementFormDefault="qualified" 
      attributeFormDefault="unqualified"> 
    <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" 
      schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/> 
    <xs:complexType name="headerType"> 
    <xs:sequence> 
     <xs:element name="doorNumber" type="xs:int"/> 
     <xs:element ref="ds:Signature"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

ich die oben XSD getestet haben und festgestellt, dass es die Auflösung Fehler beseitigt, die Sie sehen waren.

+1

Aktualisieren Signatur Speicherort mit der URL scheint zu arbeiten.Ich habe den Fehler nicht mehr.Vielen Dank! – bsel

1

Als Alternative können Sie lokal die xmldsig-core-schema.xsd zwischenzuspeichern, setzen Sie es in demselben Verzeichnis Ihres XSD-Schema, ein dann lassen Sie Ihre ursprünglichen

<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> 

Dieses Ihr Problem der Import einer Datei von W3C-Website lösen wird und Sparen Sie Zeit der Ausführung.