
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: xmlware/xslt/clark/extracted
Source used for this grammar: James Clark, XSLT 1.0 in RELAX NG, xslt.rng, 28-Oct-2008 [Source]
version, top-level-elements.model, any, top-level-extension, template.model, literal-result-element-as-stylesheet, literal-result-element, literal-result-element.atts, literal-result-element-no-version.atts, top-level-element.category, instruction.category, extension.atts, stylesheet.element, transform.element, stylesheet.model, include.element, import.element, strip-space.element, preserve-space.element, template.element, apply-templates.element, apply-imports.element, call-template.element, namespace-alias.element, element.element, attribute.element, attribute-set.element, text.element, processing-instruction.element, comment.element, copy.element, value-of.element, number.element, for-each.element, if.element, choose.element, when.element, otherwise.element, sort.element, variable.element, param.element, copy-of.element, with-param.element, key.element, decimal-format.element, message.element, fallback.element, output.element, prefixes.datatype, prefix.datatype, wildcards.datatype, qname.datatype, qnames.datatype, char.datatype, number.datatype, expression.datatype, pattern.datatype, qname-but-not-ncname.datatype, expr-avt.datatype, brace-avt.datatype, avt.datatype), 3 root (stylesheet.element, transform.element, literal-result-element-as-stylesheet), 0 top (—), 0 bottom (—).[version] 4, [extension-element-prefixes] 2, [exclude-result-prefixes] 2, [use-attribute-sets] 4, [stylesheet], [transform], [id], [href] 2, [include], [import], [elements] 2, [strip-space], [preserve-space], [match] 2, [name] 11, [priority], [mode] 2, [template], [select] 8, [apply-templates], [apply-imports], [call-template], [stylesheet-prefix], [result-prefix], [namespace-alias], [namespace] 2, [element], [attribute], [attribute-set], [disable-output-escaping] 2, [text], [processing-instruction], [comment], [copy], [value-of], [level], [count], [from], [value], [format], [lang] 2, [letter-value], [grouping-separator] 2, [grouping-size], [number], [for-each], [test] 2, [if], [choose], [when], [otherwise], [data-type], [order], [case-order], [sort], [variable], [param], [copy-of], [with-param], [use], [key], [decimal-separator], [infinity], [minus-sign], [NaN], [percent], [per-mille], [zero-digit], [digit], [pattern-separator], [decimal-format], [terminate], [message], [fallback], [method], [encoding], [omit-xml-declaration], [standalone], [doctype-public], [doctype-system], [cdata-section-elements], [indent], [media-type], [output].version ::=
"1.0"top-level-elements.model ::= top-level-element.categorytop-level-extension
any ::= αstringany
top-level-extension ::= any
template.model ::= instruction.categoryliteral-result-elementstring
literal-result-element-as-stylesheet ::= [version]::version literal-result-element-no-version.atts template.model
literal-result-element ::= literal-result-element.atts template.model
literal-result-element.atts ::=
literal-result-element-no-version.atts [version]::versionliteral-result-element-no-version.atts ::= avt.datatype[extension-element-prefixes]::prefixes.datatype[exclude-result-prefixes]::prefixes.datatype[use-attribute-sets]::qnames.datatype
top-level-element.category ::= include.element strip-space.element preserve-space.element template.element namespace-alias.element attribute-set.element variable.element param.element key.element decimal-format.element output.element
instruction.category ::= apply-templates.element apply-imports.element call-template.element element.element attribute.element text.element processing-instruction.element comment.element copy.element value-of.element number.element for-each.element if.element choose.element variable.element copy-of.element message.element fallback.element
extension.atts ::=
αstylesheet.element ::= [stylesheet]::stylesheet.model
transform.element ::= [transform]::stylesheet.model
stylesheet.model ::= extension.atts [id]::string [extension-element-prefixes]::prefixes.datatype [exclude-result-prefixes]::prefixes.datatype [version]::version import.element top-level-elements.model
include.element ::= [include]::extension.atts [href]::string
import.element ::= [import]::extension.atts [href]::string
strip-space.element ::= [strip-space]::extension.atts [elements]::wildcards.datatype
preserve-space.element ::= [preserve-space]::extension.atts [elements]::wildcards.datatype
template.element ::= [template]::extension.atts [match]::pattern.datatype [name]::qname.datatype [priority]::number.datatype [mode]::qname.datatype param.element template.model
apply-templates.element ::= [apply-templates]::extension.atts [select]::expression.datatype [mode]::qname.datatype sort.elementwith-param.element
apply-imports.element ::= [apply-imports]::extension.atts
call-template.element ::= [call-template]::extension.atts [name]::qname.datatype with-param.element
namespace-alias.element ::= [namespace-alias]::extension.atts [stylesheet-prefix]::prefix.datatype [result-prefix]::prefix.datatype
element.element ::= [element]::extension.atts [name]::qname.datatypeexpr-avt.datatype [namespace]::stringbrace-avt.datatype [use-attribute-sets]::qnames.datatype template.model
attribute.element ::= [attribute]::extension.atts [name]::qname.datatypeexpr-avt.datatype [namespace]::stringbrace-avt.datatype template.model
attribute-set.element ::= [attribute-set]::extension.atts [name]::qname.datatype [use-attribute-sets]::qnames.datatype attribute.element
text.element ::= [text]::extension.atts [disable-output-escaping]::"yes""no" string
processing-instruction.element ::= [processing-instruction]::extension.atts [name]::stringexpr-avt.datatype template.model
comment.element ::= [comment]::extension.atts template.model
copy.element ::= [copy]::extension.atts [use-attribute-sets]::qnames.datatype template.model
value-of.element ::= [value-of]::extension.atts [select]::expression.datatype [disable-output-escaping]::"yes""no"
number.element ::= [number]::extension.atts [level]::"single""multiple""any" [count]::pattern.datatype [from]::pattern.datatype [value]::expression.datatype [format]::avt.datatype [lang]::stringexpr-avt.datatype [letter-value]::"alphabetic""traditional"expr-avt.datatype [grouping-separator]::char.datatypeexpr-avt.datatype [grouping-size]::number.datatypeexpr-avt.datatype
for-each.element ::= [for-each]::extension.atts [select]::expression.datatype sort.element template.model
if.element ::= [if]::extension.atts [test]::expression.datatype template.model
choose.element ::= [choose]::extension.atts when.element otherwise.element
when.element ::= [when]::extension.atts [test]::expression.datatype template.model
otherwise.element ::= [otherwise]::extension.atts template.model
sort.element ::= [sort]::extension.atts [select]::expression.datatype [lang]::stringexpr-avt.datatype [data-type]::"text""number"qname-but-not-ncname.datatypeexpr-avt.datatype [order]::"ascending""descending"expr-avt.datatype [case-order]::"upper-first""lower-first"expr-avt.datatype
variable.element ::= [variable]::extension.atts [name]::qname.datatype [select]::expression.datatypetemplate.model
param.element ::= [param]::extension.atts [name]::qname.datatype [select]::expression.datatypetemplate.model
copy-of.element ::= [copy-of]::extension.atts [select]::expression.datatype
with-param.element ::= [with-param]::extension.atts [name]::qname.datatype [select]::expression.datatypetemplate.model
key.element ::= [key]::extension.atts [name]::qname.datatype [match]::pattern.datatype [use]::expression.datatype
decimal-format.element ::= [decimal-format]::extension.atts [name]::qname.datatype [decimal-separator]::char.datatype [grouping-separator]::char.datatype [infinity]::string [minus-sign]::char.datatype [NaN]::string [percent]::char.datatype [per-mille]::char.datatype [zero-digit]::char.datatype [digit]::char.datatype [pattern-separator]::char.datatype
message.element ::= [message]::extension.atts [terminate]::"yes""no" template.model
fallback.element ::= [fallback]::extension.atts template.model
output.element ::= [output]::extension.atts [method]::"xml""html""text"qname-but-not-ncname.datatype [version]::string [encoding]::string [omit-xml-declaration]::"yes""no" [standalone]::"yes""no" [doctype-public]::string [doctype-system]::string [cdata-section-elements]::qnames.datatype [indent]::"yes""no" [media-type]::string
prefixes.datatype ::= string"#default"
prefix.datatype ::=
string
"#default"wildcards.datatype ::=
stringqname.datatype ::= string
qnames.datatype ::=
stringchar.datatype ::= string
number.datatype ::= integer
expression.datatype ::= string
pattern.datatype ::= string
qname-but-not-ncname.datatype ::= string
expr-avt.datatype ::= string
brace-avt.datatype ::= string
avt.datatype ::= string