2

xml ファイルの検証に問題があります。「cvc-elt.1: 要素 'xsi:settings' の宣言が見つかりません」というエラー メッセージが表示されます。私のxmlファイルで。私にとって、私のコードは正しいですが、明らかにそうであってはなりません..

私のxmlファイル:

<?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ファイル(エラーはありません):

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

よろしくお願いします。

ハラルド

4

1 に答える 1

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) や XML スキーマ インスタンスをターゲットにすることは適切ではないという事実についてコメントせざるを得ません。 (XSI) uri (http://www.w3.org/2001/XMLSchema-instance)。

于 2012-07-31T13:21:56.157 に答える