xom xsd валидация не удалась из-за нулевого корневого элемента - PullRequest
0 голосов
/ 21 марта 2011

У меня есть xsd и xml файл. XML-анализ в порядке, когда проверка выключена. но с проверкой xsd он жалуется на нулевой корневой элемент в xsd.

  1. В моем файле xsd есть несколько глобальных элементов. так что в принципе это может быть проблемой. я думаю, из XSD, XOM принять корневой элемент как ноль если вы можете подтвердить это

  2. как объявить корневой элемент в файле xsd и как это лучше сделать, в xsd ограничение глобальных элементов только одним элементом мне не нравится


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.popcornmonsters.com/"
xmlns="http://www.popcornmonsters.com/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

<xs:element name="address_book" >
<xs:complexType>
<xs:sequence>
<xs:element ref="entry" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="email" type="xs:string"/>
<xs:element name="first_name" type="xs:string"/>
<xs:element name="last_name" type="xs:string"/>

<xs:element name="entry">
<xs:complexType>
<xs:sequence>
<xs:element ref="first_name" minOccurs="0"/>
<xs:element ref="last_name" minOccurs="0"/>
<xs:element ref="email" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<address_book xmlns="http://www.popcornmonsters.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.popcornmonsters.com/address_book.xsd">
<entry>
<first_name>Ken</first_name>
<last_name>Cochrane</last_name>
<email>ken@fakeURL.no</email>
</entry>
<entry>
<first_name>Emily</first_name>
<last_name>Cochrane</last_name>
<email>Emily@fakeURL.no</email>
</entry>
</address_book>

Ответы [ 2 ]

0 голосов
/ 13 июня 2012

Обратите внимание на следующий атрибут: xsi: schemaLocation = "http://www.popcornmonsters.com/address_book.xsd" это должна быть пара значений: URI и имя файла. Таким образом, пробел перед address_book.xsd является обязательным: xsi: schemaLocation =" http://www.popcornmonsters.com/ address_book.xsd "Без пробела нет схемы, связанной с документом XML.

0 голосов
/ 21 марта 2011

Ваша схема в основном в порядке, только то, что она допускает не более одного элемента;Вы, вероятно, хотите, чтобы maxOccurs = "unbounded" в этой точке.

Однако, чтобы решить вашу проблему, нам нужно знать больше о том, как вы настраиваете синтаксический анализ / проверку и какие инструменты вы используете.Если вы используете xom.nu, убедитесь, что вы передали информацию о пространстве имен, проверяющую схему XMLReader, в экземпляр Builder ,

...