我有一个由两个XSD文件组成的XSD包:假设是A.xsd和B.xsd。模式A导入(不包含)B模式。它们具有不同的命名空间。
我需要在一个不太适用xsd:imports的系统中使用这些模式。
是否可能将XSD包压缩成一个且仅一个XSD文件,或者每个命名空间一个XSD文件是绝对最小的要求?
xs:schema
元素包含了一个目标命名空间的声明。但规范中并没有说xs:schema
必须是XML文档的根元素。因此,理论上你可以将两个模式元素都包装在一个包装文件中;但实际上,并不是所有的XSD验证器都能接受这样的输入。xs:import
元素中删除模式位置信息(这样导入只命名所涉及的命名空间,而不是模式文档的位置),并将A.xsd和B.xsd作为运行时参数传递给处理器。(大多数但不是所有的XSD处理器允许你在调用时指定它们要读取的一些模式文档。参数的顺序可能很重要,所以如果第一次不起作用,请尝试颠倒顺序。)xs:schema
元素。它被称为文档,因为xs:schema
通常是最外层的元素,但这实际上并不是规范的要求。 - C. M. Sperberg-McQueen
系统
。我明确说过,每个 XSD 只有一个根 xs:schema;我并没有说每个 WSDL 只有一个 xs:schema,这将是“不完全正确”的。你似乎不同意XSD 文件
的定义...这很好,但与本题无关。 - Petru Gardea