在我的 xsd 模式中,我有一个 complexType“表达式”,它有 27 个元素,它们都扩展了一个通用的 complexType“StepElement”。这是表达式 complexType 的示例。(为简单起见,我只显示其中的 8 个。)
<xs:complexType name="expression">
<xs:sequence maxOccurs="unbounded">
<xs:element name="STEP_ANIMATION" type="Animation_Attributes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="STEP_EXPECT_REPLY" type="Expect_Reply_Attributes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="STEP_RESTART" type="Restart_Attributes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="STEP_REDIRECT" type="Redirect_Attributes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="STEP_SUBGOAL" type="Subgoal_Attributes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="STEP_TIMER" type="Timer_Attributes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="STEP_SITUATION" type="Situation_Attributes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="STEP_SOUND" type="Sound_Attributes" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="ID" type="xs:integer"/>
<xs:attribute name="SUCCESS_EVT" type="xs:string"/>
<xs:attribute name="DELAY" type="xs:float"/>
</xs:complexType>
这些元素类型中的每一个看起来像这样(它们都扩展了 StepElement 但具有不同的属性)
<xs:complexType name="Animation_Attributes">
<xs:complexContent>
<xs:extension base="StepElement">
<xs:attribute name="AGENT" type="xs:string" default="$CURRENTBOT"/>
<xs:attribute name="SUCCESS_EVT" type="xs:string"/>
<xs:attribute name="FAIL_EVT" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
这是 StepElement 的样子
<xs:complexType name="StepElement">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ID" type="xs:integer"/>
<xs:attribute name="ENGLISH" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
现在我遇到的问题是,当我解析这个模式时,JAXB 在 Expression 类中生成的 getter 方法是这样的
public List<StepElement> getSTEPANIMATIONAndSTEPEXPECTREPLYAndSTEPRESTART()
我是否在导致这种情况发生的架构结构中做错了什么,或者是否有调整方法名称的解决方案?