2013-12-20 2 views
0

Я хотел бы спросить, если это возможно в XML XSD схемы DECLARE зависимых атрибутов ...зависимостями

Пример:

<xsd:simpleType name="packCategories"> 
<xsd:restriction base="xsd:byte"> 
    <xsd:minInclusive value="0"/> 
    <xsd:maxInclusive value="4"/> 
</xsd:restriction> 
</xsd:simpleType> 

<xs:element name="pack"> 
<xs:complexType> 
    <!-- elements go here --> 
    <xs:attribute type="packCategories" name="category" use="required"/> 
    <xs:attribute type="xs:string" name="explanation" use="optional"/> 
</xs:complexType> 
</xs:element> 

Все кажется отлично здесь, ОДНАКО, я хочу объяснить атрибут должен быть ОБЯЗАТЕЛЬНЫМ, если атрибут категории равен 4. Возможно ли это? Может быть, с элементами?

ответ

2

Если вы используете XML Schema 1.0, вы не можете выразить такое ограничение в схеме, но вы можете использовать Schematron или проверить его на уровне приложения.

Если вы используете XML Schema 1.1, вы можете specify co-occurrence constraints с помощью XPath 2.0, используя xs:assert так:

<xs:element name="pack"> 
    <xs:complexType> 
     <!-- elements go here --> 
     <xs:attribute type="packCategories" name="category" use="required"/> 
     <xs:attribute type="xs:string" name="explanation" use="optional"/> 
     <xs:assert test="@explanation or @packCategories != 4"/> 
    </xs:complexType> 
    </xs:element> 
Смежные вопросы