RELAX NG schema for RELAX NG
default namespace rng = "http://relaxng.org/ns/structure/1.0"
namespace local = ""
namespace inh = inherit

start = pattern

pattern =
element element { ( attribute name { xsd:QName } | open-name-class ), common-atts, open-patterns }
element attribute { common-atts, ( attribute name { xsd:QName } | open-name-class ), ( otherpattern? ) }
element group { common-atts, open-patterns }
element interleave { common-atts, open-patterns }
element choice { common-atts, open-patterns }
element optional { common-atts, open-patterns }
element zeroOrMore { common-atts, open-patterns }
element oneOrMore { common-atts, open-patterns }
element list { common-atts, open-patterns }
element mixed { common-atts, open-patterns }
element ref { attribute name { xsd:NCName }, common-atts }
element parentRef { attribute name { xsd:NCName }, common-atts }
element empty { common-atts, other }
element text { common-atts, other }
element value { attribute type { xsd:NCName }?, common-atts, text }
element data
{
attribute type { xsd:NCName },
common-atts,
(
other
& ( element param { attribute name { xsd:NCName }, text }*, element except { common-atts, open-patterns }? )
)
}
element notAllowed { common-atts, other }
element externalRef { attribute href { xsd:anyURI }, common-atts, other }
element grammar { common-atts, grammar-content }

grammar-content =
other
& (
start-element
define-element
element div { common-atts, grammar-content }
element include { attribute href { xsd:anyURI }, common-atts, include-content }
)*

include-content = other & ( start-elementdefine-elementelement div { common-atts, include-content } )*

start-element = element start { combine-att, common-atts, open-pattern }

define-element = element define { attribute name { xsd:NCName }, combine-att, common-atts, open-patterns }

combine-att = attribute combine { "choice""interleave" }?

open-patterns = otherpattern+

open-pattern = otherpattern

name-class =
element name { common-atts, xsd:QName }
element anyName { common-atts, except-name-class }
element nsName { common-atts, except-name-class }
element choice { common-atts, open-name-classes }

except-name-class = otherelement except { open-name-classes }?

open-name-classes = othername-class+

open-name-class = othername-class

common-atts =
attribute ns { text }?,
attribute datatypeLibrary { xsd:anyURI }?,
attribute * - (rng:* | local:*) { text }*

other = element * - rng:* { ( attribute * { text } | textany )* }*

any = element * { ( attribute * { text } | textany )* }
Index
 
start
Definitions: 1
any
Definitions: 1
Referenced from:
any
other
combine-att
Definitions: 1
Referenced from:
define-element
start-element
common-atts
Definitions: 1
define-element
Definitions: 1
except-name-class
Definitions: 1
Referenced from:
name-class
grammar-content
Definitions: 1
Referenced from:
grammar-content
pattern
include-content
Definitions: 1
name-class
Definitions: 1
open-name-class
Definitions: 1
Referenced from:
pattern
open-name-classes
Definitions: 1
Referenced from:
except-name-class
name-class
open-pattern
Definitions: 1
Referenced from:
start-element
open-patterns
Definitions: 1
Referenced from:
define-element
pattern
other
Definitions: 1
pattern
Definitions: 1
start-element
Definitions: 1