Я создаю схему в 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 экземпляр _12 _-- ни больше, ни меньше.Требовать, чтобы
<coordinates>
для каждого<cell>
были уникальными и подпадали под параметры<dimensions
. Другими словами, для сетки 21x21 каждая ось координат должна быть представлена числом от 1 до 21, и каждая из 441 комбинации может использоваться только один раз.