2010-11-23 20 views
0

チェスゲームのデータベース形式のXMLスキーマを作成しています。移動は正規表現で検証する特定の形式になっています。次のようになります。<move>Pe2e4</move><move&>要素には、移動を検証する必要があるため、<variation>' element. The problem is, I can't simply do mixed = "true" `を含めることもできます。ここでは、スキーマファイルの関連部分である:XMLスキーマの混在コンテンツ

<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. は私timecomment属性を持っています。

ところで、スキーマ全体が

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

一部せずに細かい検証します。

+0

@ alpha123:これは一般的なスキーマではありません。 'turn :: =(move | variation?)'のような2つの要素を使用する方がより明確になるでしょう。 –

+0

@Alejandro:そうですね、私は別の方法でアレンジすることができました。私は、テキストとオプションの他の要素といくつかのオプションの属性の両方を含むことができる特別な型の要素を必要とします。それはあまりにも厳しいはずはありませんよね? –

+0

@ alpha123:混合コンテンツモデルは、主にいくつかのインラインセマンティックを持つテキストに使用されます。それは誰もがそれを否定する方法です。何が読みやすくなっていますか?この ' Pe2e4 'またはこの ' Pe2e4'? –

答えて

0

私は、AlejandroとNic Gibsonのアドバイスのおかげでスキーマを再構成しました。 <のバリエーション>要素は、ムーブ>要素の外にあります。

関連する問題