一个文档中多个xsd架构之间的链接

时间:2014-04-18 09:26:49

标签: xsd xsd.exe

我有四个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。

1 个答案:

答案 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>