Mercurial > emacs
diff etc/schema/relaxng.rnc @ 86361:38f93f3d00a2
Initial merge of nxml
author | Mark A. Hershberger <mah@everybody.org> |
---|---|
date | Fri, 23 Nov 2007 06:58:00 +0000 |
parents | |
children | ef31eb276c4b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/schema/relaxng.rnc Fri Nov 23 06:58:00 2007 +0000 @@ -0,0 +1,63 @@ +# RELAX NG XML syntax expressed in RELAX NG Compact syntax. + +default namespace rng = "http://relaxng.org/ns/structure/1.0" +namespace local = "" +datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" + +start = pattern + +pattern = + element element { (nameQName | nameClass), (common & pattern+) } + | element attribute { (nameQName | nameClass), (common & pattern?) } + | element group|interleave|choice|optional + |zeroOrMore|oneOrMore|list|mixed { common & pattern+ } + | element ref|parentRef { nameNCName, common } + | element empty|notAllowed|text { common } + | element data { type, param*, (common & exceptPattern?) } + | element value { commonAttributes, type?, xsd:string } + | element externalRef { href, common } + | element grammar { common & grammarContent* } + +param = element param { commonAttributes, nameNCName, xsd:string } + +exceptPattern = element except { common & pattern+ } + +grammarContent = + definition + | element div { common & grammarContent* } + | element include { href, (common & includeContent*) } + +includeContent = + definition + | element div { common & includeContent* } + +definition = + element start { combine?, (common & pattern+) } + | element define { nameNCName, combine?, (common & pattern+) } + +combine = attribute combine { "choice" | "interleave" } + +nameClass = + element name { commonAttributes, xsd:QName } + | element anyName { common & exceptNameClass? } + | element nsName { common & exceptNameClass? } + | element choice { common & nameClass+ } + +exceptNameClass = element except { common & nameClass+ } + +nameQName = attribute name { xsd:QName } +nameNCName = attribute name { xsd:NCName } +href = attribute href { xsd:anyURI } +type = attribute type { xsd:NCName } + +common = commonAttributes, foreignElement* + +commonAttributes = + attribute ns { xsd:string }?, + attribute datatypeLibrary { xsd:anyURI }?, + foreignAttribute* + +foreignElement = element * - rng:* { (anyAttribute | text | anyElement)* } +foreignAttribute = attribute * - (rng:*|local:*) { text } +anyElement = element * { (anyAttribute | text | anyElement)* } +anyAttribute = attribute * { text }