2012-07-31 4 views
2

내 xml 파일의 유효성을 검사하는 데 몇 가지 문제가 있습니다. "cvc-elt.1 : 'xsi : settings'요소의 선언을 찾을 수 없습니다."라는 오류 메시지가 나타납니다. 내 XML 파일에. 나를 위해, 내 코드는 정확하지만 분명히 그것은해서는 안됩니다 ..Eclipse에서 xml 파일의 XML 유효성 확인

내 xml 파일 :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2001/XMLSchema" > 

<xs:element name="settings"> 
<xs:complexType> 
<xs:sequence> 

<xs:element name="info"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element type="xs:float" name="Version"/> 
     <xs:element type="xs:date" name="Release_date"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="config"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element type="xs:string" name="Betriebssystem"/> 
     <xs:element type="xs:string" name="Wildcard"/> 
     <xs:element name="Errormessages"> 
      <xs:complexType> 
      <xs:sequence> 

       <xs:element name="View1"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element type="xs:string" name="Message1"/> 
        <xs:element type="xs:string" name="Message2"/> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 

       <xs:element name="View3"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element type="xs:string" name="Message1"/> 
        <xs:element type="xs:string" name="Message2"/> 
        <xs:element type="xs:string" name="Message3"/> 
        <xs:element type="xs:string" name="Message4"/> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 

      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 


</xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:schema> 

감사에서 :

<?xml version="1.0" encoding="UTF-8"?> 
<xsi:settings xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="http://www.w3.org/2001/XMLSchema/Application.xsd"> 
    <info> 
      <Version>1.0</Version> 
      <Release_date>2012-07-27</Release_date> 
    </info> 

    <config> 
     <Betriebssystem>Windows</Betriebssystem> 
     <Wildcard>%</Wildcard> 
     <Errormessages> 
      <View1> 
       <Message1>Der neue Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message1> 
       <Message2>Dem Mitarbeiter muss eine Personalnummer zugewiesen werden</Message2> 
      </View1> 
      <View3> 
       <Message1>Sie muessen mindestens ein Kriterienfeld ausfuellen"</Message1> 
       <Message2>Der Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message2> 
       <Message3>Sie muessen erst einen Mitarbeiter laden</Message3> 
       <Message4>Problem beim Loeschen des Mitarbeiters. Ist der Mitarbeiter in der Datenbank vorhanden?</Message4> 
      </View3> 
     </Errormessages> 
    </config> 
</xsi:settings> 

내 XSD 파일 (오류 없음) 도움을 청하십시오.

할랄드

답변

1

네임 스페이스가 잘못되었습니다. 계속 진행하려면 수정 된 샘플이 아래에 나와 있습니다. 첫째, XML 스키마 인스턴스 네임 스페이스 (아래 xst 접두어 사용)를 참조하고 대신 schemaLocation을 사용해야합니다 (대상 네임 스페이스가 있으므로).

<?xml version="1.0" encoding="UTF-8"?> 
<xsi:settings xmlns:xsi="http://www.w3.org/2001/XMLSchema" xmlns:xst="http://www.w3.org/2001/XMLSchema-instance" xst:schemaLocation="http://www.w3.org/2001/XMLSchema/Application.xsd"> 
    <info> 
     <Version>1.0</Version> 
     <Release_date>2012-07-27</Release_date> 
    </info> 
    <config> 
     <Betriebssystem>Windows</Betriebssystem> 
     <Wildcard>%</Wildcard> 
     <Errormessages> 
      <View1> 
       <Message1>Der neue Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message1> 
       <Message2>Dem Mitarbeiter muss eine Personalnummer zugewiesen werden</Message2> 
      </View1> 
      <View3> 
       <Message1>Sie muessen mindestens ein Kriterienfeld ausfuellen"</Message1> 
       <Message2>Der Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message2> 
       <Message3>Sie muessen erst einen Mitarbeiter laden</Message3> 
       <Message4>Problem beim Loeschen des Mitarbeiters. Ist der Mitarbeiter in der Datenbank vorhanden?</Message4> 
      </View3> 
     </Errormessages> 
    </config> 
</xsi:settings> 

나는 접두어를 공통적으로 사용하는 또 다른 예를 보여주고 있습니다. xsi는 XML 스키마 인스턴스에 사용됩니다. 그럼에도 불구하고 그것은 임의적이며 위 그림에서와 같이 다른 것으로도 작동 할 수 있습니다.

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) --> 
<settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3.org/2001/XMLSchema"> 
    <info xmlns=""> 
     <Version>1</Version> 
     <Release_date>1900-01-01</Release_date> 
    </info> 
    <config xmlns=""> 
     <Betriebssystem>Betriebssystem1</Betriebssystem> 
     <Wildcard>Wildcard1</Wildcard> 
     <Errormessages> 
      <View1> 
       <Message1>Message11</Message1> 
       <Message2>Message21</Message2> 
      </View1> 
      <View3> 
       <Message1>Message11</Message1> 
       <Message2>Message21</Message2> 
       <Message3>Message31</Message3> 
       <Message4>Message41</Message4> 
      </View3> 
     </Errormessages> 
    </config> 
</settings> 
내가하지만, 일반적으로는 W3C XML 스키마를 대상으로 좋은 일이 아니라는 사실에 대해 언급 할 수

(XSD) URI (http://www.w3.org/2001/XMLSchema) 또는 XSI (XML Schema Instance) URI (http://www.w3.org/2001/XMLSchema-instance)가 아닙니다.

+0

명확한 설명을 위해 @ petru-gardea보다. 그것은 작동합니다. 그러나 "s4s-elt-schema-ns : 요소 '요소'의 네임 스페이스는 스키마 네임 스페이스 'http://www.w3.org/2001/XMLSchema'에서 가져와야합니다." 네임 스페이스의 이름을 변경하려고하면 오류가 발생합니다. – user1548451