6

我有这个复杂的类型:

<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>

不过,这不是我真正想要的。我想将标识符类型的元素直接包含在我的第二个复杂类型中,而不创建新元素。例如,与这样做相同:

<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>

希望这是有道理的。

提前致谢。

4

2 回答 2

7

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

<xsd:complexType name="MySubType">
    <xsd:complexContent>
        <xsd:extension base="Identifier">
                       <xsd:sequence>
                            <!-- More elements here -->
                       </xsd:sequence>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>
于 2009-10-16T13:03:45.180 回答
1

这种复杂类型将始终解析为

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

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

<xsd:element ref="Id"/>
<xsd:element ref="Version"/>

稍后的。但是你不能保证它们都会发生

您还可以为复杂类型中的 Identifier 元素设置 Id 和 Version 属性

祝你好运迈克

于 2009-10-16T12:55:02.247 回答