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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何定义要在空元素和非空元素中重用的一组属性?相关的知识,希望对你有一定的参考价值。

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

<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时遇到错误

答案

这有效:

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

以上是关于如何定义要在空元素和非空元素中重用的一组属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GraphQL Nexus 的数组中定义非空元素?

置换元素和非置换元素

如何在elasticsearch的嵌套聚合中存储空字段和非空字段?

七数组和集合(一维数组和二维数组的声明以及使用,ArrayList类,HashTable,List,Directory字典等常用集合(泛型和非泛型))

如何像 uitableviewcell 一样重用/回收自定义元素?

数据结构与算法概念