Проверка схемы XML: CVC-сложный тип.2.4.ля
Я пытаюсь проверить мой XML-документ против моей XML-схемы.
Это моя схема:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://cars.example.org/">
<element name="cars">
<complexType>
<sequence minOccurs="0" maxOccurs="unbounded">
<element name="brand" type="string"/>
</sequence>
</complexType>
</element>
</schema>
и это мой XML-документа:
<?xml version="1.0" encoding="UTF-8"?>
<cars xmlns="http://cars.example.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://cars.example.org/ cars.xsd">
<brand>x</brand>
</cars>
Теперь, когда я проверяю документ (через Eclipse), я получаю следующее сообщение в строке 4:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'brand'. One of '{"":brand}' is expected.
данное сообщение не имеет никакого смысла :(. И это очень трудно (невозможно?) для решения google.
Спасибо за помощь.
2 ответов
ваша схема определяет "бренд" как не находящийся в пространстве имен. Вот что!--0--> средства. Но в вашем XML-документе элемент "бренд" находится в http://cars.example.org/
пространство имен. Поэтому они не совпадают, и вы получаете ошибку проверки.
чтобы объявить элемент "brand" в вашей схеме как находящийся в http://cars.example.org/
пространство имен, добавьте атрибут elementFormDefault="qualified"
к элементу схемы.
Я предлагаю, чтобы для полноты вы также добавили attributeFormDefault="unqualified"
к элементу схемы, хотя это не ваш проблема в данном случае.
вы не проверили атрибут в cars, который является url-адресом пространства имен, это должно работать:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://cars.example.org/">
<element name="cars">
<complexType>
<sequence minOccurs="0" maxOccurs="unbounded">
<element name="brand" type="string"/>
</sequence>
<attribute name="schemaLocation" type="anyURI"/>
</complexType>
</element>
</schema>