Нужна помощь с (рекурсивной) группой xsd - PullRequest
0 голосов
/ 23 апреля 2009

У меня есть этот xsd:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns="http://myschema.com/schema"
           targetNamespace="http://myschema.com/schema"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="aType" mixed="true">
        <xs:group ref="aElements" minOccurs="0" maxOccurs="unbounded"/>
    </xs:complexType>

    <xs:group name="aElements">
        <xs:choice>
            <xs:element name="a" type="aType"/>
        </xs:choice>
    </xs:group>

    <xs:element name="b">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:group ref="aElements"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>

, и я пытаюсь проверить этот XML-документ по нему:

<?xml version="1.0" encoding="utf-8" ?>
<b xmlns="http://myschema.com/schema">
    <a/>
</b>

Однако средство проверки xml в Visual Studio 2008 жалуется на элемент :

Элемент 'b' в пространстве имен 'http://myschema.com/schema' имеет недопустимый дочерний элемент' a 'в пространстве имен' http://myschema.com/schema'. Список возможных ожидаемых элементов: 'a'.

В чем проблема?

Редактировать : Упс, когда я остановился на примере, который я вызвал, я забыл сделать элемент необязательным внутри элемента, вызывая бесконечную рекурсию. Однако проблема с этим модом все еще существует.


ОТВЕТ : Ответ состоял в том, что тег схемы xs: должен включать атрибут elementFormDefault = "qualised".

Ответы [ 2 ]

0 голосов
/ 28 апреля 2009

Вы можете сделать вашу жизнь намного проще, используя редактор для разработки XSD. Мы давно используем Liquid XML Studio , это делает жизнь намного проще.

0 голосов
/ 24 апреля 2009

вы определяете aElements с aType и aType с aElements. я не эксперт по xsd, но как это должно работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...