2014-11-18 4 views
0

я получаю ошибку на проверке:об объявлении атрибута

Error - Line 14, 36: org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 36; s4s-elt-must-match.1: Содержимое «simpleType» должно соответствовать (аннотация ?, (ограничение | список | объединение)). Проблема была найдена, начиная с атрибута:.

Как это решить?

Мой фрагмент XML

<CHANEL_NAME lang="RUS/MD">N4</CHANEL_NAME> 

И XSD:

<xs:element name="CHANEL_NAME"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:length value="40"/> 
     </xs:restriction> 
     <xs:attribute name="lang"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:enumeration value="MD"/> 
        <xs:enumeration value="RUS"/> 
        <xs:enumeration value="RUS/MD"/> 
       </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 
    </xs:simpleType> 
</xs:element> 

Так что мне нужно в атрибуте 'язык' только определенные значения, как 'MD', 'RUS' или 'RUS/MD'. Я читал примеры, и я думаю, все в порядке.

Или перечисление только для элементов, а не для атрибутов?

ответ

0

Проблема первая simpleType. Простые типы не могут иметь атрибут.

Возможно, вам понадобится сложный тип с простым контентом. Что-то вроде: (. Не тестировался)

<xs:element name="CHANEL_NAME"> 
    <xs:complexType> 
    <xs:simpleContent> 
     <xs:restriction base="xs:string"> 
     <xs:length value="40"/> 
     <xs:attribute name="lang"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:enumeration value="MD"/> 
      <xs:enumeration value="RUS"/> 
      <xs:enumeration value="RUS/MD"/> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:attribute> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

Также рассмотрим именовании анонимные типы.

пс. Также рассмотрите использование/ограничение xs:language как типа языка.

Всего наилучшего.

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