Initial commit
This commit is contained in:
commit
a491ef2093
813 changed files with 345031 additions and 0 deletions
356
site-lisp/nxml-mode-20041004/schema/xslt.rnc
Normal file
356
site-lisp/nxml-mode-20041004/schema/xslt.rnc
Normal file
|
|
@ -0,0 +1,356 @@
|
|||
# $Id: xslt.rnc,v 1.2 2003/08/30 08:09:03 jjc Exp $
|
||||
|
||||
# This was mostly generated from the syntax summary in the XSLT
|
||||
# Recommendation (using XSLT of course).
|
||||
|
||||
# Issues: this validates extension elements as literal result
|
||||
# elements, which is overly restrictive.
|
||||
|
||||
namespace local = ""
|
||||
default namespace xsl = "http://www.w3.org/1999/XSL/Transform"
|
||||
|
||||
start =
|
||||
stylesheet.element
|
||||
| transform.element
|
||||
| literal-result-element-as-stylesheet
|
||||
version = "1.0"
|
||||
top-level-elements.model =
|
||||
(top-level-element.category | top-level-extension)*
|
||||
top-level-extension =
|
||||
element * - (xsl:* | local:*) {
|
||||
grammar {
|
||||
start = any
|
||||
any =
|
||||
(attribute * { text }
|
||||
| text
|
||||
| element * { any })*
|
||||
}
|
||||
}
|
||||
template.model = (instruction.category | literal-result-element | text)*
|
||||
literal-result-element-as-stylesheet =
|
||||
element * - xsl:* {
|
||||
attribute xsl:version { version },
|
||||
literal-result-element-no-version.atts,
|
||||
template.model
|
||||
}
|
||||
literal-result-element =
|
||||
element * - xsl:* { literal-result-element.atts, template.model }
|
||||
literal-result-element.atts =
|
||||
literal-result-element-no-version.atts,
|
||||
attribute xsl:version { version }?
|
||||
literal-result-element-no-version.atts =
|
||||
(attribute * - xsl:* { avt.datatype }
|
||||
| attribute xsl:extension-element-prefixes { prefixes.datatype }
|
||||
| attribute xsl:exclude-result-prefixes { prefixes.datatype }
|
||||
| attribute xsl: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 = attribute * - (xsl:* | local:*) { text }*
|
||||
stylesheet.element = element stylesheet { stylesheet.model }
|
||||
transform.element = element transform { stylesheet.model }
|
||||
stylesheet.model =
|
||||
extension.atts,
|
||||
attribute id { xsd:NCName }?,
|
||||
attribute extension-element-prefixes { prefixes.datatype }?,
|
||||
attribute exclude-result-prefixes { prefixes.datatype }?,
|
||||
attribute version { version },
|
||||
(import.element*, top-level-elements.model)
|
||||
include.element =
|
||||
element include {
|
||||
extension.atts,
|
||||
attribute href { xsd:anyURI }
|
||||
}
|
||||
import.element =
|
||||
element import {
|
||||
extension.atts,
|
||||
attribute href { xsd:anyURI }
|
||||
}
|
||||
strip-space.element =
|
||||
element strip-space {
|
||||
extension.atts,
|
||||
attribute elements { wildcards.datatype }
|
||||
}
|
||||
preserve-space.element =
|
||||
element preserve-space {
|
||||
extension.atts,
|
||||
attribute elements { wildcards.datatype }
|
||||
}
|
||||
template.element =
|
||||
element template {
|
||||
extension.atts,
|
||||
attribute match { pattern.datatype }?,
|
||||
attribute name { qname.datatype }?,
|
||||
attribute priority { number.datatype }?,
|
||||
attribute mode { qname.datatype }?,
|
||||
(param.element*, template.model)
|
||||
}
|
||||
apply-templates.element =
|
||||
element apply-templates {
|
||||
extension.atts,
|
||||
attribute select { expression.datatype }?,
|
||||
attribute mode { qname.datatype }?,
|
||||
(sort.element | with-param.element)*
|
||||
}
|
||||
apply-imports.element = element apply-imports { extension.atts }
|
||||
call-template.element =
|
||||
element call-template {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype },
|
||||
with-param.element*
|
||||
}
|
||||
namespace-alias.element =
|
||||
element namespace-alias {
|
||||
extension.atts,
|
||||
attribute stylesheet-prefix { prefix.datatype },
|
||||
attribute result-prefix { prefix.datatype }
|
||||
}
|
||||
element.element =
|
||||
element element {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype | expr-avt.datatype },
|
||||
attribute namespace { xsd:anyURI | brace-avt.datatype }?,
|
||||
attribute use-attribute-sets { qnames.datatype }?,
|
||||
template.model
|
||||
}
|
||||
attribute.element =
|
||||
element attribute {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype | expr-avt.datatype },
|
||||
attribute namespace { xsd:anyURI | brace-avt.datatype }?,
|
||||
template.model
|
||||
}
|
||||
attribute-set.element =
|
||||
element attribute-set {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype },
|
||||
attribute use-attribute-sets { qnames.datatype }?,
|
||||
attribute.element*
|
||||
}
|
||||
text.element =
|
||||
element text {
|
||||
extension.atts,
|
||||
attribute disable-output-escaping {
|
||||
xsd:string "yes" | xsd:string "no"
|
||||
}?,
|
||||
text
|
||||
}
|
||||
processing-instruction.element =
|
||||
element processing-instruction {
|
||||
extension.atts,
|
||||
attribute name { xsd:NCName | expr-avt.datatype },
|
||||
template.model
|
||||
}
|
||||
comment.element = element comment { extension.atts, template.model }
|
||||
copy.element =
|
||||
element copy {
|
||||
extension.atts,
|
||||
attribute use-attribute-sets { qnames.datatype }?,
|
||||
template.model
|
||||
}
|
||||
value-of.element =
|
||||
element value-of {
|
||||
extension.atts,
|
||||
attribute select { expression.datatype },
|
||||
attribute disable-output-escaping {
|
||||
xsd:string "yes" | xsd:string "no"
|
||||
}?
|
||||
}
|
||||
number.element =
|
||||
element number {
|
||||
extension.atts,
|
||||
attribute level {
|
||||
xsd:string "single" | xsd:string "multiple" | xsd:string "any"
|
||||
}?,
|
||||
attribute count { pattern.datatype }?,
|
||||
attribute from { pattern.datatype }?,
|
||||
attribute value { expression.datatype }?,
|
||||
attribute format { avt.datatype }?,
|
||||
attribute lang { xsd:NMTOKEN | expr-avt.datatype }?,
|
||||
attribute letter-value {
|
||||
xsd:string "alphabetic"
|
||||
| xsd:string "traditional"
|
||||
| expr-avt.datatype
|
||||
}?,
|
||||
attribute grouping-separator { char.datatype | expr-avt.datatype }?,
|
||||
attribute grouping-size { number.datatype | expr-avt.datatype }?
|
||||
}
|
||||
for-each.element =
|
||||
element for-each {
|
||||
extension.atts,
|
||||
attribute select { expression.datatype },
|
||||
(sort.element*, template.model)
|
||||
}
|
||||
if.element =
|
||||
element if {
|
||||
extension.atts,
|
||||
attribute test { expression.datatype },
|
||||
template.model
|
||||
}
|
||||
choose.element =
|
||||
element choose { extension.atts, (when.element+, otherwise.element?) }
|
||||
when.element =
|
||||
element when {
|
||||
extension.atts,
|
||||
attribute test { expression.datatype },
|
||||
template.model
|
||||
}
|
||||
otherwise.element = element otherwise { extension.atts, template.model }
|
||||
sort.element =
|
||||
element sort {
|
||||
extension.atts,
|
||||
attribute select { expression.datatype }?,
|
||||
attribute lang { xsd:NMTOKEN | expr-avt.datatype }?,
|
||||
attribute data-type {
|
||||
xsd:string "text"
|
||||
| xsd:string "number"
|
||||
| qname-but-not-ncname.datatype
|
||||
| expr-avt.datatype
|
||||
}?,
|
||||
attribute order {
|
||||
xsd:string "ascending"
|
||||
| xsd:string "descending"
|
||||
| expr-avt.datatype
|
||||
}?,
|
||||
attribute case-order {
|
||||
xsd:string "upper-first"
|
||||
| xsd:string "lower-first"
|
||||
| expr-avt.datatype
|
||||
}?
|
||||
}
|
||||
variable.element =
|
||||
element variable {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype },
|
||||
(attribute select { expression.datatype }
|
||||
| template.model)
|
||||
}
|
||||
param.element =
|
||||
element param {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype },
|
||||
(attribute select { expression.datatype }
|
||||
| template.model)
|
||||
}
|
||||
copy-of.element =
|
||||
element copy-of {
|
||||
extension.atts,
|
||||
attribute select { expression.datatype }
|
||||
}
|
||||
with-param.element =
|
||||
element with-param {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype },
|
||||
(attribute select { expression.datatype }
|
||||
| template.model)
|
||||
}
|
||||
key.element =
|
||||
element key {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype },
|
||||
attribute match { pattern.datatype },
|
||||
attribute use { expression.datatype }
|
||||
}
|
||||
decimal-format.element =
|
||||
element decimal-format {
|
||||
extension.atts,
|
||||
attribute name { qname.datatype }?,
|
||||
attribute decimal-separator { char.datatype }?,
|
||||
attribute grouping-separator { char.datatype }?,
|
||||
attribute infinity { text }?,
|
||||
attribute minus-sign { char.datatype }?,
|
||||
attribute NaN { text }?,
|
||||
attribute percent { char.datatype }?,
|
||||
attribute per-mille { char.datatype }?,
|
||||
attribute zero-digit { char.datatype }?,
|
||||
attribute digit { char.datatype }?,
|
||||
attribute pattern-separator { char.datatype }?
|
||||
}
|
||||
message.element =
|
||||
element message {
|
||||
extension.atts,
|
||||
attribute terminate { xsd:string "yes" | xsd:string "no" }?,
|
||||
template.model
|
||||
}
|
||||
fallback.element = element fallback { extension.atts, template.model }
|
||||
output.element =
|
||||
element output {
|
||||
extension.atts,
|
||||
attribute method {
|
||||
xsd:string "xml"
|
||||
| xsd:string "html"
|
||||
| xsd:string "text"
|
||||
| qname-but-not-ncname.datatype
|
||||
}?,
|
||||
attribute version { xsd:NMTOKEN }?,
|
||||
attribute encoding { text }?,
|
||||
attribute omit-xml-declaration {
|
||||
xsd:string "yes" | xsd:string "no"
|
||||
}?,
|
||||
attribute standalone { xsd:string "yes" | xsd:string "no" }?,
|
||||
attribute doctype-public { text }?,
|
||||
attribute doctype-system { text }?,
|
||||
attribute cdata-section-elements { qnames.datatype }?,
|
||||
attribute indent { xsd:string "yes" | xsd:string "no" }?,
|
||||
attribute media-type { text }?
|
||||
}
|
||||
prefixes.datatype = list { (xsd:NCName | "#default")* }
|
||||
prefix.datatype = xsd:NCName | "#default"
|
||||
wildcards.datatype =
|
||||
list {
|
||||
(xsd:QName
|
||||
| xsd:token { pattern = "\*|\i\c*:\*" })*
|
||||
}
|
||||
qname.datatype = xsd:QName
|
||||
qnames.datatype = list { xsd:QName* }
|
||||
char.datatype = xsd:string { length = "1" }
|
||||
number.datatype = xsd:decimal
|
||||
expression.datatype = text
|
||||
pattern.datatype = text
|
||||
qname-but-not-ncname.datatype = xsd:QName { pattern = ".*:.*" }
|
||||
# An AVT containing at least one expression.
|
||||
expr-avt.datatype =
|
||||
xsd:string {
|
||||
pattern =
|
||||
"""([^\{\}]|\{\{|\}\})*\{([^"'\{\}]|"[^"]*"|'[^']*')+\}([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*"""
|
||||
}
|
||||
# An AVT containing at least one brace; ie where instantiated AVT
|
||||
# is not the same as the literal AVT.
|
||||
brace-avt.datatype =
|
||||
xsd:string {
|
||||
pattern =
|
||||
"""[^\{\}]*(\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*"""
|
||||
}
|
||||
avt.datatype =
|
||||
xsd:string {
|
||||
pattern =
|
||||
"""([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*"""
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue