Проверка XML-файла по моей пользовательской схеме - PullRequest
2 голосов
/ 03 октября 2011

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

.xsd файл

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="Assumption" type="assumptionType"/>
    <xsd:complexType name="assumptionType">
        <xsd:sequence>
            <xsd:element name="entries" type="entriesType"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="entriesType">
        <xsd:sequence>
            <xsd:element name="entry">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="x" type="xsd:decimal"/>
                        <xsd:element name="y" type="xsd:decimal"/>
                        <xsd:element name="value" type="xsd:decimal"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

.xml файл

<?xml version="1.0" encoding="UTF-8"?>
<Assumption>
    <entries>
        <entry>
            <x>12</x>
            <y>14</y>
            <value>16</value>
        </entry>
        <entry>
            <x>12</x>
            <y>24</y>
            <value>5</value>
        </entry>
    </entries>
</Assumption>

Я использую этот инструмент , чтобы попытаться проверить .xml по сравнению с .xsd. Я получаю следующую ошибку:

The following errors were found: 
TYPE              LOC       MESSAGE 
Validation        9, 10     cvc-complex-type.2.4.d: Invalid content was found starting
                            with element 'entry'. No child element is expected at this point

Я явно чего-то не понимаю.

1 Ответ

3 голосов
/ 03 октября 2011

Поскольку entry - это несколько узлов, вам необходимо указать maxOccurs="unbounded"

Ваш XSD будет: -

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="Assumption" type="assumptionType"/>
    <xsd:complexType name="assumptionType">
        <xsd:sequence>
            <xsd:element name="entries" type="entriesType"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="entriesType">
        <xsd:sequence>
            <xsd:element name="entry" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="x" type="xsd:decimal"/>
                        <xsd:element name="y" type="xsd:decimal"/>
                        <xsd:element name="value" type="xsd:decimal"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...