maxoccurs的XSD验证限制

时间:2013-06-10 12:43:49

标签: xsd xsd-validation

嗨,我有这种XML

我想编写一个验证此数据的XML:

<?xml version="1.0" encoding="UTF-8"?>
<Entry attribute1="value1" attribute2="Value2">
    <subEntry tagX="xValue1" tagy="yValue"/>
</Entry>

但未验证

<?xml version="1.0" encoding="UTF-8"?>
<Entry attribute1="value1" attribute2="Value2">
    <subEntry tagX="xValue1" tagy="yValue"/>
    <subEntry tagX="xValue1" tagy="yValue"/>
</Entry>

我想限制subEntries的数量:

序列的maxOccurs不检查subEntries的数量。

XSD是:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="Entry">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="subEntry"/>
            </xs:sequence>
            <xs:attribute1 name="dateEmission" type="xs:dateTime" use="required"/>
            <xs:attribute2 name="emetteur" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Entry">
        <xs:complexType>
            <xs:attribute name="tagX" type="xs:string" use="required"/>
            <xs:attribute name="tagy" type="xs:decimal" use="optional"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

1 个答案:

答案 0 :(得分:0)

您需要在元素声明中添加maxOccurs。将其更改为

<xs:sequence>
     <xs:element ref="subEntry" maxOccurs="1" />
</xs:sequence>