1

我有三种模式:幻灯片、问题和小部件。幻灯片和问题模式导入小部件。但是,幻灯片、问题和小部件的命名空间是不同的。我已经定义了我的导入,如下所示:

 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema targetNamespace="http://www.mydomain.com/slideshow"
       xmlns="http://www.mydomain.com/slideshow"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:wd="http://www.mydomain.com/widgets"
       elementFormDefault="qualified">

    <xs:import namespace="http://www.mydomain.com/widgets" schemaLocation="./widgets-v1.0.xsd"/>

 </xs:schema>

但是,这需要我为小部件架构中的元素使用完全限定的名称(例如 wd:someElement)。我真的很想将小部件中的定义导入幻灯片和问题命名空间,这样您就不必使用 wd:someElement 来引用 someElement。好像它们是直接在那些各自的模式中定义的。

我尝试过包含,但这要求小部件与导入文档的名称空间相同,但存在问题且小部件不同,因此该选项似乎不起作用。

我怎样才能做到这一点?

4

2 回答 2

2

如果您希望三个模式文档中的元素位于不同的名称空间中,那么您将不得不使用 QNames 来引用它们。

当然,您可以更改设计,使它们不使用不同的名称空间,但您并没有建议您这样做。

于 2013-10-12T15:58:05.180 回答
1

做到这一点的唯一方法是通过所谓的变色龙模式重用 XSD 内容。就 XML 名称空间而言,这将允许您对所需的任何组件进行“白标”。

于 2013-10-12T16:41:32.493 回答