在没有新元素的XSD复杂类型中包含元素

时间:2009-10-16 12:05:19

标签: xsd element complextype

我有这种复杂的类型:

<xsd:complexType name="Identifier">
    <xsd:sequence>
        <xsd:element name="Id" type="xsd:string"/>
        <xsd:element name="Version" type="xsd:string"/>
    </xsd:sequence>
</xsd:complexType>

现在我想把它包含在另一个复杂类型中,我一直这样做:

<xsd:complexType>
    <xsd:sequence>
        <xsd:element name="Id" type="Identifier"/>
              <!-- More elements here -->
    </xsd:sequence>
</xsd:complexType>

这不是我真正想要的。我想直接在我的第二个复杂类型中包含Identifier类型的元素,而不创建新元素。例如。就像这样做:

<xsd:complexType>
    <xsd:sequence>
        <xsd:element name="Id" type="xsd:string"/>
        <xsd:element name="Version" type="xsd:string"/>
              <!-- More elements here -->
    </xsd:sequence>
</xsd:complexType>

希望这是有道理的。

提前致谢。

2 个答案:

答案 0 :(得分:7)

您可以扩展类型,如下所示:

<xsd:complexType name="MySubType">
    <xsd:complexContent>
        <xsd:extension base="Identifier">
                       <xsd:sequence>
                            <!-- More elements here -->
                       </xsd:sequence>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>

答案 1 :(得分:1)

此复杂类型将始终解析为<​​/ p>

<Identifier>
   <Id>string</Id>
   <Version>string</Version>
</Identifier>

如果您不想要子结构,可以将Id和Version定义为元素并使用

引用它们
<xsd:element ref="Id"/>
<xsd:element ref="Version"/>

稍后。但是你不能保证它们都会出现

您还可以将Id和Version属性设置为复杂类型

中的Identifier元素 祝你好运 麦克