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.category top-level-extension
any ::=α string any
top-level-extension ::= any
template.model ::=instruction.category literal-result-element string
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]::version
literal-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.element with-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.datatype expr-avt.datatype [namespace]:: string brace-avt.datatype [use-attribute-sets]::qnames.datatype template.model
attribute.element ::= [attribute]::extension.atts [name]:: qname.datatype expr-avt.datatype [namespace]:: string brace-avt.datatype template.model
attribute-set.element ::= [attribute-set]::extension.atts [name]::qname.datatype [use-attribute-sets]::qnames.datatype attribute.element
text.element ::= [text]::"yes""no" stringextension.atts [disable-output-escaping]::
processing-instruction.element ::= [processing-instruction]::extension.atts [name]:: string expr-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]::"yes""no"extension.atts [select]::expression.datatype [disable-output-escaping]::
number.element ::= [number]::"single""multiple""any" [count]::pattern.datatype [from]::pattern.datatype [value]::expression.datatype [format]::avt.datatype [lang]:: string expr-avt.datatype [letter-value]::"alphabetic""traditional" expr-avt.datatype [grouping-separator]:: char.datatype expr-avt.datatype [grouping-size]:: number.datatype expr-avt.datatypeextension.atts [level]::
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]::"text""number" qname-but-not-ncname.datatype expr-avt.datatype [order]::"ascending""descending" expr-avt.datatype [case-order]::"upper-first""lower-first" expr-avt.datatypeextension.atts [select]::expression.datatype [lang]:: string expr-avt.datatype [data-type]::
variable.element ::= [variable]::extension.atts [name]::qname.datatype [select]::expression.datatype template.model
param.element ::= [param]::extension.atts [name]::qname.datatype [select]::expression.datatype template.model
copy-of.element ::= [copy-of]::extension.atts [select]::expression.datatype
with-param.element ::= [with-param]::extension.atts [name]::qname.datatype [select]::expression.datatype template.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]::"yes""no" template.modelextension.atts [terminate]::
fallback.element ::= [fallback]::extension.atts template.model
output.element ::= [output]::"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]::stringextension.atts [method]::
prefixes.datatype ::= "#default"string
prefix.datatype ::=
string
"#default"
wildcards.datatype ::=
string
qname.datatype ::= string
qnames.datatype ::=
string
char.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