summaryrefslogtreecommitdiff
blob: b69d824ef3a82418f080074b96d8333204620448 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"

inline.class =
  sup | sub | b | brite | c | e | path | img | br | mail | uri | keyval
pre.class = comment | i | keyword | ident | const | stmt | var | keyval
block.class =
  figure | fig | note | impo | warn | pre | p | table | ul | ol | dl
# VULGAR FRACTION ONE HALF

# VULGAR FRACTION ONE HALF

# VULGAR FRACTION ONE QUARTER

# VULGAR FRACTION THREE QUARTERS

#

#

#

#

# SUPERSCRIPT ONE

# SUPERSCRIPT TWO

# SUPERSCRIPT THREE

# PLUS SIGN

# PLUS-MINUS SIGN

# LESS-THAN SIGN

# EQUALS SIGN

# GREATER-THAN SIGN

# DIVISION SIGN

# MULTIPLICATION SIGN

# CURRENCY SIGN

# POUND SIGN

# DOLLAR SIGN

# CENT SIGN

# YEN SIGN

# NUMBER SIGN

# PERCENT SIGN

# AMPERSAND

# ASTERISK OPERATOR

# COMMERCIAL AT

# LEFT SQUARE BRACKET

# REVERSE SOLIDUS

# RIGHT SQUARE BRACKET

# LEFT CURLY BRACKET

# HORIZONTAL BAR

# VERTICAL LINE

# RIGHT CURLY BRACKET

# MICRO SIGN

# OHM SIGN

# DEGREE SIGN

# MASCULINE ORDINAL INDICATOR

# FEMININE ORDINAL INDICATOR

# SECTION SIGN

# PILCROW SIGN

# MIDDLE DOT

# LEFTWARDS DOUBLE ARROW

# RIGHTWARDS DOUBLE ARROW

# UPWARDS ARROW

# DOWNWARDS ARROW

# COPYRIGHT SIGN

# REG TRADE MARK SIGN

# TRADE MARK SIGN

# BROKEN BAR

# NOT SIGN

#

# EXCLAMATION MARK

# INVERTED EXCLAMATION MARK

# QUOTATION MARK

# APOSTROPHE

# LEFT PARENTHESIS

# RIGHT PARENTHESIS

# COMMA

# LOW LINE

#

# FULL STOP

# SOLIDUS

# COLON

# SEMICOLON

# QUESTION MARK

# INVERTED QUESTION MARK

# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK

# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK

#

# RIGHT SINGLE QUOTATION MARK

#

# RIGHT DOUBLE QUOTATION MARK

# NO-BREAK SPACE

# SOFT HYPHEN
book =
  element book {
    book.attlist,
    title,
    values?,
    author+,
    abstract,
    license?,
    version,
    date,
    part+
  }
book.attlist &=
  attribute link { text },
  attribute disclaimer {
    "articles" | "oldbook" | "draft" | "obsolete"
  }?,
  attribute lang { text }?
title = element title { title.attlist, text }
title.attlist &= empty
values = element values { values.attlist, key+ }
values.attlist &= empty
key = element key { key.attlist, text }
key.attlist &= attribute id { text }?
author = element author { author.attlist, (text | mail)* }
author.attlist &= attribute title { text }?
abstract = element abstract { abstract.attlist, text }
abstract.attlist &= empty
license = element license { license.attlist, empty }
license.attlist &= empty
version = element version { version.attlist, text }
version.attlist &= empty
date = element date { date.attlist, text }
date.attlist &= empty
part = element part { part.attlist, title, abstract, chapter+ }
part.attlist &= attribute id { text }?
chapter =
  element chapter { chapter.attlist, title, abstract?, \include }
chapter.attlist &= attribute id { text }?
section = element section { section.attlist, title, body*, subsection* }
section.attlist &=
  attribute id { text }?,
  attribute test { text }?
sections =
  element sections {
    sections.attlist, abstract?, version, date, section+
  }
sections.attlist &= empty
subsection = element subsection { subsection.attlist, title?, body+ }
subsection.attlist &=
  attribute id { text }?,
  attribute test { text }?
body = element body { body.attlist, block.class* }
body.attlist &= attribute test { text }?
figure = element figure { figure.attlist, empty }
figure.attlist &=
  attribute caption { text }?,
  attribute short { text }?,
  attribute link { text }
fig = element fig { fig.attlist, empty }
fig.attlist &=
  attribute short { text }?,
  attribute linkto { text }?,
  attribute link { text }
img = element img { img.attlist, empty }
img.attlist &= attribute src { text }
br = element br { br.attlist, text }
br.attlist &= empty
note = element note { note.attlist, (text | inline.class)* }
note.attlist &= attribute test { text }?
impo = element impo { impo.attlist, (text | inline.class)* }
impo.attlist &= attribute test { text }?
warn = element warn { warn.attlist, (text | inline.class)* }
warn.attlist &= attribute test { text }?
pre = element pre { pre.attlist, (text | pre.class)* }
pre.attlist &=
  attribute caption { text },
  attribute test { text }?
p = element p { p.attlist, (text | inline.class)* }
p.attlist &=
  attribute by { text }?,
  attribute test { text }?
table = element table { table.attlist, tcolumn*, tr+ }
table.attlist &= attribute test { text }?
tcolumn = element tcolumn { tcolumn.attlist, empty }
tcolumn.attlist &= attribute width { text }
tr = element tr { tr.attlist, (th | ti)+ }
tr.attlist &=
  attribute id { text }?,
  attribute test { text }?
th = element th { th.attlist, (text | inline.class)* }
th.attlist &=
  attribute colspan { text }?,
  attribute rowspan { text }?
ti = element ti { ti.attlist, (text | inline.class)* }
ti.attlist &=
  attribute colspan { text }?,
  attribute rowspan { text }?,
  [ a:defaultValue = "left" ]
  attribute align { "left" | "center" | "right" }?
dl = element dl { dl.attlist, (dt | dd)+ }
dl.attlist &= empty
dt = element dt { dt.attlist, (text | inline.class)* }
dt.attlist &= empty
dd = element dd { dd.attlist, (text | inline.class | ul | ol)* }
dd.attlist &= empty
ul = element ul { ul.attlist, li+ }
ul.attlist &= attribute test { text }?
ol = element ol { ol.attlist, li+ }
ol.attlist &= attribute test { text }?
li = element li { li.attlist, (text | inline.class | ul | ol)* }
li.attlist &= attribute test { text }?
# STYLE TAGS
sup = element sup { sup.attlist, (text | inline.class)* }
sup.attlist &= empty
sub = element sub { sub.attlist, (text | inline.class)* }
sub.attlist &= empty
b = element b { b.attlist, (text | inline.class)* }
b.attlist &= empty
brite = element brite { brite.attlist, (text | inline.class)* }
brite.attlist &= empty
c = element c { c.attlist, (text | inline.class)* }
c.attlist &= empty
e = element e { e.attlist, (text | inline.class)* }
e.attlist &= empty
path = element path { path.attlist, (text | inline.class)* }
path.attlist &= empty
comment = element comment { comment.attlist, (text | pre.class | b)* }
comment.attlist &= empty
i = element i { i.attlist, (text | pre.class)* }
i.attlist &= empty
keyword = element keyword { keyword.attlist, (text | pre.class)* }
keyword.attlist &= empty
ident = element ident { ident.attlist, (text | pre.class)* }
ident.attlist &= empty
const = element const { const.attlist, (text | pre.class)* }
const.attlist &= empty
stmt = element stmt { stmt.attlist, (text | pre.class)* }
stmt.attlist &= empty
var = element var { var.attlist, (text | pre.class)* }
var.attlist &= empty
keyval = element keyval { keyval.attlist, empty }
keyval.attlist &= attribute id { text }
# LINK TAGS
mail = element mail { mail.attlist, text* }
mail.attlist &= attribute link { text }
uri = element uri { uri.attlist, (text | img)* }
uri.attlist &= attribute link { text }?
\include = element include { include.attlist, text }
include.attlist &= attribute href { text }
start = book | sections