Не удается найти объявление элемента 'car' - PullRequest
1 голос
/ 16 февраля 2020

Первое размещение здесь. У меня трудности с некоторыми XLM и XSD. Я продолжаю получать следующую ошибку:

Не удается найти объявление элемента 'car'. [13]

Я искал сайт для помощи, но, похоже, не могу добиться прогресса, не добавив больше ошибок (что, я думаю, может быть проблемой). Я буду признателен за любую помощь.

Часть XML:

<car
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="carcatalog.xsd">
    <make><h2>Make: </h2>Honda</make>
    <model><h2>Model: </h2>Accord</model>
    <year><h2>Year: </h2>2020</year>
    <color><h2>Color: </h2>Red</color>
    <engine>
        <number_of_cylinders><h2>Number of Cylinders: </h2>4</number_of_cylinders>
        <fuel_system><h2>Fuel System: </h2>Fuel Injected</fuel_system>
    </engine>
    <number_of_doors><h2>Doors: </h2>4</number_of_doors>
    <transmission_type><h2>Transmission: </h2>Automatic</transmission_type>
    <accessories>
        <radio><h2>Radio: </h2>Yes</radio>
        <air_conditioner><h2>Air Conditioner: </h2>Yes</air_conditioner>
        <power_windows><h2>Power Windows: </h2>No</power_windows>
        <power_steering><h2>Power Steering: </h2>Yes</power_steering>
        <power_brakes><h2>Power Brakes: </h2>Yes</power_brakes>
    </accessories>

    <h1></h1>

    <make><h2>Make: </h2>Chevrolet</make>
    <model><h2>Model: </h2>Corvette</model>
    <year><h2>Year: </h2>2020</year>
    <color><h2>Color: </h2>Blue</color>
    <engine>
        <number_of_cylinders><h2>Number of Cylinders: </h2>8</number_of_cylinders>
        <fuel_system><h2>Fuel System: </h2>Fuel Injected</fuel_system>
    </engine>
    <number_of_doors><h2>Doors: </h2>2</number_of_doors>
    <transmission_type><h2>Transmission: </h2>Manual</transmission_type>
    <accessories>
        <radio><h2>Radio: </h2>Yes</radio>
        <air_conditioner><h2>Air Conditioner: </h2>Yes</air_conditioner>
        <power_windows><h2>Power Windows: </h2>Yes</power_windows>
        <power_steering><h2>Power Steering: </h2>Yes</power_steering>
        <power_brakes><h2>Power Brakes: </h2>Yes</power_brakes>
    </accessories>

    <h1></h1>

    <make><h2>Make: </h2>Toyota</make>
    <model><h2>Model: </h2>Tacoma</model>
    <year><h2>Year: </h2>2017</year>
    <color><h2>Color: </h2>Cement</color>
    <engine>
        <number_of_cylinders><h2>Number of Cylinders: </h2>6</number_of_cylinders>
        <fuel_system><h2>Fuel System: </h2>Fuel Injected</fuel_system>
    </engine>
    <number_of_doors><h2>Doors: </h2>4</number_of_doors>
    <transmission_type><h2>Transmission: </h2>Automatic</transmission_type>
    <accessories>
        <radio><h2>Radio: </h2>Yes</radio>
        <air_conditioner><h2>Air Conditioner: </h2>Yes</air_conditioner>
        <power_windows><h2>Power Windows: </h2>Yes</power_windows>
        <power_steering><h2>Power Steering: </h2>Yes</power_steering>
        <power_brakes><h2>Power Brakes: </h2>Yes</power_brakes>
    </accessories>
</car>

Часть XSD:

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog">
    <xs:complexType>
    <xs:sequence>

    <xs:element name = "car" maxOccurs="unbounded">
        <xs:complexType>
            <xs:sequence>
                <xs:element name = "make" type="xs:string"/>
                <xs:element name = "model" type="xs:string"/>
                <xs:element name = "year" type="xs:positiveInteger"/>
                <xs:element name = "color" type="xs:string"/>
                <xs:element name="engine">
                    <xs:complexType>
                    <xs:sequence>
                        <xs:element name="number_of_cylinders" type="xs:positiveInteger"/>
                        <xs:element name="fuel_system">
                            <xs:complexType>   
                            <xs:sequence>
                                <xs:choice>
                                    <xs:element name="fuel_injected"/>
                                    <xs:element name="carbureted"/>
                                </xs:choice>
                            </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <xs:element name = "number_of_doors" type="xs:positiveInteger"/>
                <xs:element name = "transmission_type" type="xs:string"/>

                <xs:element name = "accessories">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name = "radio" minOccurs="1">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="yes"/>
                                        <xs:enumeration value="no"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name = "air_conditioner" minOccurs="1">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="yes"/>
                                        <xs:enumeration value="no"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name = "power_windows" minOccurs="1">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="yes"/>
                                        <xs:enumeration value="no"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name = "power_steering" minOccurs="1">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="yes"/>
                                        <xs:enumeration value="no"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name = "power_brakes" minOccurs="1">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="yes"/>
                                        <xs:enumeration value="no"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

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

1 Ответ

1 голос
/ 16 февраля 2020

Причина ошибки

В вашем случае причина ошибки заключается в том, что элемент root в вашем XML, car не имеет объявления верхнего уровня в вашем XSD .

Способы устранения этой проблемы

Либо переместите объявление car на верхний уровень в вашем XSD, либо оберните car в вашем XML с помощью catalog, что определяется на верхнем уровне и имеет car в своей модели содержимого.

Если вы решите переместить объявление car на верхний уровень в XSD, вы можете ссылаться на него в случае необходимости в модель содержимого catalog (и других элементов при необходимости) через

<xs:element ref="car"  ... >

вместо xs:element/@name.

Другие причины ошибки

Существует много других причины, по которым элемент не может быть найден во время проверки. См. Также:

...