Java 是否可以为相同的xs:simpleContent元素创建单个类映射?

Java 是否可以为相同的xs:simpleContent元素创建单个类映射?,java,jaxb2,xjc,xjb,Java,Jaxb2,Xjc,Xjb,我有一个外部提供的XSD,它有许多元素,所有元素都是相同的,并且表示一个带有可选货币属性的价格 <xs:complexType name="someType"> <xs:sequence> <xs:element name="rrp" minOccurs="0"> <xs:complexType> <xs:simpleContent> <xs:extension base

我有一个外部提供的XSD,它有许多元素,所有元素都是相同的,并且表示一个带有可选货币属性的价格

<xs:complexType name="someType">
  <xs:sequence>
    <xs:element name="rrp" minOccurs="0">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:decimal">
            <xs:attribute name="currency" type="xs:string"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
    <xs:element name="whs" minOccurs="0">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:decimal">
            <xs:attribute name="currency" type="xs:string"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>


我希望将其转换为一个公共类,而不是许多静态类,这在XJB映射文档中可能吗?

我不知道如何使用JAXB注释实现这一点,但这并不是说这是不可能的。也许有人会给你一个更好的答案

解决这个问题的理想方法显然是更改XSD,这样您就有了一个“PriceWithcurrency”xs:complexType定义,并且每个元素都声明为该类型。但你说你不能改变它


我要尝试的一件事是,创建一个XSD的变体来实现这一点,为它保留相同的名称空间定义并生成jaxb类。它应该可以与使用原始XSD生成的XML文档实例一起使用。

谢谢Patrice,我确实一直在修改供应商提供的XSD,尽管我不希望依赖它,因为XSD发生了变化,如果不再次更新,它将被破坏;这涉及到记录我为我的团队所做的更改等。这些XSD被注释为是使用工具创建的,您可能认为该工具首先会警告不要使用匿名类型。如果我没有很快听到一个转变的方式,我会接受你的回答,谢谢。