ok, here is the schema in RelaxNG-compact.
It is more complete of course, but IMHO less readable then a non-formal view I 
used before.

There are few differences with tables:
- <colgroup> removed
- "align" and "valign" attributes added for all table tags where it is
  supported by XHTML strict.


-- 
Kirill Subbotin
Software Developer
[EMAIL PROTECTED] | eZ Systems | ez.no

default namespace = "http://ez.no/ezpublish4/xmltext";
namespace link = "http://ez.no/ezpublish4/xmltext/linked";

start = element document { block* }

attrs = attribute class { text }?,
        attribute id { text }?

link.content = ( text
           | element br { empty }
           | element strong { attrs, inline }
           | element em { attrs, inline }
           | element sub { attrs, inline }
           | element sup { attrs, inline }
           | element strike{ attrs, inline }
           | element u{ attrs, inline }
           | element code{ attrs, inline }
           | element link{ attrs,
                           attribute href { text },
                           attribute view { text }?,
                           attribute title { text }?,
                           link.content+ }
           | element embed-inline { attrs,
                                    attribute src { text },
                                    attribute view { text }? }
           | element anchor { attribute name { text } }
           | custom.inline )

inline = ( link.content | link )+

table.body = attribute align { text }?,
             attribute valign { text }?,
             element tr{
                attrs,
                attribute align { text }?,
                attribute valign { text }?,
                ( element td{ attribute colspan { text }?,
                              attribute rowspan { text }?,
                              attribute align { text }?,
                              attribute valign { text }?,
                              block* }
                  & element th{ attribute scope { text }?,
                                attribute colspan { text }?,
                                attribute rowspan { text }?,
                                attribute align { text }?,
                                attribute valign { text }?,
                                block* } )
             }+

table = element table{
           attrs,
           element caption { attrs }?,
           element col { attrs,
                         attribute span { text }?,
                         attribute width { text }?,
                         attribute align { text }?,
                         attribute valign { text }?
                       }*,
           element thead { table.body }?,
           element tfoot { table.body }?,
           element tbody { table.body }
        }

list.content = element li{ attrs, block+ }+

block = element h1 { attrs, inline }
        | element h2 { attrs, inline }
        | element h3 { attrs, inline }
        | element h4 { attrs, inline }
        | element h5 { attrs, inline }
        | element h6 { attrs, inline }
        | element p { attrs, inline }
        | element embed { attrs,
                          attribute src { text },
                          attribute view { text }?,
                          attribute align { text }?,
                          attribute link:href { text }?,
                          attribute link:url_id { text }?,
                          attribute link:target { text }?,
                          attribute link:view { text }?
                          }
        | table
        | element ul{ attrs, list.content }
        | element ol{ attrs, list.content }
        | element literal{ attrs, text }
        | custom.blocks

-- 
Components mailing list
Components@lists.ez.no
http://lists.ez.no/mailman/listinfo/components

Reply via email to