【发布时间】:2014-08-04 12:14:12
【问题描述】:
- 我有三个 XSD 文件:a.xsd、b.xsd 和 c.xsd
- 它们中的每一个都包含一个名为
MyHeader的xs:element - 我尝试使用xjc从这三个XSD文件生成java类
- 生成java文件时出错
这是所有三个 XSD 中的共同部分:
<xs:element name="MyHeader">
<xs:complexType>
<xs:attribute name="Username" type="xs:string" />
<xs:attribute name="Password" type="xs:string" />
</xs:complexType>
</xs:element>
错误信息是[xjc] [ERROR] 'MyHeader' is already defined
然后我尝试使用外部绑定来解决问题,因为我真的希望MyHeader可以是ONE java类。
我的外部绑定是这样的
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation=" http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
version="2.1">
<bindings schemaLocation="./a.xsd" node="/xs:schema">
<bindings node="//xs:element[@name='MyHeader']">
<class name="MyHeader" />
</bindings>
</bindings>
<bindings schemaLocation="./b.xsd" node="/xs:schema">
<bindings node="//xs:element[@name='MyHeader']">
<class name="MyHeader" />
</bindings>
</bindings>
<bindings schemaLocation="./c.xsd" node="/xs:schema">
<bindings node="//xs:element[@name='MyHeader']">
<class name="MyHeader" />
</bindings>
</bindings>
</bindings>
然后它抱怨xpath错误...
谁能帮我解决这个问题。谢谢。
【问题讨论】:
-
是否有任何理由不将
MyHeader中的 complexType 部分设为命名类型,甚至可能将其移至单独的 XSD 并导入到其他 XSD 中? -
a.xsd、b.xsd 和 c.xsd 是否具有相同的命名空间?你能添加更多关于生成插件的信息吗?