2010-11-23 4 views
0

Я пишу XML-схему для формата базы данных для шахматных игр. Ходы находятся в определенном формате, который я проверяю с помощью регулярного выражения; это выглядит примерно так: <move>Pe2e4</move>. Элемент <move&> также может содержать <variation>' element. The problem is, I can't simply do mixed = "true" `, потому что мне нужно проверить ход. Вот соответствующая часть файла схемы:Смешанный контент XML Schema

<xs:element name="move"> 
    <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="moveType"> 
       <xs:attribute ref="time"/> 
       <xs:attribute ref="comment"/> 
      </xs:extension> 
     </xs:simpleContent> 
     <xs:sequence> 
      <xs:element ref="variation" minOccurs="0" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

moveType является тип для движения, что делает проверку.

Так может кто-нибудь объяснить, как я могу:

  1. у меня проверка ход регулярных выражений,
  2. есть мой <variation> элемент, и
  3. мои time и comment атрибуты.

Кстати, вся схема проверяет нормально без

<xs:sequence> 
    <xs:element ref="variation" minOccurs="0" maxOccurs="unbounded"/> 
</xs:sequence> 

части.

+0

@ alpha123: Это не общая схема, я думаю. Было бы более понятным использовать два элемента, таких как `turn :: = (move | variant?)` – 2010-11-23 23:05:00

ответ

0

Я закончил реорганизацию схемы благодаря советам Алехандро и Ник Гибсон. < изменение > элемент сейчас за пределами < двигаться > элемент.

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