我如何重用复杂的类型来定义自身的序列(XML模式)

时间:2018-10-18 23:17:04

标签: xml xsd dtd

我是xml模式的新手。我必须手动转换一个dtd文件。这是两行

<!ENTITY % field "a|b|c">
<!ELEMENT article (%field;)*>

我想在不重写代码的情况下定义与(a | b | c)等价的复杂类型,以及与(a | b | c)*等价的复杂类型。 我定义(a | b | c)的方式是

<xs:complexType name="abc">
    <xs:choice>
        <xs:element ref="a"/>
        <xs:element ref="b"/>
        <xs:element ref="c"/>
    </xs:choice>
</xs:complexType>

但是我不知道如何使用先前的定义来定义(a | b | c)*,并且不像我在下面那样添加子元素

<xs:element name="article">
<xs:complexType name="abc*">
    <xs:sequence>
        <xs:element name="abcelement" type="abc" minOccur="0" maxOccur="unbounded"/>
    </xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="article>
 <xs:complexType name="abc*">
        <xs:choice minOccur="0" maxOccur="unbounded">
            <xs:element ref="a"/>
            <xs:element ref="b"/>
            <xs:element ref="c"/>
        </xs:choice>
    </xs:complexType>
</xs:element>

谢谢

1 个答案:

答案 0 :(得分:0)

将abc定义为一个xs:group,它是a | b | c的选择,然后您可以直接在复杂类型中引用此命名组(a),在另一个允许重复的复杂类型中引用(b)

var grid = $("#grid").data("kendoGrid");
grid.dataSource.add(yourElements);

未经测试-可能有错别字。