
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: html/clark/basic/extracted
Source used for this grammar: James Clark, Modularization of XHTML in RELAX NG, xhtml-basic.rng, 28-Oct-2008
id.attrib, class.attrib, title.attrib, Core.attrib, lang.attrib, I18n.attrib, Common.attrib, CommonIdRequired.attrib, base, base.attlist, head.content, Length.datatype, LinkTypes.datatype, MediaDesc.datatype, MultiLength.datatype, Number.datatype, Pixels.datatype, Script.datatype, Text.datatype, Character.datatype, Charset.datatype, Charsets.datatype, ContentType.datatype, ContentTypes.datatype, Datetime.datatype, FPI.datatype, LanguageCode.datatype, URI.datatype, URIs.datatype, NMTOKEN.datatype, NMTOKENS.datatype, ID.datatype, IDREF.datatype, IDREFS.datatype, form, form.attlist, label, label.attlist, input, input.attlist, InputType.class, select, select.attlist, option, textarea, textarea.attlist, Form.class, Formctrl.class, Block.class, Inline.class, a, a.attlist, img, img.attlist, link, link.attlist, dl, dl.attlist, dt, dt.attlist, dd, dd.attlist, ol, ol.attlist, ul, ul.attlist, li, li.attlist, List.class, meta, meta.attlist, object, object.attlist, param, param.attlist, title, title.attlist, head, head.attlist, profile.attlist, body, body.attlist, html, html.attlist, XHTML.version.attrib, table, table.attlist, caption, caption.attlist, tr, tr.attlist, th, th.attlist, td, td.attlist, Cell.attrib, CellHAlign.attrib, CellVAlign.attrib, scope.attrib, br, br.attlist, span, span.attlist, abbr, abbr.attlist, acronym, acronym.attlist, cite, cite.attlist, code, code.attlist, dfn, dfn.attlist, em, em.attlist, kbd, kbd.attlist, q, q.attlist, samp, samp.attlist, strong, strong.attlist, var, var.attlist, div, div.attlist, p, p.attlist, address, address.attlist, blockquote, blockquote.attlist, pre, pre.attlist, h1, h2, h3, h4, h5, h6, Heading.attrib, Heading.content, Heading.class, Inline.model, Block.mix, Block.model, Flow.model), 1 root (html), 7 top (CommonIdRequired.attrib, MultiLength.datatype, Pixels.datatype, Script.datatype, Charsets.datatype, ContentTypes.datatype, Datetime.datatype), 0 bottom (—).[id] 2, [class], [title] 2, [xml:lang], [base], [href] 3, [form], [action], [method], [enctype], [label], [for], [accesskey] 4, [input], [type] 5, [name] 6, [value] 3, [checked], [size] 2, [maxlength], [src] 2, [select], [multiple], [selected], [option], [textarea], [rows], [cols], [a], [charset] 2, [hreflang] 2, [rel] 2, [rev] 2, [tabindex] 2, [img], [alt], [longdesc], [height] 2, [width] 2, [link], [media], [dl], [dt], [dd], [ol], [ul], [li], [meta], [http-equiv], [content], [scheme], [object], [declare], [classid], [codebase], [data], [codetype], [archive], [standby], [param], [valuetype], [head], [profile], [body], [html], [version], [table], [summary], [caption], [tr], [th], [td], [abbr] 2, [axis], [headers], [rowspan], [colspan], [align], [valign], [scope], [br], [span], [acronym], [cite] 3, [code], [dfn], [em], [kbd], [q], [samp], [strong], [var], [div], [p], [address], [blockquote], [pre], [xml:space], [h1], [h2], [h3], [h4], [h5], [h6].id.attrib ::=
[id]::ID.datatypeclass.attrib ::=
[class]::NMTOKENS.datatypetitle.attrib ::=
[title]::Text.datatypeCore.attrib ::= id.attrib class.attrib title.attrib
lang.attrib ::=
[xml:lang]::LanguageCode.datatypeI18n.attrib ::= lang.attrib
Common.attrib ::= Core.attrib I18n.attrib
CommonIdRequired.attrib ::= [id]::ID.datatype class.attrib title.attrib I18n.attrib
base ::= [base]::base.attlist
base.attlist ::= [href]::URI.datatype
head.content ::=
basehead.content ::=
linkhead.content ::=
metahead.content ::= title
Length.datatype ::= string
LinkTypes.datatype ::= NMTOKENS.datatype
MediaDesc.datatype ::= string
MultiLength.datatype ::= string
Number.datatype ::= string
Pixels.datatype ::= string
Script.datatype ::= string
Text.datatype ::= string
Character.datatype ::= string
Charset.datatype ::= string
Charsets.datatype ::= string
ContentType.datatype ::= string
ContentTypes.datatype ::= string
Datetime.datatype ::= string
FPI.datatype ::= string
LanguageCode.datatype ::= string
URI.datatype ::= string
URIs.datatype ::= string
NMTOKEN.datatype ::= string
NMTOKENS.datatype ::= string
ID.datatype ::= string
IDREF.datatype ::= string
IDREFS.datatype ::= string
form ::= [form]::form.attlist Block.class
form.attlist ::= Common.attrib [action]::URI.datatype [method]::"get""post" [enctype]::ContentType.datatype
label ::= [label]::label.attlist Inline.model
label.attlist ::= Common.attrib [for]::IDREF.datatype [accesskey]::Character.datatype
input ::= [input]::input.attlist
input.attlist ::= Common.attrib [type]::InputType.class [name]::string [value]::string [checked]::"checked" [size]::string [maxlength]::Number.datatype [src]::URI.datatype [accesskey]::Character.datatype
InputType.class ::= "text" "password" "checkbox" "radio" "submit" "reset" "hidden"
select ::= [select]::select.attlist option
select.attlist ::= Common.attrib [name]::string [size]::Number.datatype [multiple]::"multiple"
option ::= [option]::Common.attrib [selected]::"selected" [value]::string string
textarea ::= [textarea]::textarea.attlist
textarea.attlist ::= Common.attrib [name]::string [rows]::Number.datatype [cols]::Number.datatype [accesskey]::Character.datatype string
Form.class ::= form
Formctrl.class ::= input label select textarea
Block.class ::= Form.class
Block.class ::= List.class
Block.class ::= table
Block.class ::= address blockquote div p pre Heading.class
Inline.class ::= Formctrl.class
Inline.class ::= a
Inline.class ::= img
Inline.class ::= object
Inline.class ::= abbr acronym br cite code dfn em kbd q samp span strong var
a ::= [a]::a.attlist Inline.model
a.attlist ::= Common.attrib [href]::URI.datatype [charset]::Charset.datatype [type]::ContentType.datatype [hreflang]::LanguageCode.datatype [rel]::LinkTypes.datatype [rev]::LinkTypes.datatype [accesskey]::Character.datatype [tabindex]::Number.datatype
img ::= [img]::img.attlist
img.attlist ::= Common.attrib [src]::URI.datatype [alt]::Text.datatype [longdesc]::URI.datatype [height]::Length.datatype [width]::Length.datatype
link ::= [link]::link.attlist
link.attlist ::= Common.attrib [charset]::Charset.datatype [href]::URI.datatype [hreflang]::LanguageCode.datatype [type]::ContentType.datatype [rel]::LinkTypes.datatype [rev]::LinkTypes.datatype [media]::MediaDesc.datatype
dl ::= [dl]::dl.attlist dtdd
dl.attlist ::= Common.attrib
dt ::= [dt]::dt.attlist Inline.model
dt.attlist ::= Common.attrib
dd ::= [dd]::dd.attlist Flow.model
dd.attlist ::= Common.attrib
ol ::= [ol]::ol.attlist li
ol.attlist ::= Common.attrib
ul ::= [ul]::ul.attlist li
ul.attlist ::= Common.attrib
li ::= [li]::li.attlist Flow.model
li.attlist ::= Common.attrib
List.class ::= ul ol dl
meta ::= [meta]::meta.attlist
meta.attlist ::= I18n.attrib [http-equiv]::NMTOKEN.datatype [name]::NMTOKEN.datatype [content]::string [scheme]::string
object ::= [object]::object.attlist param Flow.model
object.attlist ::= Common.attrib [declare]::"declare" [classid]::URI.datatype [codebase]::URI.datatype [data]::URI.datatype [type]::ContentType.datatype [codetype]::ContentType.datatype [archive]::URIs.datatype [standby]::Text.datatype [height]::Length.datatype [width]::Length.datatype [name]::string [tabindex]::Number.datatype
param ::= [param]::param.attlist
param.attlist ::= id.attrib [name]::string [value]::string [valuetype]::"data""ref""object" [type]::ContentType.datatype
title ::= [title]::title.attlist string
title.attlist ::= I18n.attrib
head ::= [head]::head.attlist head.content
head.attlist ::= I18n.attrib profile.attlist
profile.attlist ::=
[profile]::URI.datatypebody ::= [body]::body.attlist Block.model
body.attlist ::= Common.attrib
html ::= [html]::html.attlist head body
html.attlist ::= XHTML.version.attrib I18n.attrib
XHTML.version.attrib ::=
[version]::FPI.datatypetable ::= [table]::table.attlist caption tr
table.attlist ::=
Common.attrib [summary]::Text.datatypecaption ::= [caption]::caption.attlist Inline.model
caption.attlist ::= Common.attrib
tr ::= [tr]::tr.attlist thtd
tr.attlist ::= Common.attrib CellHAlign.attrib CellVAlign.attrib
th ::= [th]::th.attlist Flow.model
th.attlist ::= Cell.attrib
td ::= [td]::td.attlist Flow.model
td.attlist ::= Cell.attrib
Cell.attrib ::= Common.attrib [abbr]::Text.datatype [axis]::string [headers]::IDREFS.datatype scope.attrib [rowspan]::Number.datatype [colspan]::Number.datatype CellHAlign.attrib CellVAlign.attrib
CellHAlign.attrib ::= [align]::"left""center""right"
CellVAlign.attrib ::= [valign]::"top""middle""bottom"
scope.attrib ::= [scope]::"row""col"
br ::= [br]::br.attlist
br.attlist ::= Core.attrib
span ::= [span]::span.attlist Inline.model
span.attlist ::= Common.attrib
abbr ::= [abbr]::abbr.attlist Inline.model
abbr.attlist ::= Common.attrib
acronym ::= [acronym]::acronym.attlist Inline.model
acronym.attlist ::= Common.attrib
cite ::= [cite]::cite.attlist Inline.model
cite.attlist ::= Common.attrib
code ::= [code]::code.attlist Inline.model
code.attlist ::= Common.attrib
dfn ::= [dfn]::dfn.attlist Inline.model
dfn.attlist ::= Common.attrib
em ::= [em]::em.attlist Inline.model
em.attlist ::= Common.attrib
kbd ::= [kbd]::kbd.attlist Inline.model
kbd.attlist ::= Common.attrib
q ::= [q]::q.attlist Inline.model
q.attlist ::=
Common.attrib [cite]::URI.datatypesamp ::= [samp]::samp.attlist Inline.model
samp.attlist ::= Common.attrib
strong ::= [strong]::strong.attlist Inline.model
strong.attlist ::= Common.attrib
var ::= [var]::var.attlist Inline.model
var.attlist ::= Common.attrib
div ::= [div]::div.attlist Flow.model
div.attlist ::= Common.attrib
p ::= [p]::p.attlist Inline.model
p.attlist ::= Common.attrib
address ::= [address]::address.attlist Inline.model
address.attlist ::= Common.attrib
blockquote ::= [blockquote]::blockquote.attlist Block.model
blockquote.attlist ::=
Common.attrib [cite]::URI.datatypepre ::= [pre]::pre.attlist Inline.model
pre.attlist ::= Common.attrib [xml:space]::"preserve"
h1 ::= [h1]::Heading.attrib Heading.content
h2 ::= [h2]::Heading.attrib Heading.content
h3 ::= [h3]::Heading.attrib Heading.content
h4 ::= [h4]::Heading.attrib Heading.content
h5 ::= [h5]::Heading.attrib Heading.content
h6 ::= [h6]::Heading.attrib Heading.content
Heading.attrib ::= Common.attrib
Heading.content ::= Inline.model
Heading.class ::= h1 h2 h3 h4 h5 h6
Inline.model ::= stringInline.class
Block.mix ::= Block.class
Block.model ::=
Block.mixFlow.model ::= stringInline.classBlock.class