Xml 通过XSD限制具有属性的元素数?

Xml 通过XSD限制具有属性的元素数?,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,有一段XML <items> <itemUID>uid-1</itemUID> <itemUID>uid-2</itemUID> <itemUID key="true">uid-3</itemUID> <itemUID>uid-4</itemUID> <itemUID>uid-5</itemUID> <itemU

有一段XML

<items>
    <itemUID>uid-1</itemUID>
    <itemUID>uid-2</itemUID>
    <itemUID key="true">uid-3</itemUID>
    <itemUID>uid-4</itemUID>
    <itemUID>uid-5</itemUID>
    <itemUID key="true">uid-6</itemUID>
    <itemUID>uid-7</itemUID>
</items>

uid-1
uid-2
uid-3
uid-4
uid-5
uid-6
uid-7
规则:元素
可以包含1到无界元素
itemUID
,但只有0或2或3个具有属性
键的元素


我可以仅使用XSD限制来定义此规则吗?

您不能在XSD 1.0中表达您的约束,但在XSD 1.1中,您可以使用
xs:assert
itemUID
元素和
key
属性限制为0、2、3个元素,如下所示:

  <xs:assert test="count(itemUID[@key]) = (0, 2, 3)"/>

这里是完整XSD中的上下文:

XSD 1.1
您不能在XSD 1.0中表达您的约束,但在XSD 1.1中,您可以使用
xs:assert
itemUID
元素和
key
属性限制为0、2、3个元素,如下所示:

  <xs:assert test="count(itemUID[@key]) = (0, 2, 3)"/>

这里是完整XSD中的上下文:

XSD 1.1