2

私は xsd を介して XML 検証をいじっていますが、まだ初心者です。この xml を検証しようとすると、次のエラーが表示されます: cvc-elt.1: 要素 'customers' の宣言が見つかりません。[5]

<?xml version="1.0"?>

<customers xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://w3schools.com requested_customer.xsd">

 <customer name="Vladimir Putin" address="St. Petersburg, wadim street 23, Russia"/>
</customers>

そしてXSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xs:element name="customers">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="customer">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute type="xs:string" name="name"/>
                <xs:attribute type="xs:string" name="address"/>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

ご協力いただきありがとうございます!

4

2 に答える 2

4

まず最初に、XML はコンテンツに XML 名前空間を使用しないため、ターゲット名前空間なしで XSD のファイルの場所を参照するには、代わりにxsi:noNamespaceSchemaLocation属性を使用する必要があります。

次に、XSD ファイルの場所が検証プログラムに認識され、アクセス可能であることを確認する必要があります。

XML/XSD の組み合わせは完全に有効です。

于 2013-01-09T14:43:18.287 に答える
1

customerまた、意図が内で複数を許可することである場合customersは、次のように変更する必要があります。

  <xs:element name="customer">

に:

  <xs:element name="customer" maxOccurs="unbounded">

もちろん、maxOccursなどの有限値にすることもできます100maxOccurs(およびminOccurs) 両方ともデフォルトです1(を参照)。minOccursすることもできます0

于 2013-01-09T15:00:44.893 に答える