123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # RELAX NG XML syntax expressed in RELAX NG Compact syntax.
- # Copyright (C) 2003-2004, 2007-2012 Free Software Foundation, Inc.
- # This file is part of GNU Emacs.
- # GNU Emacs is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- # GNU Emacs is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- # You should have received a copy of the GNU General Public License
- # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
- 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 }
|