2016-02-25 4 views
2

Мне нужно проверить, что если imagetype = I то docext должен быть только TIFF/tiff и если imagetype = N то docext должен быть PDF/pdf. Иначе валидация не сработает. Я пишу XSD для этого и не знаю, как реализовать это ограничение. В настоящее время я использую XSD 1.0.Зависимость одного элемента на другой с помощью XSD

<xs:element name="docext" minOccurs="1" maxOccurs="1"> 
    <xs:simpleType>      
    <xs:restriction base="xs:string"> 
     <xs:pattern value="((T|t)(I|i)(F|f)(F|f))|((P|p)(D|d)(F|f))" /> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:element> 
<xs:element name="imagetype" minOccurs="1" maxOccurs="1"> 
    <xs:simpleType> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="N" /> 
     <xs:enumeration value="I" /> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

ответ

3

XSD 1.0 не может отвечать вашим требованиям, как указано.

Ваши варианты включают в себя одно из следующих действий:

  1. Редизайн ваш XML. Если это возможно, это лучший вариант. Тип информация обычно лучше передается через имена элементов, чем значения элементов; такая конструкция может часто устранять необходимость в ограничениях зависимостей за пределами того, что может быть выражено с помощью базовых требований модели контента .
  2. Использование утверждений XSD 1.1. Вы можете использовать XPath для указания ограничений на точкой общего предка до docext и imagetype. Вам нужно будет рассмотреть больше вашего XSD, чем показано, если вам нужно пройти этот маршрут.
Смежные вопросы