Java 使用@XmlElementRef创建架构时出现问题

Java 使用@XmlElementRef创建架构时出现问题,java,xml,jaxb,schemagen,Java,Xml,Jaxb,Schemagen,我试图通过从Java开始并使用schemagen(长话短说)来复制一点模式。架构如下所示: <xsd:element name="Responses"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element ref="tns:Accepted"/> <xsd:element ref="tns:Rejected"/

我试图通过从Java开始并使用schemagen(长话短说)来复制一点模式。架构如下所示:

<xsd:element name="Responses">
   <xsd:complexType>
      <xsd:choice maxOccurs="unbounded">
         <xsd:element ref="tns:Accepted"/>
         <xsd:element ref="tns:Rejected"/>
         <xsd:element ref="oth:Exception"/>
      </xsd:choice>
   </xsd:complexType>
</xsd:element>

<xsd:element name="Accepted" type="tns:ResponseType"/>
<xsd:element name="Rejected" type="tns:ResponseType"/>

<xsd:complexType name="ResponseType">
   <xsd:sequence>
     <xsd:element name="Id" type="xsd:anyURI"/>
     <!-- more valid elements -->
  </xsd:sequence>
</xsd:complexType>
@XmlRootElement(name="Accepted")
public class Accepted extends ResponseType { }
<xs:complexType name="ResponseType">
    <xs:choice maxOccurs="unbounded">
        <xs:element name="name" type="xs:string"/>
        <xs:any namespace="##other" processContents="lax"/>
    </xs:choice>
</xs:complexType>

谢马根接受了。但是,为什么我需要这个实现呢?

是的,您需要定义类型ResponseType

大概是这样的:

<xsd:element name="Responses">
   <xsd:complexType>
      <xsd:choice maxOccurs="unbounded">
         <xsd:element ref="tns:Accepted"/>
         <xsd:element ref="tns:Rejected"/>
         <xsd:element ref="oth:Exception"/>
      </xsd:choice>
   </xsd:complexType>
</xsd:element>

<xsd:element name="Accepted" type="tns:ResponseType"/>
<xsd:element name="Rejected" type="tns:ResponseType"/>

<xsd:complexType name="ResponseType">
   <xsd:sequence>
     <xsd:element name="Id" type="xsd:anyURI"/>
     <!-- more valid elements -->
  </xsd:sequence>
</xsd:complexType>
@XmlRootElement(name="Accepted")
public class Accepted extends ResponseType { }
<xs:complexType name="ResponseType">
    <xs:choice maxOccurs="unbounded">
        <xs:element name="name" type="xs:string"/>
        <xs:any namespace="##other" processContents="lax"/>
    </xs:choice>
</xs:complexType>

您的最终元素将如下所示: 一些绳子 一些绳子


本来
somestring

对不起,我应该说ResponseType存在。我将对这个问题稍加修改。