我正在 XSD 1.1 中为填字游戏创建一个模式。我的元素之一是<dimensions>
. 例子:
<xs:element name="dimensions">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d+x\d+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
生成的 XML 看起来像<dimensions>21x21</dimensions>
,这意味着拼图网格是 21 平方乘 21 平方。
我还<cell>
为拼图中的每个方格设置了一个元素。因此,对于尺寸为 21x21 的拼图,我将有 441 个<cell>
. 每个<cell
> 都有一个<coordinates>
元素描述它在网格中的位置:
<xs:element name="cell">
<xs:complexType>
<xs:sequence>
<xs:element name="coordinates">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d+,\d+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
所以格子左下角的方格位置用 表示<coordinates>21,1</coordinates>
,表示它在第 21 行第 1 列。
我想做以下事情:
要求
<cell>
每个方格都有一个,基于<dimensions>
. 例如,如果尺寸是 21x21,则必须有 441 个实例<cell>
--no more, not less。要求
<coordinates>
for each<cell>
是唯一的,并且在 的参数范围内<dimensions
。换句话说,对于一个 21x21 的网格,坐标的每个轴必须用 1 到 21 之间的数字表示,并且 441 种组合中的每一种只能使用一次。