[Home] [By Thread] [By Date] [Recent Entries]

  • To: xml-dev@l...
  • Subject: ambiguous content model
  • From: Eike Jordan <jordan@f...>
  • Date: Wed, 11 Jun 2003 13:36:04 +0200
  • Reply-to: jordan@f...
  • User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030312

Hello list,

considering the following content model

   <table type="row">
     <title/>
     <tgroup>
       <title/>
       <integer/>
       <void/>
       <integer/>
     </tgroup>
     <tgroup>
       <title/>
       <void/>
       <real/>
       <real/>
     </tgroup>
   </table>

should be valid and

   <table type="row">
     <title/>
     <tgroup>
       <title/>
       <integer/>
       <real/>
       <real/>
       <integer/>
       <void/>
     </tgroup>
   </table>

should *not*

which means that a table should consist of *one* title and *one-or-more* table-groups.
each table-group should consist of *one* title and *one-or-more* of
*integer-or-void*, *real-or-void* or *text-or-void*
with my approach i'm caught in a trap of an 'ambigous content model':

<!ENTITY % real.mix    "(real    | void)">
<!ENTITY % integer.mix "(integer | void)">
<!ENTITY % text.mix    "(text    | void)">
<!ENTITY % tableContent.mix "
     ((%integer.mix;)+)     |
     ((%real.mix;)+)        |
     ((%text.mix;)+)
">

<!ENTITY % tableType.att "type  (row|column) #REQUIRED">

<!ELEMENT table (
    title,
   (tableInput)+,
   (description)?)
 >
<!ATTLIST table
    tableType.att;
 >

<!ELEMENT tableInput (
   (
    (title),
    (%tableContent.mix;)
   )
)>
<!ELEMENT integer (#PCDATA)>
<!ELEMENT real    (#PCDATA)>
<!ELEMENT void    (#PCDATA)>
<!ELEMENT text    (#PCDATA)>
<!ELEMENT title   (#PCDATA)>
<!ELEMENT description (
   (text)+)
 >

i don't know if this problem can be solved with a XML-DTD but perhapes someone
has an idea how to make it 'non-ambiguous'

thanx in advance
-- 
Eike Jordan  <jordan@f...>


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member