123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- <?xml version="1.0" encoding="UTF-8"?>
- <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns:d="http://dyomedea.com/ns/id">
- <define name="topLevel" d:id="ch16-top-level">
- <zeroOrMore>
- <ref name="decl"/>
- </zeroOrMore>
- <choice>
- <ref name="pattern"/>
- <zeroOrMore>
- <ref name="grammarContent"/>
- </zeroOrMore>
- </choice>
- </define>
- <define name="decl" d:id="ch16-decl">
- <choice>
- <group d:id="ch16-namespace">
- <value>namespace</value>
- <ref name="identifierOrKeyword"/>
- <value>=</value>
- <ref name="namespaceURILiteral"/>
- </group>
- <group d:id="ch16-default-namespace">
- <value>default</value>
- <value>namespace</value>
- <optional>
- <ref name="identifierOrKeyword"/>
- </optional>
- <value>=</value>
- <ref name="namespaceURILiteral"/>
- </group>
- <group d:id="ch16-datatypes">
- <value>datatypes</value>
- <ref name="identifierOrKeyword"/>
- <value>=</value>
- <ref name="literal"/>
- </group>
- </choice>
- </define>
- <define name="pattern" d:id="ch16-pattern">
- <choice>
- <group d:id="ch15-element">
- <value>element</value>
- <ref name="nameClass"/>
- <value>{</value>
- <ref name="pattern"/>
- <value>}</value>
- </group>
- <group d:id="ch15-attribute">
- <value>attribute</value>
- <ref name="nameClass"/>
- <value>{</value>
- <ref name="pattern"/>
- <value>}</value>
- </group>
- <group d:id="ch15-group">
- <ref name="pattern"/>
- <oneOrMore>
- <value>,</value>
- <ref name="pattern"/>
- </oneOrMore>
- </group>
- <group d:id="ch15-interleave">
- <ref name="pattern"/>
- <oneOrMore>
- <value>&</value>
- <ref name="pattern"/>
- </oneOrMore>
- </group>
- <group d:id="ch15-choice1">
- <ref name="pattern"/>
- <oneOrMore>
- <value>|</value>
- <ref name="pattern"/>
- </oneOrMore>
- </group>
- <group d:id="ch15-optional">
- <ref name="pattern"/>
- <value>?</value>
- </group>
- <group d:id="ch15-zeroOrMore">
- <ref name="pattern"/>
- <value>*</value>
- </group>
- <group d:id="ch15-oneOrMore">
- <ref name="pattern"/>
- <value>+</value>
- </group>
- <group d:id="ch15-list">
- <value>list</value>
- <value>{</value>
- <ref name="pattern"/>
- <value>}</value>
- </group>
- <group d:id="ch15-mixed">
- <value>mixed</value>
- <value>{</value>
- <ref name="pattern"/>
- <value>}</value>
- </group>
- <ref name="identifier"/>
- <group d:id="ch15-parentRef">
- <value>parent</value>
- <ref name="identifier"/>
- </group>
- <value d:id="ch15-empty">empty</value>
- <value d:id="ch15-text">text</value>
- <group d:id="ch15-value">
- <optional>
- <ref name="datatypeName"/>
- </optional>
- <ref name="literal"/>
- </group>
- <group d:id="ch15-data">
- <ref name="datatypeName"/>
- <optional>
- <value>{</value>
- <zeroOrMore>
- <ref name="param"/>
- </zeroOrMore>
- <value>}</value>
- </optional>
- <optional>
- <ref name="exceptPattern"/>
- </optional>
- </group>
- <value d:id="ch15-notAllowed">notAllowed</value>
- <group d:id="ch15-externalRef">
- <value>external</value>
- <ref name="literal"/>
- <optional>
- <ref name="inherit"/>
- </optional>
- </group>
- <group d:id="ch15-grammar">
- <value>grammar</value>
- <value>{</value>
- <zeroOrMore>
- <ref name="grammarContent"/>
- </zeroOrMore>
- <value>}</value>
- </group>
- <group d:id="ch16-parenthesis">
- <value>(</value>
- <ref name="pattern"/>
- <value>)</value>
- </group>
- </choice>
- </define>
- <define name="param" d:id="ch15-param">
- <ref name="identifierOrKeyword"/>
- <value>=</value>
- <ref name="literal"/>
- </define>
- <define name="exceptPattern" d:id="ch15-except1">
- <value>-</value>
- <ref name="pattern"/>
- </define>
- <define name="grammarContent" d:id="ch16-grammarContent">
- <choice>
- <ref name="start"/>
- <ref name="define"/>
- <group d:id="ch15-div1">
- <value>div</value>
- <value>{</value>
- <zeroOrMore>
- <ref name="grammarContent"/>
- </zeroOrMore>
- <value>}</value>
- </group>
- <group d:id="ch15-include">
- <value>include</value>
- <ref name="literal"/>
- <optional>
- <ref name="inherit"/>
- </optional>
- <optional>
- <value>{</value>
- <zeroOrMore>
- <ref name="includeContent"/>
- </zeroOrMore>
- <value>}</value>
- </optional>
- </group>
- </choice>
- </define>
- <define name="includeContent" d:id="ch16-includeContent">
- <choice>
- <ref name="define"/>
- <ref name="start"/>
- <group>
- <value>div</value>
- <value>{</value>
- <zeroOrMore>
- <ref name="includeContent"/>
- </zeroOrMore>
- <value>}</value>
- </group>
- </choice>
- </define>
- <define name="start" d:id="ch15-start">
- <value>start</value>
- <ref name="assignMethod"/>
- <ref name="pattern"/>
- </define>
- <define name="define" d:id="ch15-define">
- <ref name="identifier"/>
- <ref name="assignMethod"/>
- <ref name="pattern"/>
- </define>
- <define name="assignMethod" d:id="ch16-assignMethod">
- <choice>
- <value>=</value>
- <value>|=</value>
- <value>&=</value>
- </choice>
- </define>
- <define name="nameClass" d:id="ch16-nameClass">
- <choice>
- <ref name="name"/>
- <group d:id="ch15-nsName">
- <data type="NCName"/>
- <value>:*</value>
- <optional>
- <ref name="exceptNameClass"/>
- </optional>
- </group>
- <group d:id="ch15-anyName">
- <value>*</value>
- <optional>
- <ref name="exceptNameClass"/>
- </optional>
- </group>
- <group d:id="ch15-choice2">
- <ref name="nameClass"/>
- <value>|</value>
- <ref name="nameClass"/>
- </group>
- <group d:id="ch16-parenthesis-nc">
- <value>(</value>
- <ref name="nameClass"/>
- <value>)</value>
- </group>
- </choice>
- </define>
- <define name="name" d:id="ch16-name">
- <choice>
- <ref name="identifierOrKeyword"/>
- <ref name="CName"/>
- </choice>
- </define>
- <define name="exceptNameClass" d:id="ch15-except2">
- <value>-</value>
- <ref name="nameClass"/>
- </define>
- <define name="datatypeName" d:id="ch16-datatypeName">
- <choice>
- <ref name="CName"/>
- <value>string</value>
- <value>token</value>
- </choice>
- </define>
- <define name="namespaceURILiteral" d:id="namespaceURILiteral">
- <choice>
- <ref name="literal"/>
- <value>inherit</value>
- </choice>
- </define>
- <define name="inherit" d:id="inherit">
- <value>inherit</value>
- <value>=</value>
- <ref name="identifierOrKeyword"/>
- </define>
- <define name="identifierOrKeyword" d:id="identifierOrKeyword">
- <choice>
- <ref name="identifier"/>
- <ref name="keyword"/>
- </choice>
- </define>
- <define name="identifier" d:id="identifier">
- <choice>
- <data type="NCName">
- <except>
- <ref name="keyword"/>
- </except>
- </data>
- <ref name="quotedIdentifier"/>
- </choice>
- </define>
- <define name="quotedIdentifier" d:id="quotedIdentifier">
- <value>\</value>
- <data type="NCName"/>
- </define>
- <define name="CName" d:id="CName">
- <data type="NCName"/>
- <value>:</value>
- <data type="NCName"/>
- </define>
- <define name="literal" d:id="literal">
- <ref name="literalSegment"/>
- <oneOrMore>
- <value>~</value>
- <ref name="literalSegment"/>
- </oneOrMore>
- </define>
- <define name="literalSegment" d:id="literalSegment">
- <choice>
- <group d:id="literalSegmentDoubleQuote">
- <value>"</value>
- <zeroOrMore>
- <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
- <except>
- <value>"</value>
- <data type="newline" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes"/>
- </except>
- </data>
- </zeroOrMore>
- <value>"</value>
- </group>
- <group d:id="literalSegmentSimpleQuote">
- <value>'</value>
- <zeroOrMore>
- <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
- <except>
- <value>'</value>
- <data type="newline" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes"/>
- </except>
- </data>
- </zeroOrMore>
- <value>'</value>
- </group>
- <group d:id="literalSegmentPythonicDouble">
- <value>"""</value>
- <zeroOrMore>
- <optional>
- <value>"</value>
- </optional>
- <optional>
- <value>"</value>
- </optional>
- <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
- <except>
- <value>"</value>
- </except>
- </data>
- </zeroOrMore>
- <value>"""</value>
- </group>
- <group d:id="literalSegmentPythonicSimple">
- <value>'''</value>
- <zeroOrMore>
- <optional>
- <value>'</value>
- </optional>
- <optional>
- <value>'</value>
- </optional>
- <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
- <except>
- <value>'</value>
- </except>
- </data>
- </zeroOrMore>
- <value>'''</value>
- </group>
- </choice>
- </define>
- <define name="keyword" d:id="keyword">
- <choice>
- <value>attribute</value>
- <value>default</value>
- <value>datatypes</value>
- <value>div</value>
- <value>element</value>
- <value>empty</value>
- <value>external</value>
- <value>grammar</value>
- <value>include</value>
- <value>inherit</value>
- <value>list</value>
- <value>mixed</value>
- <value>namespace</value>
- <value>notAllowed</value>
- <value>parent</value>
- <value>start</value>
- <value>string</value>
- <value>text</value>
- <value>token</value>
- </choice>
- </define>
- </grammar>
|