如何根据XSD中另一个XML列表的大小来限制XML列表的大小?

时间:2017-01-25 05:58:00

标签: xml xsd xsd-1.1 xsd-1.0

我有一个XML Schema,其片段如下所示:

inputFields

我想对列表outputFields和{{1}}的大小进行限制/验证。 我怎样才能在XML Schema中实现它?

1 个答案:

答案 0 :(得分:2)

XSD 1.1

您可以通过将inputFieldsoutputFields中的数字元素的数量限制为相等来通过XSD 1.1中的断言来执行此操作:

<xs:assert test="count(inputFields/field) = count(outputFields/field)"/>

您可以将其放在包含inputFieldsoutputFields的元素声明中。

XSD 1.0

您无法在XSD 1.0中使用xs:assert,并且无法根据您当前的XML设计表达您的约束。但是,如果您重新设计了XML,以便首先将输入和输出字段配对在一起,

            <xs:sequence maxOccurs="unbounded">
                <xs:element name="inputField" type="field"/>
                <xs:element name="outputField" type="field"/>
            </xs:sequence>

你自然会将它们的出现次数限制为相等,并且你可以使用XSD 1.0。