equal
deleted
inserted
replaced
214 |
214 |
215 # ============================================================================= |
215 # ============================================================================= |
216 # Block level |
216 # Block level |
217 # ============================================================================= |
217 # ============================================================================= |
218 |
218 |
219 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blocks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
219 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
220 |
220 |
221 block = (parag | \list | speech | media) |
221 block = (parag | \list | table | speech | media) |
222 |
222 |
223 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ parag ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
223 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ parag ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
224 |
224 |
225 parag = element parag { parag.content } |
225 parag = element parag { parag.content } |
226 |
226 |
227 parag.content = |
227 parag.content = |
228 inlines |
228 inlines |
229 & link* |
229 & link* |
230 |
230 |
231 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
231 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
232 |
232 |
233 # ~~~~~~ list |
233 # ~~~~~~ list |
234 \list = element list { \list.content } |
234 \list = element list { \list.content } |
235 |
235 |
236 \list.content = |
236 \list.content = |
253 # ~~~~~~ label |
253 # ~~~~~~ label |
254 label = element label { label.content } |
254 label = element label { label.content } |
255 |
255 |
256 label.content = inlines |
256 label.content = inlines |
257 |
257 |
|
258 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
259 |
|
260 table = element table { table.content } |
|
261 |
|
262 table.content = |
|
263 title?, |
|
264 tgroup+, |
|
265 caption? |
|
266 |
|
267 # ~~~~~~ tgroup |
|
268 tgroup = element tgroup { tgroup.attributes, tgroup.content } |
|
269 |
|
270 tgroup.content = |
|
271 thead?, |
|
272 tfoot?, |
|
273 tbody |
|
274 |
|
275 tgroup.attributes = |
|
276 cols.attribute |
|
277 & align.attribute? |
|
278 & colsep.attribute? |
|
279 & rowsep.attribute? |
|
280 cols.attribute = attribute cols { xsd:positiveInteger } |
|
281 align.attribute = attribute align { "left" | "right" | "center" | "justify" } |
|
282 colsep.attribute = attribute colsep { "0" | "1" } |
|
283 rowsep.attribute = attribute rowsep { "0" | "1" } |
|
284 |
|
285 # ~~~~~~ thead, tfoot, tbody |
|
286 thead = element thead { thead.content } |
|
287 tfoot = element tfoot { tfoot.content } |
|
288 tbody = element tbody { tbody.content } |
|
289 |
|
290 thead.content = |
|
291 row+ |
|
292 tfoot.content = |
|
293 row+ |
|
294 tbody.content = |
|
295 row+ |
|
296 |
|
297 # ~~~~~~ row |
|
298 row = element row { row.attribute, row.content } |
|
299 |
|
300 row.attribute = |
|
301 valign.attribute? |
|
302 valign.attribute = attribute valign { "top" | "middle" | "bottom" } |
|
303 |
|
304 row.content = |
|
305 entry+ |
|
306 |
|
307 # ~~~~~~ entry |
|
308 entry = element entry { entry.content } |
|
309 |
|
310 entry.content = |
|
311 inlines |
|
312 | parag+ |
|
313 |
|
314 # ~~~~~~ caption |
|
315 caption = element caption { caption.content } |
|
316 |
|
317 caption.content = |
|
318 parag+ |
|
319 |
258 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
320 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
259 |
321 |
260 # ~~~~~~ speech |
322 # ~~~~~~ speech |
261 speech = element speech { speech.content } |
323 speech = element speech { speech.content } |
262 |
324 |
280 # ~~~~~~ media |
342 # ~~~~~~ media |
281 media = element media { media.content } |
343 media = element media { media.content } |
282 |
344 |
283 media.content = |
345 media.content = |
284 image+, |
346 image+, |
285 media.caption? |
347 caption? |
286 |
|
287 media.id.attribute = attribute id { xsd:NMTOKEN } |
|
288 |
348 |
289 # ~~~~~~ image |
349 # ~~~~~~ image |
290 image = element image { image.attributes, image.content } |
350 image = element image { image.attributes, image.content } |
291 |
351 |
292 image.attributes = |
352 image.attributes = |
293 media.id.attribute |
353 media.id.attribute |
|
354 media.id.attribute = attribute id { xsd:NMTOKEN } |
294 |
355 |
295 image.content = |
356 image.content = |
296 copyright? |
357 copyright? |
297 |
|
298 # ~~~~~~ caption |
|
299 media.caption = element caption { media.caption.content } |
|
300 |
|
301 media.caption.content = |
|
302 parag+ |
|
303 |
358 |
304 # ~~~~~~ copyright |
359 # ~~~~~~ copyright |
305 copyright = element copyright { copyright.content } |
360 copyright = element copyright { copyright.content } |
306 |
361 |
307 copyright.content = inlines |
362 copyright.content = inlines |
379 note.attributes = |
434 note.attributes = |
380 note.label.attribute? |
435 note.label.attribute? |
381 note.label.attribute = attribute label { text } |
436 note.label.attribute = attribute label { text } |
382 |
437 |
383 note.content = |
438 note.content = |
384 parag+ |
439 inlines |
|
440 | parag+ |
385 |
441 |
386 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
442 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
387 |
443 |
388 foreign = element foreign { foreign.attributes, foreign.content } |
444 foreign = element foreign { foreign.attributes, foreign.content } |
389 |
445 |