如何定义要在空元素和非空元素中重用的一组属性?

时间:2017-12-21 23:33:07

标签: xml xsd

我想定义一个支持这样的元素的模式:

<one att1="foo" att2="bar"/>
<two att1="foo" att2="bar">TEXT</two>
<three att1="Foo" att2="bar" att3="baz"/>

如何定义类型层次结构以包含att1和att2?

<complexType name="Att">
    <attribute name="att1" type="string"/>
    <attribute name="att2" type="string"/>
</complexType>

<complexType name="One">
    <complexContent>
        <extension base="tns:Att"/>
    </complexContent>
</complexType>


<complexType name="Two">
    <simpleContent>
        <extension base="tns:Att"/>
    </simpleContent>
</complexType>

<complexType name="Three">
    <complexContent>
        <extension base="tns:Att">
            <attribute name="att3" type="string"/>
        </extension>
    </complexContent>
</complexType>

这对于Two并不起作用,我在使用simpleContent扩展complexContent时遇到错误

1 个答案:

答案 0 :(得分:0)

这有效:

<complexType name="Att" mixed="true">
    <attribute name="att1" type="string"/>
    <attribute name="att2" type="string"/>
</complexType>

...

<complexType name="Two">
    <simpleContent>
        <restriction base="tns:Att">
            <simpleType>
                <restriction base="string"/>
            </simpleType>
        </restriction>
    </simpleContent>
</complexType>