проверка схемы XML, содержащего логические значения

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

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

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

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

Of course, it will detect that there is a duplicated "true", but also, it will detect a duplicated "false". Does anyone know if there is a way to set a restriction on which value to apply the unique constraint? meaning that i can ensure that only one of them is "true" at any given time


person amorales    schedule 05.10.2009    source источник


Ответы (1)


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

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

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

person lavinio    schedule 06.10.2009
comment
Спасибо, думаю, попробую использовать предварительную поддержку схемы 1.1. - person amorales; 08.10.2009