#xsd
#xsd
Вопрос:
Я должен определить группу атрибутов для 2 взаимоисключающих элементов данных. В приведенном ниже примере, если TO_DT
присутствует FROM_DT
, должно присутствовать, а TO_DT
нет, то FROM_DT
этого нет.
Я думал о создании их как обязательных атрибутов и определении attributegroup как необязательных, но это не работает:
<xs:attributeGroup name="DateRangeAttributes" id="Element_Common_545">
<xs:attribute name="TO_DT" type="xs:date" use="required" id="Element_Common_547"/>
<xs:attribute name="FROM_DT" type="xs:date" use="required" id="Element_Common_546"/>
<xs:attributeGroup>
Кто-нибудь может предложить способ справиться с этим, используя атрибуты
Ответ №1:
Извините, такого рода ограничения не могут быть применены XML Schema (1.0). Вам придется применить его в другом месте (например, с помощью code или XSLT) или изменить формат. Возможности:
- Укажите значения по умолчанию, чтобы оба они эффективно присутствовали всегда.
- Используйте один атрибут, содержащий список дат длиной 2.
- Используйте элементы (вы также можете управлять порядком, в отличие от атрибутов).
Ответ №2:
Эти ограничения могут быть выражены в Schematron и в XML Schema 1.1.