by Eric van der Vlist is published by O'Reilly & Associates (ISBN: 0596004214)
grammar — Grammar pattern
element grammar { ( attribute ns { text }?, attribute datatypeLibrary { xsd:anyURI }?, attribute * - (rng:* | local:*) { text }* ), ( ( element * - rng:* { ... }* ) & ( ( element start { ... } ) | ( element define { ... } ) | element div { ... } | element include { ... } )* ) } |
attribute, choice, define, element, except, group, interleave, list, mixed, oneOrMore, optional, start, zeroOrMore
The grammar pattern encapsulates the definitions of start and named patterns. The most common use of grammar is to validate XML documents. In these cases, the start pattern specifies which elements can be used as the document root element. The grammar pattern may also be used to write modular schemas. In this case, the start pattern specifies which nodes must be matched by the grammar wherever it appears in the schema.
In every case, the named patterns defined in a grammar are considered local to this grammar.
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="library"> <oneOrMore> <ref name="book-element"/> </oneOrMore> </element> </start> <define name="author-element"> ... </define> </grammar> <define name="author-element"> <grammar> <start> <element name="author"> <attribute name="id"/> <ref name="name-element"/> <parentRef name="born-element"/> <optional> <ref name="died-element"/> </optional> </element> </start> <define name="name-element"> <element name="name"> <text/> </element> </define> <define name="died-element"> <element name="died"> <text/> </element> </define> </grammar> </define> <element xmlns="http://relaxng.org/ns/structure/1.0" name="university"> <element name="name"> <text/> </element> <grammar> <include href="flat.rng"/> </grammar> </element> |
This text is released under the Free Software Foundation GFDL.