summaryrefslogtreecommitdiff
blob: 3bae1c37af6510b7ee53ccdfd6b26fbf96ca1b6c (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
metadoc =
  element metadoc {
    metadoc.attlist, version, members, categories, files, docs
  }
metadoc.attlist &=
  attribute lang { text },
  attribute parent { text }?
version = element version { version.attlist, text }
version.attlist &= empty
members = element members { members.attlist, lead*, member* }
members.attlist &= empty
lead = element lead { lead.attlist, text* }
lead.attlist &= empty
# <lead>nickname</lead>
member = element member { member.attlist, text* }
member.attlist &=
  attribute mail { text }?,
  attribute fullname { text }?
categories = element categories { categories.attlist, cat* }
categories.attlist &= empty
cat = element cat { cat.attlist, text* }
cat.attlist &=
  attribute id { text },
  attribute parent { text }?
files = element files { files.attlist, file* }
files.attlist &= empty
file = element file { file.attlist, text* }
file.attlist &= attribute id { text }
docs = element docs { docs.attlist, doc* }
docs.attlist &= empty
doc = element doc { doc.attlist, memberof*, fileid, bugs? }
doc.attlist &= attribute id { text }
memberof = element memberof { memberof.attlist, text* }
memberof.attlist &= empty
fileid = element fileid { fileid.attlist, text* }
fileid.attlist &=
  attribute vpart { text }?,
  attribute vchap { text }?
bugs = element bugs { bugs.attlist, bug* }
bugs.attlist &= empty
bug = element bug { bug.attlist, text* }
bug.attlist &=
  attribute stopper { "yes" | "no" }?,
  attribute arch { text }?
dynamic =
  element dynamic {
    dynamic.attlist,
    version?,
    title,
    intro?,
    (listing | catid* | overview)
  }
dynamic.attlist &= attribute metadoc { text }
title = element title { title.attlist, text* }
title.attlist &= empty
intro = element intro { intro.attlist, section* }
intro.attlist &= empty
# Section stuff copy/pasted from guide.dtd
listing = element listing { listing.attlist, \list* }
listing.attlist &= empty
\list = element list { list.attlist, text* }
list.attlist &= empty
catid = element catid { catid.attlist, text* }
catid.attlist &= empty
overview = element overview { overview.attlist, empty }
overview.attlist &= empty
inline.class = b | brite | c | e | path | img | br | mail | uri
pre.class = comment | i
block.class =
  box | figure | fig | note | impo | warn | pre | p | table | ul | ol
section = element section { section.attlist, title?, body }
section.attlist &= attribute id { text }?
body =
  element body {
    body.attlist, (block.class | glsa-latest | glsaindex)*
  }
body.attlist &= empty
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 &= empty
impo = element impo { impo.attlist, (text | inline.class)* }
impo.attlist &= empty
warn = element warn { warn.attlist, (text | inline.class)* }
warn.attlist &= empty
pre = element pre { pre.attlist, (text | pre.class)* }
pre.attlist &= attribute caption { text }
p = element p { p.attlist, (text | inline.class)* }
p.attlist &= empty
table = element table { table.attlist, tcolumn*, tr+ }
table.attlist &= empty
tcolumn = element tcolumn { tcolumn.attlist, empty }
tcolumn.attlist &= attribute width { text }
tr = element tr { tr.attlist, (th | ti)+ }
tr.attlist &= empty
th = element th { th.attlist, (text | inline.class)* }
th.attlist &= empty
ti = element ti { ti.attlist, (text | inline.class | block.class)* }
ti.attlist &= empty
ul = element ul { ul.attlist, li+ }
ul.attlist &= empty
ol = element ol { ol.attlist, li+ }
ol.attlist &= empty
li = element li { li.attlist, (text | inline.class | ul | ol)* }
li.attlist &= empty
# STYLE TAGS
b = element b { b.attlist, (text | inline.class)* }
b.attlist &= empty
brite = element brite { brite.attlist, (text | inline.class)* }
brite.attlist &= empty
box = element box { box.attlist, (text | inline.class)* }
box.attlist &= empty
c = element c { c.attlist, (text | inline.class)* }
c.attlist &= empty
comment = element comment { comment.attlist, (text | pre.class)* }
comment.attlist &= empty
e = element e { e.attlist, (text | inline.class)* }
e.attlist &= empty
i = element i { i.attlist, (text | pre.class)* }
i.attlist &= empty
path = element path { path.attlist, (text | inline.class)* }
path.attlist &= empty
# LINK TAGS
mail = element mail { mail.attlist, text* }
mail.attlist &= attribute link { text }?
uri = element uri { uri.attlist, text* }
uri.attlist &= attribute link { text }?
glsa-latest |= notAllowed
glsaindex |= notAllowed
start = dynamic | metadoc
# 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