문제

I have this complex type:

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

Now I want to include this in another complex type and I've been doing that like this:

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

This isn't what I really want though. I want to include the Identifier type's elements directly in my second complex type without creating a new element. E.g. the same as just doing this:

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

Hope that makes sense.

Thanks in advance.

도움이 되었습니까?

해결책

You can extend types, like this:

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

다른 팁

this complex type will always resolve to

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

if you don't want a child structure, you could define Id and Version as elements and reference them using

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

later on. But then you don't have the guarantee that they both occur

You can also make Id and Version attributes to the Identifier element in a complex type

good luck Mike

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top