2

xsd に対して xml を検証しようとしています。以下はxsdです

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns="http://www.w3schools.com" targetNamespace="http://www.xxxxxxxxxxxxx/xxxxxxxx" xmlns:cl="http://www.xxxxxx/contactlist" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

    <xsd:complexType name="contactNumberType">
        <xsd:all>
            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="number" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="contactNumbersType">
        <xsd:sequence>
            <xsd:element name="contact_number" type="contactNumberType" minOccurs="1" maxOccurs="2"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="contactType">
        <xsd:all>
            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="company" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="jobtitle" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="emailadress" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="addresses" type="addressesType" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="contact_numbers" type="contactNumbersType" minOccurs="1" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="addressType">
        <xsd:all>
            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="street_address1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="street_address2" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="suburb" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="postcode" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="state" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="contacts">
        <xsd:sequence>
            <xsd:element name="contact" type="contactType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="addressesType">
        <xsd:sequence>
            <xsd:element name="address" type="addressType" minOccurs="1" maxOccurs="2"/>
        </xsd:sequence>
    </xsd:complexType>

</xsd:schema>

次の例外が発生しています。私が欠けているものを理解するのを手伝ってください

例外: src-resolve.4.2: コンポーネント 'contactNumberType' の解決中にエラーが発生しました。

4

1 に答える 1

6

オーサリング アプローチを考えると、既定の名前空間 (xmlns 属性の値) が targetNamespace 属性の値と一致することを確認する必要があります。

タイプ、属性、属性グループ、要素、またはグループを名前で参照する場合、その名前は修飾名です。参照する名前に接頭辞がない場合、指定されている場合はデフォルトの名前空間にあると見なされるか、名前空間がまったくないと見なされます。デフォルトの名前空間がであるため、プロセッサは { http://www.w3schools.com }contactNumberType;http://www.w3schools.comを探しています。あなたの XSD は { http://www.xxxxxxxxxxxxxx/xxxxxxxx }contactNumberType を定義していますが、これは明らかに一致しません。デフォルトの名前空間を修正すると、参照が修正されます。

xmlns="http://www.xxxxxxxxxxxxx/xxxxxxxx" targetNamespace="http://www.xxxxxxxxxxxxx/xxxxxxxx"

于 2013-10-29T15:00:33.713 に答える