2015-06-18 8 views
5

Chcę przeprowadzić walidację schematu przy użyciu pliku XSD. Kiedy zaimportować plik XSD do Eclipse, bez uruchamiania klasy walidacji, mam następujący błąd:src-resolve: Nie można rozwiązać nazwy "ds: Signature" na komponencie "deklaracja elementu"

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

jestem trochę nowy XML vs procesu walidacji XSD. Chociaż szukałem podobnych pytań w google, nie mogłem dowiedzieć się, co jest nie tak.

Plik XSD jest następujący:

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

Jak należy zmodyfikować XSD, aby naprawić ten błąd?

+0

Um ... Weźmy 'DS:' z 'ref', lub dodać do schematu' ds' jak masz 'xs'. (Trzeba rzeczywiście czytać zarówno komunikat o błędzie i XSD. Trzy linie od dołu). –

+0

chyba że element Podpis nie istnieje w schemacie „xmldsig-core-schema.xsd”. zauważ, że w xml rozróżniana jest wielkość liter. – Kachna

Odpowiedz

6

Jeśli masz xmldsig-core-schema.xsd w tym samym katalogu, co plik XSD, a jeśli jest taka sama jak this XSD, to nie powinno być uzyskiwanie błąd o braku rozwiązać ds:Signature.

Dlatego podejrzewam, że import się niepowodzeniem, a tracisz lub ignorując ostrzeżenie, takie jak:

[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> .

Spróbuj XSD jako test; ładuje się bezpośrednio z adresu URL dla 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> 

Przetestowałem powyższy XSD i stwierdził, że eliminuje błąd rozdzielczości, które zostały z widzeniem.

+1

aktualizację podpis lokalizacja schematu z adresem URL wydaje work.I nie mają błąd anymore.thank ciebie tak dużo! – bsel

1

Jako alternatywę można buforować lokalnie na xmldsig-core-schema.xsd, umieścić go w tym samym katalogu swojego schematu XSD, pozwól oryginał

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

Ten problem można rozwiązać importowania pliku z W3C stronie i oszczędź czas wykonania.

Powiązane problemy