Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: html/clark/strict/extracted
Source used for this grammar: James Clark, Modularization of XHTML in RELAX NG, xhtml-strict.rng
, 28-Oct-2008
applet
, applet.attlist
, Inline.class
, id.attrib
, class.attrib
, title.attrib
, Core.attrib
, lang.attrib
, I18n.attrib
, Common.attrib
, CommonIdRequired.attrib
, base
, base.attlist
, head.content
, bdo
, bdo.attlist
, dir.attrib
, area
, area.attlist
, map
, map.attlist
, a.attlist
, img.attlist
, object.attlist
, usemap.attlist
, shape.attrib
, coords.attrib
, 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
, del
, del.attlist
, ins
, ins.attlist
, Edit.attrib
, Edit.class
, Block.class
, form.attlist
, body.attlist
, label.attlist
, input.attlist
, select.attlist
, textarea.attlist
, button.attlist
, Events.attrib
, select
, InputType.class
, option.attlist
, optgroup
, optgroup.attlist
, fieldset
, fieldset.attlist
, button
, legend
, legend.attlist
, Form.class
, Formctrl.class
, form
, label
, input
, option
, textarea
, a
, iframe
, iframe.attlist
, img
, 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
, frame.attrib
, name.attlist
, object
, param
, param.attlist
, hr
, hr.attlist
, b
, b.attlist
, big
, big.attlist
, i
, i.attlist
, small
, small.attlist
, sub
, sub.attlist
, sup
, sup.attlist
, tt
, tt.attlist
, script
, script.attlist
, noscript
, noscript.attlist
, Script.class
, title
, title.attlist
, head
, head.attlist
, profile.attlist
, body
, html
, html.attlist
, XHTML.version.attrib
, style
, style.attlist
, table
, th
, td
, CellHAlign.attrib
, CellVAlign.attrib
, scope.attrib
, table.attlist
, col
, col.attlist
, colgroup
, colgroup.attlist
, tbody
, tbody.attlist
, thead
, thead.attlist
, tfoot
, tfoot.attlist
, rules.attrib
, caption
, caption.attlist
, tr
, tr.attlist
, th.attlist
, td.attlist
, Cell.attrib
, link.attrib
, target.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
), 2 top (option.attlist
, link.attrib
), 0 bottom (—).[applet]
, [alt]
4, [archive]
2, [code]
2, [codebase]
2, [object]
2, [height]
4, [width]
7, [id]
2, [class]
, [title]
2, [style]
2, [xml:lang]
, [base]
, [href]
4, [bdo]
, [dir]
, [area]
, [nohref]
, [tabindex]
7, [accesskey]
7, [onblur]
7, [onfocus]
7, [map]
, [charset]
3, [type]
8, [hreflang]
2, [rel]
2, [rev]
2, [src]
4, [longdesc]
2, [ismap]
, [declare]
, [classid]
, [data]
, [codetype]
, [standby]
, [name]
8, [usemap]
, [shape]
, [coords]
, [del]
, [ins]
, [cite]
4, [datetime]
, [onreset]
, [onsubmit]
, [accept-charset]
, [accept]
2, [action]
, [method]
, [enctype]
, [onload]
, [onunload]
, [for]
, [onchange]
3, [onselect]
2, [disabled]
6, [readonly]
2, [value]
4, [checked]
, [size]
2, [maxlength]
, [multiple]
, [rows]
, [cols]
, [onclick]
, [ondblclick]
, [onmousedown]
, [onmouseup]
, [onmouseover]
, [onmousemove]
, [onmouseout]
, [onkeypress]
, [onkeydown]
, [onkeyup]
, [select]
2, [label]
3, [optgroup]
, [fieldset]
, [button]
, [legend]
, [form]
, [input]
, [selected]
, [option]
, [textarea]
, [a]
, [iframe]
, [frameborder]
, [marginwidth]
, [marginheight]
, [scrolling]
, [img]
, [link]
, [media]
2, [dl]
, [dt]
, [dd]
, [ol]
, [ul]
, [li]
, [meta]
, [http-equiv]
, [content]
, [scheme]
, [frame]
, [param]
, [valuetype]
, [hr]
, [b]
, [big]
, [i]
, [small]
, [sub]
, [sup]
, [tt]
, [script]
, [defer]
, [xml:space]
3, [noscript]
, [head]
, [profile]
, [body]
, [html]
, [version]
, [table]
2, [th]
, [td]
, [align]
2, [char]
, [charoff]
, [valign]
2, [scope]
2, [border]
, [cellspacing]
, [cellpadding]
, [summary]
, [col]
, [span]
3, [colgroup]
, [tbody]
, [thead]
, [tfoot]
, [rules]
, [caption]
, [tr]
, [abbr]
2, [axis]
, [headers]
, [rowspan]
, [colspan]
, [target]
, [br]
, [acronym]
, [dfn]
, [em]
, [kbd]
, [q]
, [samp]
, [strong]
, [var]
, [div]
, [p]
, [address]
, [blockquote]
, [pre]
, [h1]
, [h2]
, [h3]
, [h4]
, [h5]
, [h6]
.applet ::= [applet]::applet.attlist param Flow.model
applet.attlist ::= Core.attrib [alt]::Text.datatype [archive]::string[code]::string [codebase]::URI.datatype [object]::string [height]::Length.datatype [width]::Length.datatype
applet.attlist ::= name.attlist
Inline.class ::= applet
Inline.class ::= bdo
Inline.class ::= map
Inline.class ::= Edit.class
Inline.class ::= Formctrl.class
Inline.class ::= a
Inline.class ::= iframe
Inline.class ::= img
Inline.class ::= object
Inline.class ::= b big i small sub sup tt
Inline.class ::= Script.class
Inline.class ::= abbr acronym br cite code dfn em kbd q samp span strong var
id.attrib ::=
[id]::ID.datatype
class.attrib ::=
[class]::NMTOKENS.datatype
title.attrib ::=
[title]::Text.datatype
Core.attrib ::= id.attrib class.attrib title.attrib
Core.attrib ::=
[style]::string
lang.attrib ::=
[xml:lang]::LanguageCode.datatype
I18n.attrib ::= lang.attrib
I18n.attrib ::=
dir.attrib
Common.attrib ::= Core.attrib I18n.attrib
Common.attrib ::= Events.attrib
CommonIdRequired.attrib ::= [id]::ID.datatype class.attrib title.attrib I18n.attrib
CommonIdRequired.attrib ::= Events.attrib
base ::= [base]::base.attlist
base.attlist ::= [href]::URI.datatype
base.attlist ::= target.attrib
head.content ::=
base
head.content ::=
link
head.content ::=
meta
head.content ::=
script
head.content ::= title
head.content ::=
style
bdo ::= [bdo]::bdo.attlist Inline.model
bdo.attlist ::= Core.attrib lang.attrib dir.attrib
dir.attrib ::= [dir]::"ltr""rtl"
area ::= [area]::area.attlist
area.attlist ::= Common.attrib [href]::URI.datatype"nohref" [alt]::Text.datatype [tabindex]::Number.datatype [accesskey]::Character.datatypeshape.attrib coords.attrib [nohref]::
area.attlist ::= [onblur]::Script.datatype[onfocus]::Script.datatype
area.attlist ::= target.attrib
map ::= [map]::map.attlist Block.class area
map.attlist ::= CommonIdRequired.attrib
map.attlist ::= name.attlist
a.attlist ::= shape.attrib coords.attrib
a.attlist ::= [onblur]::Script.datatype[onfocus]::Script.datatype
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
a.attlist ::= name.attlist
a.attlist ::= target.attrib
img.attlist ::= usemap.attlist
img.attlist ::= Common.attrib [src]::URI.datatype [alt]::Text.datatype [longdesc]::URI.datatype[height]::Length.datatype [width]::Length.datatype
img.attlist ::= name.attlist
img.attlist ::= [ismap]::"ismap"
object.attlist ::= usemap.attlist
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
usemap.attlist ::=
[usemap]::IDREF.datatype
shape.attrib ::= [shape]::"rect""circle""poly""default"
coords.attrib ::=
[coords]::string
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
del ::= [del]::del.attlist Inline.model
del.attlist ::= Edit.attrib
ins ::= [ins]::ins.attlist Inline.model
ins.attlist ::= Edit.attrib
Edit.attrib ::= [cite]::URI.datatype[datetime]::Datetime.datatype
Edit.class ::= del ins
Block.class ::= Edit.class
Block.class ::= Form.class
Block.class ::= List.class
Block.class ::= hr
Block.class ::= Script.class
Block.class ::= table
Block.class ::= address blockquote div p pre Heading.class
form.attlist ::= [onreset]::Script.datatype[onsubmit]::Script.datatype
form.attlist ::= [accept-charset]::Charsets.datatype[accept]::ContentTypes.datatype
form.attlist ::= Common.attrib [action]::URI.datatype [method]::"get""post" [enctype]::ContentType.datatype
form.attlist ::= name.attlist
form.attlist ::= target.attrib
body.attlist ::= [onload]::Script.datatype[onunload]::Script.datatype
body.attlist ::= Common.attrib
label.attlist ::= [onblur]::Script.datatype[onfocus]::Script.datatype
label.attlist ::= Common.attrib [for]::IDREF.datatype[accesskey]::Character.datatype
input.attlist ::= [onblur]::Script.datatype[onchange]::Script.datatype [onfocus]::Script.datatype [onselect]::Script.datatype
input.attlist ::= [disabled]::"disabled" [readonly]::"readonly" [alt]::string [tabindex]::Number.datatype [accept]::ContentTypes.datatype
input.attlist ::= Common.attrib [type]::InputType.class"checked" [size]::string [maxlength]::Number.datatype [src]::URI.datatype [accesskey]::Character.datatype[name]::string [value]::string [checked]::
select.attlist ::= [onblur]::Script.datatype[onchange]::Script.datatype [onfocus]::Script.datatype
select.attlist ::= [disabled]::"disabled" [tabindex]::Number.datatype
select.attlist ::= Common.attrib [name]::string"multiple"[size]::Number.datatype [multiple]::
textarea.attlist ::= [onblur]::Script.datatype[onchange]::Script.datatype [onfocus]::Script.datatype [onselect]::Script.datatype
textarea.attlist ::= [disabled]::"disabled" [readonly]::"readonly" [tabindex]::Number.datatype
textarea.attlist ::= Common.attrib [name]::string[rows]::Number.datatype [cols]::Number.datatype [accesskey]::Character.datatype string
button.attlist ::= [onblur]::Script.datatype[onfocus]::Script.datatype
button.attlist ::= Common.attrib [name]::string"button""submit""reset" [disabled]::"disabled" [tabindex]::Number.datatype [accesskey]::Character.datatype[value]::string [type]::
Events.attrib ::= [onclick]::Script.datatype[ondblclick]::Script.datatype [onmousedown]::Script.datatype [onmouseup]::Script.datatype [onmouseover]::Script.datatype [onmousemove]::Script.datatype [onmouseout]::Script.datatype [onkeypress]::Script.datatype [onkeydown]::Script.datatype [onkeyup]::Script.datatype
select ::= [select]::select.attlist option optgroup
select ::= [select]::select.attlist option
InputType.class ::= "image" "button"
InputType.class ::= "text" "password" "checkbox" "radio" "submit" "reset" "hidden"
option.attlist ::= [disabled]::"disabled" [label]::Text.datatype
optgroup ::= [optgroup]::optgroup.attlist option
optgroup.attlist ::= Common.attrib [disabled]::"disabled" [label]::Text.datatype
fieldset ::= [fieldset]::fieldset.attlist legend Flow.model
fieldset.attlist ::= Common.attrib
button ::= [button]::button.attlist Flow.model
legend ::= [legend]::legend.attlist Inline.model
legend.attlist ::=
Common.attrib [accesskey]::Character.datatype
Form.class ::= fieldset
Form.class ::= form
Formctrl.class ::= button
Formctrl.class ::= input label select textarea
form ::= [form]::form.attlist Block.class
label ::= [label]::label.attlist Inline.model
input ::= [input]::input.attlist
option ::= [option]::"selected" [value]::string stringCommon.attrib [selected]::
textarea ::= [textarea]::textarea.attlist
a ::= [a]::a.attlist Inline.model
iframe ::= [iframe]::iframe.attlist Flow.model
iframe.attlist ::= Core.attrib [longdesc]::URI.datatype"1""0" [width]::Length.datatype [height]::Length.datatype [marginwidth]::Pixels.datatype [marginheight]::Pixels.datatype [scrolling]::"yes""no""auto"[src]::URI.datatype [frameborder]::
iframe.attlist ::= name.attlist
img ::= [img]::img.attlist
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 dt dd
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
frame.attrib ::= name.attlist
frame.attrib ::= [frame]::"void""above""below""hsides""lhs""rhs""vsides""box""border"
name.attlist ::=
[name]::string
object ::= [object]::object.attlist param Flow.model
param ::= [param]::param.attlist
param.attlist ::= id.attrib [name]::string [value]::string"data""ref""object" [type]::ContentType.datatype[valuetype]::
hr ::= [hr]::hr.attlist
hr.attlist ::= Common.attrib
b ::= [b]::b.attlist Inline.model
b.attlist ::= Common.attrib
big ::= [big]::big.attlist Inline.model
big.attlist ::= Common.attrib
i ::= [i]::i.attlist Inline.model
i.attlist ::= Common.attrib
small ::= [small]::small.attlist Inline.model
small.attlist ::= Common.attrib
sub ::= [sub]::sub.attlist Inline.model
sub.attlist ::= Common.attrib
sup ::= [sup]::sup.attlist Inline.model
sup.attlist ::= Common.attrib
tt ::= [tt]::tt.attlist Inline.model
tt.attlist ::= Common.attrib
script ::= [script]::script.attlist string
script.attlist ::= [charset]::Charset.datatype"defer" [xml:space]::"preserve"[type]::ContentType.datatype [src]::URI.datatype [defer]::
noscript ::= [noscript]::noscript.attlist Block.model
noscript.attlist ::= Common.attrib
Script.class ::= noscript script
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.datatype
body ::= [body]::body.attlist Block.model
html ::= [html]::html.attlist head body
html.attlist ::= XHTML.version.attrib I18n.attrib
XHTML.version.attrib ::=
[version]::FPI.datatype
style ::= [style]::style.attlist string
style.attlist ::= title.attrib I18n.attrib [type]::ContentType.datatype [media]::MediaDesc.datatype"preserve"[xml:space]::
table ::= [table]::table.attlist caption col colgroup thead tfoot tbody tr
table ::= [table]::table.attlist caption tr
th ::= [th]::th.attlist Flow.model
td ::= [td]::td.attlist Flow.model
CellHAlign.attrib ::= [align]::"left""center""right""justify""char" [char]::Character.datatype [charoff]::Length.datatype
CellHAlign.attrib ::= [align]::"left""center""right"
CellVAlign.attrib ::= [valign]::"top""middle""bottom""baseline"
CellVAlign.attrib ::= [valign]::"top""middle""bottom"
scope.attrib ::= [scope]::"row""col""rowgroup""colgroup"
scope.attrib ::= [scope]::"row""col"
table.attlist ::= [width]::Length.datatype[border]::Pixels.datatype frame.attrib rules.attrib [cellspacing]::Length.datatype [cellpadding]::Length.datatype
table.attlist ::=
Common.attrib [summary]::Text.datatype
col ::= [col]::col.attlist
col.attlist ::= Common.attrib [span]::Number.datatype[width]::MultiLength.datatype CellHAlign.attrib CellVAlign.attrib
colgroup ::= [colgroup]::colgroup.attlist col
colgroup.attlist ::= Common.attrib [span]::Number.datatype[width]::MultiLength.datatype CellHAlign.attrib CellVAlign.attrib
tbody ::= [tbody]::tbody.attlist tr
tbody.attlist ::= Common.attrib CellHAlign.attrib CellVAlign.attrib
thead ::= [thead]::thead.attlist tr
thead.attlist ::= Common.attrib CellHAlign.attrib CellVAlign.attrib
tfoot ::= [tfoot]::tfoot.attlist tr
tfoot.attlist ::= Common.attrib CellHAlign.attrib CellVAlign.attrib
rules.attrib ::= [rules]::"none""groups""rows""cols""all"
caption ::= [caption]::caption.attlist Inline.model
caption.attlist ::= Common.attrib
tr ::= [tr]::tr.attlist th td
tr.attlist ::= Common.attrib CellHAlign.attrib CellVAlign.attrib
th.attlist ::= Cell.attrib
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
link.attrib ::= target.attrib
target.attrib ::=
[target]::string
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.datatype
samp ::= [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.datatype
pre ::= [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 ::=string Inline.class
Block.mix ::= Block.class
Block.model ::=
Block.mix
Flow.model ::=string Inline.class Block.class