Рекурсивная структура XML - PullRequest
1 голос
/ 02 апреля 2012

Я хочу создать документ * .xsd (для простой игры;)) с такой спецификацией:

<description> имеет смешанные элементы и имеет дочерние элементы i и b. Они имеют тот же тип, что и элемент описания, поэтому они могут иметь одинаковые элементы i и b.

Итак, я думаю, мне нужно создать рекурсивную структуру? У меня вопрос, как создать такую ​​структуру?

1 Ответ

1 голос
/ 02 апреля 2012

Есть некоторые запутанные утверждения;когда вы говорите "description имеет смешанные элементы и [...]" вы хотите сказать, что другие элементы, такие кака такжеили mixed, поскольку в нем также разрешен текст (подумайте здесь о разметке html)?Когда вы ссылаетесь на контент i и b, есть ли у каждого из них только the same i and b Element или перечисленные выше смешанные элементы?

Чтобы создать рекурсивную модель контента для вашего случая, я рекомендую основывать ее на использовании типовв отличие от групп;первый работает с большинством инструментов, которые я знаю.Вот простой пример XSD, который поддерживает текст (mixed = "true"), с которого вы можете начать исследовать:

<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="description" type="descriptionType"/>
    <xsd:complexType name="descriptionType" mixed="true">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="b" type="descriptionType"/>
            <xsd:element name="i" type="descriptionType"/>
        </xsd:choice>
    </xsd:complexType>
</xsd:schema>

Я бы параллельно визуализировал соответствующие XML-файлы и начал бы подстройку:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">text<b>text<b>text<b>text</b>
            <i>text</i>
        </b>
        <i>text<b>text</b>
            <i>text</i>
        </i>
    </b>
    <i>text<b>text<b>text</b>
            <i>text</i>
        </b>
        <i>text<b>text</b>
            <i>text</i>
        </i>
    </i>
</description>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...