Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> xsd большая вложенность элементов 
V
    Опции темы
Samotnik
Дата 16.11.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Как в xsd указать,  что может быть большая вложенность одного и того же элемента category ?
Вот кусок xml :
Код

<category name="baseball" >
        <category name="men" reference="Sport">
            <category name="usa"/>
            <category name="europe"/>
            <category name="asia"/>
        </category>
    </category>

как это написать в  xsd  ? Делаю так, но это не верно
Код

<xsd:element name="category" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:attribute name="name" type="xsd:string" use="required" />
                        <xsd:attribute name="reference" type="xsd:string" use="optional" />
                    </xsd:complexType>
                </xsd:element>

Вопрос в том, как показать xsd что category может быть много раз быть вложенным 1, 5, 10, 100, .... ?
PM MAIL   Вверх
diadiavova
Дата 16.11.2010, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Если элемент объявляется глобально, то можно использовать атрибут ref
Код

    <xs:element name="category">
        <xs:complexType>
            <xs:sequence minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="category"/>
            </xs:sequence>
            <xs:attribute name="name" use="required"/>
            <xs:attribute name="reference" use="optional"/>
        </xs:complexType>
    </xs:element>

В ином случае придется глобально объявлять тип, а элементу присваивать именно этот тип при объявлении
Код

    <xs:complexType name="category-def">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="category" type="category-def"/>
        </xs:sequence>
        <xs:attribute name="name" use="required"/>
        <xs:attribute name="reference" use="optional"/>
    </xs:complexType>

Сам элемент объявляется так
Код

            <xs:element name="category" type="category-def"/>

Наверно есть и другие варианты, но принцип везде один: элемент должен объявляться рекурсивно.

Это сообщение отредактировал(а) diadiavova - 16.11.2010, 19:57


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Samotnik
Дата 17.11.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



diadiavova, спасибо, да, именно так, я уже сам сделал !   smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.1301 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.