Xml XSD:要求属性具有特定值

Xml XSD:要求属性具有特定值,xml,xsd,Xml,Xsd,我正在尝试创建一个XSD,它指定一个元素,但它似乎只用于指定唯一的元素,而不是属性值。您可以通过使用minOccurs=4和maxOccurs=4声明元素b来强制执行第一条规则,如下所示: <xs:element name="a"> <xs:complexType> <xs:sequence> <xs:element name="b" minOccurs="4" maxOccurs="4"/> </xs:seq

我正在尝试创建一个XSD,它指定一个
元素,但它似乎只用于指定唯一的元素,而不是属性值。

您可以通过使用
minOccurs=4
maxOccurs=4
声明元素
b
来强制执行第一条规则,如下所示:

<xs:element name="a">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="b" minOccurs="4" maxOccurs="4"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>


但是,您不能使用XSD来强制执行第二条规则。例如,如果您确实想这样做,您可以将4个
b
元素替换为
b1
b2
b3
b4
,每个元素都隐式表示
c
属性1到4,分别。

您可能需要查看Schematron以获得此类限制/验证。您可以将
a/b/@c
设置为具有全局唯一性约束的键,然后为min=1和max=4指定一个具有facet的整数类型。仍然不允许
1,3,2,4
尽管。。。
<a>
  <b c="1" d="valueof1" />
  <b c="1" d="valueof1_other" />
  <b c="3" d="valueof3" />
  <b c="4" d="valueof4" />
</a>
<a>
  <b c="1" d="valueof1" />
  <b c="2" d="valueof2" />
  <b c="3" d="valueof3" />
  <b c="4" d="valueof4" />
  <b c="5" d="valueof5" />
</a>
<xs:element name="a">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="b" minOccurs="4" maxOccurs="4"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>