Java 如何扩展complexType,但子类型中没有子元素?
我目前拥有xsd的以下部分Java 如何扩展complexType,但子类型中没有子元素?,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我目前拥有xsd的以下部分 <xs:element name="requestExtension"> <xs:complexType> <xs:complexContent> <xs:extension base="abstractRequest"> <xs:sequence> <xs:element
<xs:element name="requestExtension">
<xs:complexType>
<xs:complexContent>
<xs:extension base="abstractRequest">
<xs:sequence>
<xs:element name="unusedReqPart" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
我需要requestExtension来扩展abstractRequest,但是如何去掉unusedReqPart,使我的jaxb生成仍然有效
为清晰起见进行编辑:我“希望”包含超级类的元素。我不想删除它们。我只想删除上面名为“unusedReqPart”的子类型元素。我只是暂时把它放在那里,以便我的jaxb东西能够正确编译。我已经通过在那里使用minOccurs=“0”使其遵守现有协议,因为该元素从未被使用过(因此,如果可以的话,我更愿意完全删除它)
谢谢,
Dean您可以将abstractRequest分为两种类型,一种(A)扩展另一种(B),其中A仅定义A所需的部分。然后,您的requestExtension可以扩展B,因此不会有不需要的部分。当您想要限制来自父元素的元素时,您应该使用以下方法:
<xs:restriction base="abstractRequest">
<xs:sequence>
</xs:sequence>
</xs:restriction>
这将阻止元素从父元素生成到子元素。这几乎像是一个诡计问题。。。除非语言是什么,否则它很简单:
<xs:element name="requestExtension">
<xs:complexType>
<xs:complexContent>
<xs:extension base="abstractRequest"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
没有理由不使用“空”粒子扩展它。反过来,它允许您拥有一个具体的(因此是可用的)类型,而不需要在基类型上添加任何新内容
我相信你不会想去限制(如一个答案所述);这样做的效果是,它抹去了整个内容模型(实际上使其为空)
听到JAXB不与我上面提议的合作,我会感到惊讶;如果您发现没有,请使用您正在使用的JAXB的特定版本号以及未通过验证的生成类片段更新您的帖子。I“想要”继承超级类型中的所有元素。我只是不想让你看到的未使用的部分被定义为所有。但是我想要子类型,子类型应该只有超类型的元素。如何做到这一点?我的abstractRequest(这里没有显示)有4个元素,我希望这些元素成为其中的一部分(这只是我扩展它的部分原因)。我只是想删除上面的unusedReqPart元素,而不是创建更多的类型。好吧,我觉得自己真的很愚蠢…我想我试过了,或者看到了一个错误或其他东西,但它今天起作用了…哦,好吧。谢谢