我有四个xsd架构,其中一个使用另外三个的类型。我想在一个文档中将它们联合起来,但xs:import with specified namesapces不起作用:xsd.exe写入“Type ...未声明”。如何在一个文档中的多个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。
答案 0 :(得分:0)
这是将四种模式合二为一的方法。在验证实例时,您仍然需要处理各个命名空间:
<?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>