Может ли диапазон допустимых значений в XML-схеме зависеть друг от друга?

Предположим, я пишу схему для XML-документа, в котором есть документ, описывающий фигуры на линейной игровой доске:

<piece length="5" position="4" />

где атрибуты length и position оба являются неотрицательными целыми числами, большими 0. Между length и position существует четкая связь, которая еще больше ограничивает набор значимых значений. То есть position никогда не может быть больше length, например. XML-фрагмент

<piece length="5" position="6" />

явно неразумно.

Мой вопрос заключается в том, есть ли способ применить это ограничение с помощью XML-схемы? Если не на языке W3C XML Schema, как насчет RELAX NG? Предположим, что то, о чем я прошу, невозможно в неограниченном случае (т. е. для любого положительного целого числа), как насчет ограниченного, конечного набора возможностей? То есть предположим, что мы говорим, что length никогда не может быть больше четырех. Учитывая вышеупомянутое ограничение, остается только 4 возможных значения для length. Будет ли тогда возможно выполнить то, что я хочу, даже если это означает вручную?


person junius    schedule 01.02.2017    source источник


Ответы (1)


Чтобы выразить такие ограничения, вам нужны утверждения XSD 1.1, например

<xsl:assert test="@position lt @length"/>

XSD 1.1 реализован в Saxon, Xerces и Altova.

Альтернативой является использование Schematron.

person Michael Kay    schedule 01.02.2017