проверка схемы XML, содержащий логические значения - PullRequest
4 голосов
/ 05 октября 2009

Привет, у меня есть xml, как это:

<xml><fullname>
<name attrib="true"/>
<lastname1 attrib="false"/>
<lastname2 attrib="false"/></fullname></xml>

Мне нужно создать схему для проверки ее таким образом, чтобы она позволяла только 1 атрибуту со значением «true» (а остальные должны быть ложными [атрибут attrib определен как xs: boolean]) , поэтому я добавил уникальную проверку в полное имя элемента следующим образом:

   <xs:unique name="attribcheck">
<xs:selector xpath="name|lastname1|lastname2"/>
<xs:field xpath="@attrib"/>

Конечно, он обнаружит, что есть дублированное «true», но также он обнаружит дублированное «false». Кто-нибудь знает, есть ли способ установить ограничение на какое значение, чтобы применить уникальное ограничение? это означает, что я могу гарантировать, что только один из них является «истинным» в любой момент времени

1 Ответ

2 голосов
/ 06 октября 2009

XML Schema 1.0 не поддерживает ограничения совместного использования - вы не можете выразить условие для одного элемента на основе значения другого.

Это изменится в XML Schema 1.1 , но последняя находится только в стадии черновика и все еще изменяется, и не будет широко внедрена в течение некоторого времени.

Однако, если вы используете Saxon 9.2 , теперь он имеет предварительную поддержку XML Schema 1.1. См. Таблицу элементов , чтобы определить, какая версия требуется для проверки схемы.

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