1 namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
2 namespace rng = "http://relaxng.org/ns/structure/1.0"
4 # Muse-Mode RELAX NG Schema v. 0.2
5 # Copyright (C) 2005 Free Software Foundation, Inc.
7 # This is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version. This material is distributed in
11 # the hope that it will be useful, but WITHOUT ANY WARRANTY; without
12 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 # PARTICULAR PURPOSE. See the GNU General Public License for more
14 # details.You should have received a copy of the GNU General Public
15 # License along with this file; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
21 # RelaxNG Compact syntax can be converted into RelaxNG XML Syntax,
22 # DTD format and XML Schema language using free tools.
24 # Emacs users are encouraged to use James Clarke's nxml-mode for
25 # editing and validating XML files. If you are in nxml-mode use the
26 # command C-c C-s C-f to point to this schema file, say yes if you
27 # are asked if you want to copy the file to your location, and then
28 # C-c C-s C-a can be used to reload the schema if you make changes
33 # Brad Collins (brad AT chenla DOT org) wrote the initial file.
35 # Michael Olson (mwolson AT gnu DOT org) made it work with Muse's
36 # QuickStart document.
44 & muse.element.pageinfo?
45 & muse.element.section*
47 & muse.attribute.blockquote*
52 & muse.element.example*
53 & muse.element.format* # for centering paragraphs
57 # ------------------------------------------------
59 # ------------------------------------------------
60 ## pageinfo element used for metadata
62 muse.element.pageinfo = element pageinfo {
64 & muse.element.author?
65 & muse.element.maintainer?
66 & muse.element.pubdate? }?
69 muse.element.title = element title { text }?
71 ## page author element
72 muse.element.author = element author { text }?
74 ## page maintainer element
75 muse.element.maintainer = element maintainer { text }?
77 ## page publication date element
78 muse.element.pubdate = element pubdate { text }?
80 # ------------------------------------------------
82 # ------------------------------------------------
84 muse.element.section = element section {
86 & muse.attribute.level?
87 & muse.element.section*
90 & muse.attribute.blockquote*
95 & muse.element.example*
96 & muse.element.format* # for centering paragraphs
100 ## blockquote element
101 muse.attribute.blockquote = element blockquote {
106 muse.element.p = element p {
108 & muse.element.format*
109 & muse.element.image*
111 & muse.element.image*
112 & muse.element.anchor*
113 & muse.element.footnote*
117 muse.element.example = element example { text }?
120 muse.element.verse = element verse {
121 muse.element.line* }?
123 ## verse line element
124 muse.element.line = element line {
126 & muse.element.format*
127 & muse.element.image*
129 & muse.element.image*
130 & muse.element.anchor*
131 & muse.element.footnote*
134 # ------------------------------------------------
135 # Unordered list elements
136 # ------------------------------------------------
138 muse.element.list = element list {
140 & muse.element.item* }?
142 muse.element.item = element item {
144 & muse.element.definition?
146 & muse.element.format*
147 & muse.element.image*
149 & muse.element.image*
152 # ------------------------------------------------
153 # Definition list elements
154 # ------------------------------------------------
156 muse.element.term = element term {
158 & muse.element.format*
159 & muse.element.image*
161 & muse.element.image*
165 muse.element.definition = element definition {
167 & muse.element.format*
168 & muse.element.image*
170 & muse.element.image*
173 # ------------------------------------------------
175 # ------------------------------------------------
178 ## used for emphasis, underlining, and centering paragraphs
179 muse.element.format = element format {
181 & muse.attribute.level?
186 ## used for small pieces of monospace text, like commands
187 muse.element.code = element code { text }?
189 muse.element.image = element image { muse.attribute.href? }?
191 ## horizontal rule element
192 muse.element.hr = element hr { empty }?
195 muse.element.footnote = element footnote { text }?
198 muse.element.anchor = element anchor { muse.attribute.id }?
201 muse.element.link = element link {
203 & muse.attribute.href
206 # ------------------------------------------------
208 # ------------------------------------------------
211 muse.attribute.type = attribute type { text }?
214 muse.attribute.level = attribute level { text }?
216 ## href attribute -- must have valid URI
217 muse.attribute.href = attribute href { xsd:anyURI }?
220 muse.attribute.id = attribute id { text }?
222 # ------------------------------------------------
224 # ------------------------------------------------
227 muse.element.table = element table {
229 & muse.element.thead*
230 & muse.element.tfoot* }?
232 ## table body element
233 muse.element.tbody = element tbody { muse.element.tr* }?
235 ## table header element
236 muse.element.thead = element thead { muse.element.tr* }?
238 ## table footer element
239 muse.element.tfoot = element tfoot { muse.element.tr* }?
242 muse.element.tr = element tr {
247 muse.element.td = element td { text }?
250 muse.element.th = element th { text }?