【问题标题】:jaxb xsd schemas reusingjaxb xsd 模式重用
【发布时间】:2016-03-30 21:22:51
【问题描述】:

假设我有三个 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 的私有引用

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

【问题讨论】:

    标签: java xml xsd jaxb


    【解决方案1】:

    您像往常一样编写通用 XML 模式“com.xsd”。假设它包含一个复杂类型 TypeCommon,其目标命名空间是“a:b”。然后,另一个使用“com.xsd”内容的 XML Schema 文件将使用 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      相关资源
      最近更新 更多