java - jaxb xsd模式重用

标签 java xml xsd jaxb

假设我有三个 xsd 架构:CommonSchema.xsd、A.xsd、B.xsd。 在 CommonSchema.xsd 中,我想在 A.xsd 和 B.xsd 中重用一些元素。 当然,我想重用通过 org.jvnet.jaxb2.maven2 插件生成的代码。 我想在生成的java代码中得到这样的东西:

A extends CommonSchema {...}
B extends CommonSchema {...}

或者从 A.java 和 B.java 到 CommonSchema.java 的私有(private)引用

最好的方法是什么? 提前致谢

最佳答案

您像往常一样编写通用 XML 架构“com.xsd”。假设它包含一个复杂类型 TypeCommon ,其目标命名空间是“a:b”。然后,另一个使用“com.xsd”中内容的 XML 架构文件将使用 s.th。喜欢

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:ns="a:b"
           targetNamespace="x:y">

    <xs:import schemaLocation="com.xsd" namespace="a:b"/>

    <xs:complexType name="TypeX2">
      <xs:sequence>
        <xs:element name="name" type="ns:TypeCommon"/>
      </xs:sequence>
    </xs:complexType>
</xs:schema>

类层次结构是由复杂类型扩展产生的,例如使用

<xs:complexType name="TypeA">
  <xs:complexContent>
    <xs:extension base="ns:TypeCommon">
    <xs:sequence>
      <xs:element name="foo" type="xs:string"/>
    </xs:sequence>
    <xs:attribute name="bar" type="xs:int" fixed="1"/>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

关于java - jaxb xsd模式重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294734/

相关文章:

java - 如何在 GWT 中使用外部服务器端 jar?

java - 我正在阅读 Head First Java,但我对这个程序感到困惑

c# - 十六进制值 0x00 是加载 XML 文档的无效字符

java - Spring AMQP 手动容器异常缓慢

Android 文件(Java 和 XML)被奇怪的 XML 取代

xml - 如何在 XSLT 中用单词/字符串替换特殊字符?

C# 代码(为 xsd 架构中具有 decimal 和 int 的选择元素生成)不包含枚举

c# - 获取子元素的所有属性

java - RESTful Webservice - 如何在 xml 输出中提供自定义类的 .xsd

java - 如何让 Java "hot code replacement"在 JBoss 中工作?