Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何扩展complexType,但子类型中没有子元素?_Java_Xml_Xsd_Jaxb - Fatal编程技术网

Java 如何扩展complexType,但子类型中没有子元素?

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

我目前拥有xsd的以下部分

<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元素,而不是创建更多的类型。好吧,我觉得自己真的很愚蠢…我想我试过了,或者看到了一个错误或其他东西,但它今天起作用了…哦,好吧。谢谢