一个文档中多个xsd模式之间的链接

一个文档中多个xsd模式之间的链接,xsd,xsd.exe,Xsd,Xsd.exe,我有四个xsd模式,其中一个使用另三个模式的类型。我想将它们合并到一个文档中,但使用指定名称的xs:import无法工作:xsd.exe写入“类型…未声明”。如何在一个文档中的多个xsd模式之间建立链接 Upd: 我有这个 我下载了它们并在命令提示符下执行 >xsd imslticc_v1p0.xsd imsbasiclti_v1p0.xsd imslticm_v1p0.xsd imslticp_v1p0.xsd /classes 它工作得很好,但我需要一个xsd。这是将四个模式组合成一

我有四个xsd模式,其中一个使用另三个模式的类型。我想将它们合并到一个文档中,但使用指定名称的xs:import无法工作:xsd.exe写入“类型…未声明”。如何在一个文档中的多个xsd模式之间建立链接

Upd:
我有这个
我下载了它们并在命令提示符下执行

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

它工作得很好,但我需要一个xsd。

这是将四个模式组合成一个模式的一种方法。验证实例时,您仍然需要处理各个名称空间:

<?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>

http://some-url.com
https://some-url.com
x

请出示您的code@helderdarocha我已经更新了描述。添加您试图编写的XSD,即导入/包含这些架构的XSD。您从哪里得到该错误?当你将它用于某个实例时?哪一个?我在这4个模式上使用了
,结果验证了OK。这就是你所需要的吗?要对导入的模式使用XSD,您必须处理实例中的名称空间。如果错误与验证有关,请包含一个示例实例。@helderdarocha我刚刚复制了此架构并插入到一个文件中,并尝试对其执行xsd.exe。我尝试对其执行xsd.ex,结果是“无法生成类,因为找不到复杂类型的顶级元素”。但模式包含元素!架构导入是正确的。没有验证问题。我将添加一个它验证的XML实例示例。问题似乎是由于
xsd.exe
施加的限制造成的,该限制至少需要一个
xs:element
才能生成类型。也许它需要一些配置来处理导入的名称空间,或者您可能需要绕过该工具的一些限制(请参阅和)。谢谢您的帮助,但现在我在验证方面遇到了问题。这是我的xsd的xml示例(这里有更多示例)。但是此xml无效。您的xml无效,因为某些元素出现了问题(似乎
launch\u url
应该位于
图标之前),而其他元素似乎放错了位置。您必须检查各个模式,看看构建实例的规则是什么。