继承XSD名称空间前缀

时间:2014-12-12 09:30:04

标签: jaxb xsd xml-namespaces

我有很多可以互相访问的XSD 由于我正在改用JAXB,我目前正在寻找一种根据文件夹结构向xsds添加命名空间的简单方法。

我目前的主要问题是将命名空间添加到XSD本身,添加到访问文件中的导入以及访问文件中的前缀定义。

这是一个小例子(不太真实)

User.xsd - targetNamespace="common.user"
Message.xsd - targetNamespace="common.message"
Email.xsd - targetNamespace="email" xmlns:user="common.user" xmlns:message="common.message"
            import namespace="common.user" schemaLocation="./common/user.xsd"
            import namespace="common.message" schemaLocation="./common/message.xsd"

当我现在有一个新的Message.xsd架构时,我必须复制90%的xsd头。

我正在创建一个Namespace.xsd xmlns:user="common.user" xmlns:message="common.message",然后由Email.xsd包含。但访问例如user:name无效。

有没有办法将名称空间前缀定义保存在中央XSD文件中,所以我不必在每个xsd中定义它们?

另外,当导入的xsd中已经定义了命名空间作为targetNamespace时,有没有办法在导入中设置命名空间?

1 个答案:

答案 0 :(得分:0)

认为(不是100%肯定)包括进入模式A的模式B导入另一个模式C将允许您访问A中的C.

但是,您仍然需要声明名称空间前缀(如xmlns:user="common.user")。

PS。只是警告 - 永远不要做chameleon schemas。你似乎不打算这样做,但我还是想警告。

相关问题