179 lines
4.4 KiB
DTD
179 lines
4.4 KiB
DTD
<!-- relaxng.dtd
|
|
|
|
Based on grammar in section 3 of RELAX NG 1.0 (3 December 2001), which
|
|
made this very easy to put together. While entity declarations such as
|
|
those for param, start, and define may look redundant, I wanted this to
|
|
reflect the BNF grammar as closely as possible.
|
|
|
|
12/05/01 Bob DuCharme. Use at your own risk, no warrantee expressed or
|
|
implied, etc.
|
|
|
|
Last updated 12/31/01.
|
|
See http://www.snee.com/xml/relaxng/dtdChangeList.html for changes.
|
|
|
|
CL 2003-12-05
|
|
Added xml:lang to common attrs
|
|
|
|
Tested with:
|
|
|
|
- RELAX NG schema for RELAX NG, App A of spec:
|
|
http://www.oasis-open.org/committees/relax-ng/spec-20011203.html#IDA5MCS
|
|
|
|
- RELAX NG schema for RELAX NG at
|
|
http://thaiopensource.com/relaxng/relaxng.rng
|
|
|
|
- XSLT schema at http://thaiopensource.com/relaxng/xslt.rng
|
|
|
|
- testSuite.rng from http://thaiopensource.com/relaxng/testSuite.zip
|
|
|
|
-->
|
|
<!ENTITY % extensionAtts "">
|
|
<!ENTITY % extensionPattern "">
|
|
<!-- Add | before each one, e.g. "| x | y" -->
|
|
<!ENTITY % extensionGrammarContent "">
|
|
<!-- Add | before each one -->
|
|
<!ENTITY % commonAtts "datatypeLibrary CDATA #IMPLIED
|
|
ns CDATA #IMPLIED
|
|
xml:lang CDATA #IMPLIED
|
|
xmlns CDATA #FIXED 'http://relaxng.org/ns/structure/1.0'
|
|
%extensionAtts;">
|
|
<!-- Declare all nonterminals in grammar as parameter entities. -->
|
|
<!ENTITY % pattern "element | attribute | group | interleave | choice |
|
|
optional | zeroOrMore | oneOrMore | list | mixed |
|
|
ref | parentRef | empty | text | value | data |
|
|
notAllowed | externalRef | grammar %extensionPattern;">
|
|
<!ENTITY % param "param">
|
|
<!ENTITY % exceptPattern "except">
|
|
<!ENTITY % start "start">
|
|
<!ENTITY % define "define">
|
|
<!ENTITY % grammarContent "%start; | %define; |
|
|
div | include %extensionGrammarContent;">
|
|
<!ENTITY % includeContent "%start; | %define; | div %extensionGrammarContent;">
|
|
<!ENTITY % method "choice | interleave">
|
|
<!-- "| choice" not in the following; See change notes. -->
|
|
<!ENTITY % nameClass "name | anyName | nsName">
|
|
<!ENTITY % exceptNameClass "except">
|
|
<!ELEMENT element ((%nameClass;)?, (%pattern;)+)>
|
|
<!ATTLIST element
|
|
name NMTOKEN #IMPLIED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT attribute ((%nameClass;)?, (%pattern;)?)>
|
|
<!ATTLIST attribute
|
|
name NMTOKEN #IMPLIED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT group (%pattern;)+>
|
|
<!ATTLIST group
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT interleave (%pattern;)+>
|
|
<!ATTLIST interleave
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT choice (%nameClass; | %pattern;)+>
|
|
<!ATTLIST choice
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT optional (%pattern;)+>
|
|
<!ATTLIST optional
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT zeroOrMore (%pattern;)+>
|
|
<!ATTLIST zeroOrMore
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT oneOrMore (%pattern;)+>
|
|
<!ATTLIST oneOrMore
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT list (%pattern;)+>
|
|
<!ATTLIST list
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT mixed (%pattern;)+>
|
|
<!ATTLIST mixed
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT ref EMPTY>
|
|
<!ATTLIST ref
|
|
name NMTOKEN #REQUIRED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT parentRef EMPTY>
|
|
<!ATTLIST parentRef
|
|
name NMTOKEN #REQUIRED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT empty EMPTY>
|
|
<!ATTLIST empty
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT text EMPTY>
|
|
<!ATTLIST text
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT value (#PCDATA)>
|
|
<!ATTLIST value
|
|
type NMTOKEN #IMPLIED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT data ((%param;)*, (%exceptPattern;)?)>
|
|
<!ATTLIST data
|
|
type NMTOKEN #REQUIRED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT notAllowed EMPTY>
|
|
<!ATTLIST notAllowed
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT externalRef EMPTY>
|
|
<!ATTLIST externalRef
|
|
href CDATA #REQUIRED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT grammar (%grammarContent;)*>
|
|
<!ATTLIST grammar
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT param (#PCDATA)>
|
|
<!ATTLIST param
|
|
name NMTOKEN #REQUIRED
|
|
>
|
|
<!ELEMENT except (%nameClass; | %pattern;)+>
|
|
<!ATTLIST except
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT div (%grammarContent;)*>
|
|
<!ATTLIST div
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT include (%includeContent;)*>
|
|
<!ATTLIST include
|
|
href CDATA #REQUIRED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT start (%pattern;)>
|
|
<!ATTLIST start
|
|
combine (%method;) #IMPLIED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT define (%pattern;)+>
|
|
<!ATTLIST define
|
|
name NMTOKEN #REQUIRED
|
|
combine (%method;) #IMPLIED
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT name (#PCDATA)>
|
|
<!ATTLIST name
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT anyName (%exceptNameClass;)?>
|
|
<!ATTLIST anyName
|
|
%commonAtts;
|
|
>
|
|
<!ELEMENT nsName (%exceptNameClass;)?>
|
|
<!ATTLIST nsName
|
|
%commonAtts;
|
|
>
|
|
<!-- eof for relaxng.dtd -->
|