{gidoo code}

gidooTML

Introduction

gidooML is a mainly a subset of XHTML. We reduced the use of attributes so that it is not possible for the editor to change the layout and appearance of the website but only the content and the structure of the text. This gives the control of the layout to the designers and makes the content of the pages much more readable and enforces the authors to use elements with semantic meanings instead of changing the style-attribute of an element.

Relax NG

Here is the Relax NG compact Schema, a description of the elements will follow.

# this is gidooTML

start = element gidootml { (Heading | Structural)* }
Heading = element-h | element-section
List = element-dl | element-ol | element-ul
Structural =
  element-blockcode
  | element-blockquote
  | element-div
  | List
  | element-p
  | element-pre
  | element-table
Text =
  element-a
  | element-abbr
  | element-code
  | element-em
  | element-img
  | element-kbd
  | element-q
  | element-span
  | element-sub
  | element-sup
  | element-strong
Common =
  attribute class { xsd:token }?,
  attribute id { xsd:ID }?,
  attribute lang { xsd:language }?,
  attribute title { xsd:token }?
element-a =
  element a {
    Common,
    attribute href { xsd:anyURI },
    attribute hreflang { xsd:language }?,
    (text | Text)+
  }
element-abbr = element abbr { Common, (text | Text)+ }
element-blockcode = element blockcode { Common, text }
element-blockquote =
  element blockquote { Common, (Heading | Structural)+ }
element-caption = element caption { Common, (text | Text)+ }
element-code = element code { Common, (text | Text)+ }
element-col =
  element col {
    Common,
    attribute span { xsd:nonNegativeInteger }?
  }
element-colgroup =
  element colgroup {
    Common,
    attribute span { xsd:nonNegativeInteger }?,
    element-col+
  }
element-dd = element dd { Common, Structural+ }
element-di = element di { Common, element-dt, element-dd+ }
element-div = element div { Common, (Heading | Structural)+ }
element-dl = element dl { Common, element-di+ }
element-dt = element dt { Common, (text | Text)+ }
element-em = element em { Common, (text | Text)+ }
element-h = element h { Common, (text | Text)+ }
element-img =
  element img {
    Common,
    attribute alt { xsd:token },
    attribute src { xsd:anyURI }
  }
element-kbd = element kbd { Common, (text | Text)+ }
element-li = element li { Common, (Structural | Text | text )+ }
element-ol = element ol { Common, element-li+ }
element-p = element p { Common, (text | Text)+ }
element-pre = element pre { Common, (text | Text)+ }
element-q = element q { Common, (text | Text)+ }
element-section =
  element section { Common, (Heading | Structural | Text)+ }
element-span = element span { Common, (text | Text)+ }
element-strong = element strong { Common, (text | Text)+ }
element-sub = element sub { Common, (text | Text)+ }
element-sup = element sup { Common, (text | Text)+ }
element-table =
  element table {
    Common,
    element-caption*,
    (element-col+ | element-colgroup),
    ((element-thead, element-tbody, element-tfoot?) | element-tr+)
  }
element-tbody = element tbody { Common, element-tr+ }
element-td =
  element td {
    Common,
    attribute colspan { xsd:nonNegativeInteger }?,
    attribute rowspan { xsd:nonNegativeInteger }?,
    (text | Structural | Text)+
  }
element-tfoot = element tfoot { Common, element-tr+ }
element-th =
  element th {
    Common,
    attribute colspan { xsd:nonNegativeInteger }?,
    attribute rowspan { xsd:nonNegativeInteger }?,
    (text | Structural | Text)+
  }
element-thead = element thead { Common, element-tr+ }
element-tr = element tr { Common, (element-td | element-th)+ }
element-ul = element ul { Common, element-li+ }