Проверка XML дает ошибку проверки, но я не могу найти причину - PullRequest
1 голос
/ 16 ноября 2011

Я пытался спроектировать XML-схему, но я застреваю. Мой XML-файл не будет проверяться по моей схеме. Я подозреваю, что я делаю какую-то ошибку новичка. Кто-нибудь может указать, где я иду не так? Сообщение об ошибке не имеет смысла для меня.

Вот мой xsd файл:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.test.com/teststuff/XMLnamespace" >
    <xs:element name="dataCollecFile">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="fileHeader" minOccurs="0" maxOccurs="unbounded">
          </xs:element>
          <xs:element name="data" minOccurs="0" maxOccurs="unbounded">
          </xs:element>
          <xs:element name="fileFooter">
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
</xs:schema>

А вот содержимое XML-файла, который не будет проверяться:

<?xml version="1.0" encoding="UTF-8"?> 
<dataCollecFile xmlns="http://www.test.com/teststuff/XMLnamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.test.com/teststuff/XMLnamespace test.xsd">
   <fileHeader>heady head header</fileHeader>
   <data>data data</data>
   <fileFooter>foot feet feeter</fileFooter>
</dataCollecFile>

Наконец, вот сообщение об ошибке, которое я получаю из класса Java javax.xml.validation.Validator:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'fileHeader'. One of '{fileHeader, data, fileFooter}' is expected.

1 Ответ

3 голосов
/ 16 ноября 2011

Попробуйте добавить elementFormDefault="qualified" к элементу .

UPDATE

Когда elementFormDefault не квалифицирован, глобальные элементы будут иметь целевое пространство имен, но локальные элементы не будут иметь пространства имен.Итак, если бы у вас была неквалифицированная версия схемы, ваш XML должен был бы выглядеть примерно так:

<ns:dataCollecFile xmlns:ns="http://www.test.com/teststuff/XMLnamespace" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.test.com/teststuff/XMLnamespace test.xsd">
    <fileHeader>heady head header</fileHeader>
    <data>data data</data>
    <fileFooter>foot feet feeter</fileFooter>
</ns:dataCollecFile>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...