我有很多可以互相访问的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时,有没有办法在导入中设置命名空间?
答案 0 :(得分:0)
我认为(不是100%肯定)包括进入模式A的模式B导入另一个模式C将允许您访问A中的C.
但是,您仍然需要声明名称空间前缀(如xmlns:user="common.user"
)。
PS。只是警告 - 永远不要做chameleon schemas。你似乎不打算这样做,但我还是想警告。