2016-01-15 1 views
1

Дизайн XML документ я работаю имеет несколько условий:Может ли схема XSD иметь разные условия, основанные на наличии нескольких элементов?

Если один элемент Colormap существует:

<ColorMap>no attributes needed</ColorMap>

Если более чем один элемент Colormap существует:

<Colormap version="1.0" default="true">Both these attributes are required</ColorMap>

Есть ли способ, которым я n создать схему XSD, которая будет проверять это условие?

ответ

2

Нет, XSD 1.0 не может сдерживать необходимость атрибутов на основе количества присутствующих элементов. Вам придется перепроектировать ваш XML или выполнить такую ​​проверку вне XSD.

В XSD 1.1 вы можете выразить такое ограничение, используя xs:assertion.

+0

https://www.w3.org/TR/xmlschema11-1/#cAssertions, где вы найдете дополнительную информацию. Самое главное иметь в виду, что утверждения XSD 1.1 - это выражения XPath, а это означает, что они очень насыщены выразительностью. – dret