Каков правильный синтаксис XSD для ограничения значений атрибутов в списке элементов? - PullRequest
0 голосов
/ 31 марта 2010

Какой правильный синтаксис для схемы XSD для определения следующего ограничения:

В списке элементов мы должны указать, что атрибут может содержать значение «c» неограниченное количество раз, а значение «b» - ноль или только один раз.

Например, правильный xml выглядит так:

<root>
<elem atr="c">111</elem>
<elem atr="c">222</elem>
<elem atr="b">333</elem>
<elem atr="c">444</elem>
<elem atr="c">555</elem>
</root>

И неправильный:

<root>
<elem atr="c">111</elem>
<elem atr="c">222</elem>
<elem atr="b">333</elem>
<elem atr="c">444</elem>
<elem atr="b">555</elem>
</root>

Ответы [ 2 ]

3 голосов
/ 31 марта 2010

Я думаю, ты не можешь этого сделать. Ближайшим является xsd: key:

<xsd:key name="idKey">
  <xsd:selector xpath="elem"/>
  <xsd:field xpath="@atr"/>
</xsd:key>

Но это не совсем то, что вы хотите.

XML-схема обычно имеет очень ограниченные средства для определения зависимых от значения ограничений. Посмотрите на Схематрон.

0 голосов
/ 31 марта 2010

Насколько я знаю, это невозможно. Вы можете сделать atr уникальным, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...