2010-12-13 3 views
0

Что бы соответствующий XML Schema Definition выглядеть на следующий код XML:XML Schema Definition Проблема

<Categories> 
    <Category id="1">One</Category> 
    <Category id="2">Two</Category> 
    <Category id="3">Three</Category> 
</Categories> 

Я просто не могу узнать, как объявить PCDATA И аннотацию в то же время.

Спасибо!

ответ

1

Я не уверен, что вы имеете в виду, когда упоминаете «PCData» и «аннотацию».

Вот очень простая схема на основе XML вы предоставили:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Categories"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Category" maxOccurs="unbounded"> 
        <xs:complexType> 
         <xs:simpleContent> 
          <xs:extension base="xs:string"> 
           <xs:attribute name="id" type="xs:int" use="required"/> 
          </xs:extension> 
         </xs:simpleContent> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element></xs:schema> 
+0

cvc- complex-type.2.1: Элемент 'Категория' не должен содержать элемент или элемент информации элемента [children], поскольку тип содержимого типа пуст. –

+0

Как вы, возможно, заметили, вы столкнулись с моей проблемой с вашей декларацией .... –

+0

Я не могу поместить один, два или три в тег элемента (который я назвал PCData - извините, если это вводит в заблуждение) –

0

Ok получил его:

<xs:complexType name="Cities"> 
    <xs:sequence> 
     <xs:element name="City" minOccurs="1" maxOccurs="unbounded"> 
      <xs:complexType> 
       <xs:simpleContent> 
        <xs:restriction base="xs:string"></xs:restriction> 
       </xs:simpleContent> 
       <xs:attribute name="id" type="xs:integer" /> 
      </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType> 
+0

И ТАК, как он работает с генерацией JAXB: –

4

И вот как это работает даже с JAXB

<xs:complexType name="Cities"> 
     <xs:sequence> 
      <xs:element name="City" minOccurs="1" maxOccurs="unbounded"> 
       <xs:complexType mixed="true"> 
        <xs:simpleContent> 
         <xs:extension base="xs:string"> 
          <xs:attribute name="id" type="xs:integer" /> 
         </xs:extension> 
        </xs:simpleContent> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType>