代码之家  ›  专栏  ›  技术社区  ›  ng5000

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

  •  6
  • ng5000  · 技术社区  · 15 年前

    我有这种复杂的类型:

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

    希望这是有道理的。

    提前谢谢。

    2 回复  |  直到 15 年前
        1
  •  7
  •   skaffman    15 年前

    <xsd:complexType name="MySubType">
        <xsd:complexContent>
            <xsd:extension base="Identifier">
                           <xsd:sequence>
                                <!-- More elements here -->
                           </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
    
        2
  •  1
  •   MikeD    15 年前

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

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

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

    祝你好运