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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> в одном xsd использовать типы другого, Как в одном xsd использовать типы другог 
V
    Опции темы
Compositum
Дата 29.3.2012, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


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

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



Доброго времени суток.
Хочу разделить XSD-файл на две части, вынеся часто используемые типы в отдельный файл common.xsd. Как правильно потом этот xsd-файл подключить к др. xsd-файлам?

common.xsd:
Код

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
  targetNamespace="http://bushman.autocad.com/common"
  elementFormDefault="qualified"
  xmlns="http://bushman.autocad.com/common"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <!--ru-RU: Определяем фиксированный набор значений, допустимых для 
  атрибута 'lang' в элементе 'txt'-->
  <!--en-US: We define the fixed set of values, admissible for 
  the lang attribute in the element 'txt'-->
  <xsd:simpleType name="langType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ru-RU"/>
      <xsd:enumeration value="en-US"/>
    </xsd:restriction>
  </xsd:simpleType>

  <!--ru-RU: Определение типа 'txt', содержащего локализованную 
    версию текста-->
  <!--en-US: Definition of the 'txt' type containing the localized 
    text version-->
  <xsd:element name="txt">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="lang" type="langType"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  
</xsd:schema>


А теперь эти типы я хочу использовать в др. xsd-файле, например таком:
Код

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema 
  xmlns="http://www.bushman.autocad.com/license"
  targetNamespace="http://www.bushman.autocad.com/license"
  xmlns:common="http://bushman.autocad.com/common"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://bushman.autocad.com/common common.xsd"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <!--ru-RU: Определение типа 'position', представляющего 
    собой очередной пункт лицензионного соглашения-->
  <!--en-US: Definition of the 'position' type representing 
    itself next point of the license agreement-->
  <xsd:element name="position">
    <xsd:complexType>
      <xsd:sequence minOccurs="2" maxOccurs="2">
        <xsd:element ref="common:txt"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>


Однако во втором файле типы из common.xsd не видны (я пытался заюзать common:txt). Как это правильно сделать?  Я так понимаю, что вместо атрибута schemaLocation должно быть что-то вроде "schemaUnion" (по смыслу)...

Спасибо.

Это сообщение отредактировал(а) Compositum - 29.3.2012, 14:06
PM   Вверх
diadiavova
Дата 29.3.2012, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Используй элементы import И include


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


Senior developer
**


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

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



Цитата(diadiavova @ 29.3.2012,  14:11)
Используй элементы import И include

спасибо, как раз только что нашел ответ в инете. 
нужно добавить элемент:
Код

<xsd:import namespace="http://bushman.autocad.com/common" schemaLocation="common.xsd"/>

Рабочий результат выглядит так:
Код

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema 
  xmlns="http://www.bushman.autocad.com/license"
  targetNamespace="http://www.bushman.autocad.com/license"
  xmlns:common="http://bushman.autocad.com/common"  
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:import namespace="http://bushman.autocad.com/common" schemaLocation="common.xsd"/>

  <!--ru-RU: Корневой элемент документа, представляющий собой
    лицензионное соглашение-->
  <!--en-US: The root element of the document - representing 
    license agreement-->
  <xsd:element name="license">
    <xsd:complexType>
      <xsd:sequence minOccurs="1" maxOccurs="1">
        <xsd:element ref="positions"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>  

  <!--ru-RU: Определение типа 'positions', представляющего 
    собой коллекцию элементов 'position'-->
  <!--en-US: Definition of the 'positions' type representing 
    itself collection of the 'position' elements-->
  <xsd:element name="positions">
    <xsd:complexType>
      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="position"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <!--ru-RU: Определение типа 'position', представляющего 
    собой очередной пункт лицензионного соглашения-->
  <!--en-US: Definition of the 'position' type representing 
    itself next point of the license agreement-->
  <xsd:element name="position">
    <xsd:complexType>
      <xsd:sequence minOccurs="2" maxOccurs="2">
        <xsd:element ref="common:txt"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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