2015-02-19 3 views
0

У меня есть этот фрагмент схемы, который не проверяется.Ошибка проверки схемы XSD

<?xml version="1.1" encoding="UTF-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:group name="colorrgbGroup"> 
    <xs:all> 
     <xs:element name="r" type="xs:unsignedShort" minOccurs="1" maxOccurs="1"/> 
     <xs:element name="g" type="xs:unsignedShort" minOccurs="1" maxOccurs="1"/> 
     <xs:element name="b" type="xs:unsignedShort" minOccurs="1" maxOccurs="1"/> 
     <xs:element name="a" type="xs:unsignedShort" minOccurs="0" maxOccurs="1"/> 
    </xs:all> 
</xs:group> 

<xs:group name="colornameGroup"> 
    <xs:all> 
     <xs:element name="colorName" type="xs:normalizedString" minOccurs="1" maxOccurs="1"/> 
     <xs:element name="a" type="xs:unsignedShort" minOccurs="0" maxOccurs="1"/> 
    </xs:all> 
</xs:group> 

<xs:group name="colorpresetGroup"> 
    <xs:all> 
     <xs:element name="preset" type="xs:normalizedString" minOccurs="1" maxOccurs="1"/> 
     <xs:element name="a" type="xs:unsignedShort" minOccurs="0" maxOccurs="1"/> 
    </xs:all> 
</xs:group> 

<xs:element name="color"> 
    <xs:complexType> 
     <xs:choice minOccurs="1" maxOccurs="1"> 
      <xs:group ref="colorpresetGroup"/> 
      <xs:group ref="colornameGroup"/> 
      <xs:group ref="colorrgbGroup"/> 
     </xs:choice> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

Я пытаюсь сказать, что цвет элемент имеет один из трех возможных групп, как ребенок, и может быть только один из вариантов, один раз. Как вы можете видеть, все три варианта имеют альфа-канал как необязательный.

Если я меняю '<' xs: all '>' теги на '<' xs: sequence '>' теги, это проверяет правильно. Но для «colorrgbGroup» мы хотим, чтобы пользователь мог размещать RGBA, ABGR, ARGB, BGRA и т. Д., Поэтому мы предпочитаем использовать «<» xs: all '>' over '<' xs: sequence ' >».

Я использую это website, чтобы проверить мою проверку.

Каждый из '<' xs: group '>' options in my '<' xs: choice '>' дает мне следующую ошибку.

Ошибка - строка 30, 51: org.xml.sax.SAXParseException; lineNumber: 30; columnNumber: 51 cos-all-limited. 1.2: Группа моделей «все» должна появляться в частице с «{'min встречается»}' = '{' max встречается '}' = 1 и , что частица должна быть частью пары, которая составляет '{ 'content Тип'} 'определения сложного типа.

Раньше я рассматривал схемы и модифицировал существующие схемы, но это мой первый раз, когда я пишу один с нуля. Любая помощь очень ценится!

Спасибо! Todd

ответ

1

В принципе, вы не можете смешивать xs: все с xs: choice или xs: sequence. Если ваша модель контента использует xs: all, то это все, что она может использовать.

Имя правила соз-все-ограниченный вид-сумм его ...

Это не будет разрешено, даже если не было никаких общих элементов всей группы, так что это не просто двусмысленность (из столкнувшись с «а» в качестве первого ребенка и не зная, какую группу использовать), это проблема. Это просто то, что вы не можете сделать.

+0

Спасибо, я боялся, что это может быть так. – Todd

Смежные вопросы