Было обнаружено недопустимое содержимое, начинающееся с элемента "страна". Ожидается одна из "стран".. Строка "10", Колонка "14"


Я пытаюсь решить эту проблему, но не могу понять основную причину этой ошибки:

Недопустимый контент был найден, начиная с элемента стране''. Ожидается один из " {страна}".. Строка '10', Столбец ' 14 '

Вот мой xml:

<?xml version="1.0"?>
<!--DTD file reference-->
<!--<!DOCTYPE countries SYSTEM "http://localhost:8080/ajaxprac/file.dtd">-->

<!--DTD file reference-->
<!---->
<countries xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns="http://localhost:8080/ajaxprac"
           xsi:schemaLocation="http://localhost:8080/ajaxprac fileSchema.xsd">
    <country>
        <name>pakistan</name>
        <cities>
            <city>Kassowal</city>
            <city>Faisalabad</city>
            <city>Multan</city>
        </cities>
    </country>
    <country>
        <name>india</name>
        <cities>
            <city>Agra</city>
            <city>Amritsar</city>
            <city>Ayodhya</city>
        </cities>
    </country>
</countries>

И xsd-файл для этого:

<?xml version="1.0"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->

<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://localhost:8080/ajaxprac"
           xmlns="http://localhost:8080/ajaxprac">

    <xs:element name="countries" type="countriesType"/>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="city" type="xs:string"/>

    <xs:complexType name="countriesType">
        <xs:sequence>
            <xs:element name="country" type="countryType"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="countryType">
        <xs:sequence>
            <xs:element ref="name"/>
            <xs:element name="cities" type="citiesType"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="citiesType">
        <xs:sequence>
            <xs:element ref="city"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
1 22

1 ответ:

Как написано, ваша схема ожидает "глобального" countries, name и city элементы должны находиться в пространстве имен http://localhost:8080/ajaxprac, но "локальные" элементы (объявленные внутри пространства имен complexType, т. е. country и cities) должны находиться в пространстве именno . Вы, вероятно, хотите добавить elementFormDefault="qualified", то есть

<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://localhost:8080/ajaxprac"
           xmlns="http://localhost:8080/ajaxprac"
           elementFormDefault="qualified">

, который применяет targetNamespace к локальным, а также глобальным объявлениям элементов.