1 namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
2 namespace rng = "http://relaxng.org/ns/structure/1.0"
4 # Emacs Muse RELAX NG Schema v. 1.2
5 # Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
6 # Free Software Foundation, Inc.
8 # Author: Brad Collins (brad AT chenla DOT org)
9 # Maintainer: Michael Olson <mwolson@gnu.org>
11 # This is free software; you can redistribute it and/or modify it
12 # under the terms of the GNU General Public License as published by
13 # the Free Software Foundation; either version 3 of the License, or
14 # (at your option) any later version. This material is distributed in
15 # the hope that it will be useful, but WITHOUT ANY WARRANTY; without
16 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
17 # PARTICULAR PURPOSE. See the GNU General Public License for more
18 # details.You should have received a copy of the GNU General Public
19 # License along with this file; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
25 # RelaxNG Compact syntax can be converted into RelaxNG XML Syntax,
26 # DTD format and XML Schema language using free tools.
28 # Emacs users are encouraged to use James Clarke's nxml-mode for
29 # editing and validating XML files. If you are in nxml-mode use the
30 # command C-c C-s C-f to point to this schema file, say yes if you
31 # are asked if you want to copy the file to your location, and then
32 # C-c C-s C-a can be used to reload the schema if you make changes
38 # - Original version by Brad Collins.
41 # - Hacked it to the point of working with Muse's QuickStart
45 # - Permit lists to be nested.
48 # - Permit paragraph-level markup, such as links, to appear in
50 # - Support multiple definitions in a definition list.
51 # - Permit a list to be nested inside of a definition.
52 # - Permit a link to be inside of a title.
53 # - Permit emphasis to be inside of other emphasis.
56 # - Add the <cite> tag.
60 # - Don't allow <cite> tags inside of format elements.
71 muse.element.pageinfo?
72 & muse.element.section*
74 & muse.element.blockquote*
79 & muse.element.example*
83 # ------------------------------------------------
85 # ------------------------------------------------
86 ## pageinfo element used for metadata
88 muse.element.pageinfo = element pageinfo {
90 & muse.element.author?
91 & muse.element.maintainer?
92 & muse.element.pubdate? }?
95 muse.element.title = element title {
99 ## page author element
100 muse.element.author = element author { text }?
102 ## page maintainer element
103 muse.element.maintainer = element maintainer { text }?
105 ## page publication date element
106 muse.element.pubdate = element pubdate { text }?
108 # ------------------------------------------------
110 # ------------------------------------------------
112 muse.element.section = element section {
114 & muse.attribute.level?
115 & muse.element.section*
116 & muse.element.title*
118 & muse.element.blockquote*
119 & muse.element.table*
122 & muse.element.image*
123 & muse.element.example*
124 & muse.element.verse*
127 ## blockquote element
128 muse.element.blockquote = element blockquote {
133 muse.element.p = element p {
137 & muse.element.format*
138 & muse.element.image*
140 & muse.element.image*
141 & muse.element.anchor*
142 & muse.element.footnote*
146 muse.element.example = element example { text }?
149 muse.element.verse = element verse {
150 muse.element.line* }?
152 ## verse line element
153 muse.element.line = element line {
157 & muse.element.format*
158 & muse.element.image*
160 & muse.element.image*
161 & muse.element.anchor*
162 & muse.element.footnote*
165 # ------------------------------------------------
166 # Unordered list elements
167 # ------------------------------------------------
169 muse.element.list = element list {
171 & muse.element.item* }?
173 muse.element.item = element item {
175 & muse.element.definition*
179 & muse.element.format*
180 & muse.element.image*
183 & muse.element.blockquote*
184 & muse.element.table*
185 & muse.element.example*
186 & muse.element.verse*
190 # ------------------------------------------------
191 # Definition list elements
192 # ------------------------------------------------
194 muse.element.term = element term {
198 & muse.element.format*
199 & muse.element.image*
201 & muse.element.image*
205 muse.element.definition = element definition {
209 & muse.element.format*
210 & muse.element.image*
212 & muse.element.image*
216 # ------------------------------------------------
218 # ------------------------------------------------
221 ## used for emphasis, underlining, and centering paragraphs
222 muse.element.format = element format {
224 & muse.attribute.level?
226 & muse.element.format*
230 ## used for citing sources
231 muse.element.cite = element cite {
236 ## used for small pieces of monospace text, like commands
237 muse.element.code = element code { text }?
239 muse.element.image = element image { muse.attribute.href? }?
241 ## horizontal rule element
242 muse.element.hr = element hr { empty }?
245 muse.element.footnote = element footnote { text }?
248 muse.element.anchor = element anchor { muse.attribute.id }?
251 muse.element.link = element link {
253 & muse.attribute.href
256 # ------------------------------------------------
258 # ------------------------------------------------
261 muse.attribute.type = attribute type { text }?
264 muse.attribute.level = attribute level { text }?
266 ## href attribute -- must have valid URI
267 muse.attribute.href = attribute href { xsd:anyURI }?
270 muse.attribute.id = attribute id { text }?
272 # ------------------------------------------------
274 # ------------------------------------------------
277 muse.element.table = element table {
279 & muse.element.thead*
280 & muse.element.tfoot* }?
282 ## table body element
283 muse.element.tbody = element tbody { muse.element.tr* }?
285 ## table header element
286 muse.element.thead = element thead { muse.element.tr* }?
288 ## table footer element
289 muse.element.tfoot = element tfoot { muse.element.tr* }?
292 muse.element.tr = element tr {
294 & muse.element.th* }?
297 muse.element.td = element td {
301 & muse.element.format*
302 & muse.element.image*
304 & muse.element.image*
305 & muse.element.anchor*
306 & muse.element.footnote*
310 muse.element.th = element th {
314 & muse.element.format*
315 & muse.element.image*
317 & muse.element.image*
318 & muse.element.anchor*
319 & muse.element.footnote*