Ссылки между несколькими xsd-схемами в одном документе

У меня есть четыре схемы xsd, где один использует типы из трех других. Я хочу объединить их в одном документе, но xs: импорт с указанными именами не работает: xsd.exe пишет "Тип... не объявлен". Как сделать ссылки между несколькими xsd-схемами в одном документе?

Upd:
У меня есть этот http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticc_v1p0.xsd http://www.imsglobal.org/xsd/lti/ltiv1p0/imsbasiclti_v1p0.xsd http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticm_v1p0.xsd http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd
Я скачал их и выполнить в командной строке

>xsd imslticc_v1p0.xsd imsbasiclti_v1p0.xsd imslticm_v1p0.xsd imslticp_v1p0.xsd /classes

Это прекрасно работает, но мне нужен один xsd.

1 ответ

Решение

Это один из способов объединить ваши четыре схемы в одну. Вам все равно придется иметь дело с отдельными пространствами имен при проверке вашего экземпляра:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:import schemaLocation="http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticc_v1p0.xsd" 
        namespace="http://www.imsglobal.org/xsd/imslticc_v1p0"/>
    <xs:import schemaLocation="http://www.imsglobal.org/xsd/lti/ltiv1p0/imsbasiclti_v1p0.xsd"
        namespace="http://www.imsglobal.org/xsd/imsbasiclti_v1p0"/>
    <xs:import schemaLocation="http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticm_v1p0.xsd" 
        namespace="http://www.imsglobal.org/xsd/imslticm_v1p0"/>
    <xs:import schemaLocation="http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd" 
        namespace="http://www.imsglobal.org/xsd/imslticp_v1p0"/>
</xs:schema>

Это успешно подтверждает этот экземпляр:

<lticc:cartridge_basiclti_link xmlns:lticc="http://www.imsglobal.org/xsd/imslticc_v1p0"
    xmlns:basiclti="http://www.imsglobal.org/xsd/imsbasiclti_v1p0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="multi-schema.xsd">
    <basiclti:title></basiclti:title>
    <basiclti:description></basiclti:description>
    <basiclti:custom></basiclti:custom>
    <basiclti:extensions platform="x"></basiclti:extensions>
    <basiclti:launch_url>http://some-url.com</basiclti:launch_url>
    <basiclti:secure_launch_url>https://some-url.com</basiclti:secure_launch_url>
    <basiclti:icon></basiclti:icon>
    <basiclti:secure_icon></basiclti:secure_icon>
    <basiclti:vendor>
        <code xmlns="http://www.imsglobal.org/xsd/imslticp_v1p0">x</code>
        <name xmlns="http://www.imsglobal.org/xsd/imslticp_v1p0"></name>
    </basiclti:vendor>
</lticc:cartridge_basiclti_link>
Другие вопросы по тегам