Docspecs: docspecs.xml

File docspecs.xml, 36.7 KB (added by kthoden, 15 years ago)
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!--
4  *** NOTICE ***
5
6  This version of the docspecs file is not compatible with versions of
7  Arboreal prior to 3.8!
8
9  Last revision: Tue Jul 29 02:09:24 EDT 2003
10-->
11
12<!DOCTYPE docspecs [
13
14<!ELEMENT docspecs (doctype*)>
15
16<!ATTLIST docspecs
17  xmlns     CDATA            #FIXED "http://archimedes.fas.harvard.edu/arboreal/ddl/1.2">
18
19<!ELEMENT doctype                    (containers,
20                                      subcontainers,
21                                      word-separators,
22                                      grapheme-separators,
23                                      langspec,
24                                      metadata,
25                                      page-image,
26                                      defs,
27                                      tree-view,
28                                      content-view)>
29
30<!ATTLIST doctype
31  name      CDATA            #REQUIRED
32  ns        CDATA            #IMPLIED>
33
34<!ELEMENT containers                 (element*)>
35
36<!ELEMENT subcontainers              (element*)>
37
38<!ELEMENT word-separators            (element*)>
39
40<!ELEMENT grapheme-separators        (element*)>
41
42<!ATTLIST grapheme-separators
43  symbol    CDATA            #IMPLIED>
44
45<!ELEMENT langspec                  (attribute)>
46
47<!ELEMENT metadata                   (author, title, locator, language)>
48
49<!ATTLIST metadata
50  name      CDATA            #REQUIRED>
51
52<!ELEMENT page-image                 (element?)>
53
54<!ELEMENT defs                       (pseudoelement*)>
55
56<!ELEMENT content-view               (self | parent)*>
57
58<!ELEMENT tree-view                  (default-node?, (self | parent)*)>
59
60<!ELEMENT pseudoelement              (element, attr-value)>
61
62<!ATTLIST pseudoelement
63  name      NMTOKEN          #REQUIRED>
64
65<!ELEMENT default-node               (#PCDATA | node-name | attribute)*>
66
67<!ELEMENT node-name                  EMPTY>
68
69<!ELEMENT self                       (element,
70                                      if*,       
71                                      ignore-before?,
72                                      ignore-after?,
73                                      ignore-in-parent?,
74                                      render-before?,
75                                      render-after?,
76                                      apply-filter?,
77                                      style?,
78                                      style-extra?)>
79
80<!ELEMENT parent                     (element,
81                                      ignore-before?,
82                                      ignore-after?,
83                                      ignore-in-parent?,
84                                      render-before?,
85                                      render-after?,
86                                      apply-filter?,
87                                      style?,
88                                      style-extra?)>
89
90<!ELEMENT element                    EMPTY>
91
92<!ATTLIST element
93  name      CDATA            #REQUIRED>
94
95<!ELEMENT attribute                  EMPTY>
96
97<!ATTLIST attribute
98  name      CDATA            #REQUIRED>
99
100<!ELEMENT attr-value EMPTY>
101
102<!ATTLIST attr-value
103  name      NMTOKEN          #REQUIRED
104  value     CDATA            #REQUIRED>
105
106<!ELEMENT author                     (#PCDATA)>
107
108<!ELEMENT title                      (#PCDATA)>
109
110<!ELEMENT locator                    (#PCDATA)>
111
112<!ELEMENT language                   (#PCDATA)>
113
114<!ELEMENT nl                         EMPTY>
115
116<!ELEMENT if                         (attr-value, prefix?, suffix?)>
117
118<!ELEMENT prefix                     (#PCDATA | nl)*>
119
120<!ELEMENT suffix                     (#PCDATA | nl)*>
121
122<!ELEMENT render-before              (#PCDATA | nl | attribute)*>
123
124<!ELEMENT render-after               (#PCDATA | nl | attribute)*>
125
126<!ELEMENT apply-filter               EMPTY>
127
128<!ATTLIST apply-filter
129  rule      CDATA            #REQUIRED>
130
131<!ELEMENT ignore-before              (element*)>
132
133<!ATTLIST ignore-before
134  dist      (1|2|either)     "1">
135
136<!ELEMENT ignore-after (element*)>
137
138<!ATTLIST ignore-after
139  dist      (1|2|either)     "1">
140
141<!ELEMENT ignore-in-parent           (element*)>
142
143<!ELEMENT style                      (alignment |
144                                      bold |
145                                      foreground |
146                                      italic |
147                                      left-indent |
148                                      right-indent |
149                                      subscript |
150                                      superscript |
151                                      underline)*>
152
153<!ELEMENT style-extra                (alignment |
154                                      bold |
155                                      foreground |
156                                      italic |
157                                      left-indent |
158                                      right-indent |
159                                      subscript |
160                                      superscript |
161                                      underline)*>
162
163<!ELEMENT alignment                  EMPTY>
164
165<!ATTLIST alignment
166  value     (left | right | center | justified)    "left">
167
168<!ELEMENT bold                       EMPTY>
169
170<!ELEMENT foreground                 EMPTY>
171
172<!ATTLIST foreground
173  value     CDATA            #REQUIRED>
174
175<!ELEMENT italic                     EMPTY>
176
177<!ELEMENT left-indent                EMPTY>
178
179<!ATTLIST left-indent
180  value     CDATA            #REQUIRED>
181
182<!ELEMENT right-indent               EMPTY>
183
184<!ATTLIST right-indent
185  value     CDATA            #REQUIRED>
186
187<!ELEMENT subscript                  EMPTY>
188
189<!ELEMENT superscript                EMPTY>
190
191<!ELEMENT underline                  EMPTY>
192]>
193
194<docspecs>
195  <!-- the generic docspec (for Archimedes texts) -->
196  <doctype name="">
197    <containers>
198      <element name="s"/>
199      <element name="cell"/>
200    </containers>
201
202    <subcontainers>
203      <element name="foreign"/>
204    </subcontainers>
205
206    <word-separators>
207    </word-separators>
208
209    <grapheme-separators>
210    </grapheme-separators>
211
212    <langspec>
213      <attribute name="lang"/>
214    </langspec>
215
216    <metadata name="info">
217      <author>/archimedes/info/author/text()</author>
218      <title>/archimedes/info/title/text()</title>
219      <locator>/archimedes/info/locator/text()</locator>
220      <language>/archimedes/info/lang/text()</language>
221    </metadata>
222
223    <page-image>
224      <element name="pb"/>
225    </page-image>
226
227    <defs>
228      <pseudoelement name="heading">
229        <element name="p"/>
230        <attr-value name="type" value="head"/>
231      </pseudoelement>
232    </defs>
233
234    <tree-view>
235      <self>
236        <element name="archimedes"/>
237        <render-before>Archimedes Project document</render-before>
238      </self>
239      <self>
240        <element name="info"/>
241        <render-before>Metadata</render-before>
242      </self>
243      <self>
244        <element name="author"/>
245        <render-before>Author: </render-before>
246      </self>
247      <self>
248        <element name="title"/>
249        <render-before>Title: </render-before>
250      </self>
251      <self>
252        <element name="date"/>
253        <render-before>Date: </render-before>
254      </self>
255      <self>
256        <element name="place"/>
257        <render-before>Place: </render-before>
258      </self>
259      <self>
260        <element name="translator"/>
261        <render-before>Translator: </render-before>
262      </self>
263      <self>
264        <element name="lang"/>
265        <render-before>Language (ISO 639): </render-before>
266      </self>
267      <self>
268        <element name="cvs_file"/>
269        <render-before>CVS name: </render-before>
270      </self>
271      <self>
272        <element name="cvs_version"/>
273        <render-before>CVS version: </render-before>
274      </self>
275      <self>
276        <element name="locator"/>
277        <render-before>Locator: </render-before>
278      </self>
279      <self>
280        <element name="text"/>
281        <render-before>Text</render-before>
282      </self>
283      <self>
284        <element name="front"/>
285        <render-before>Front matter</render-before>
286      </self>
287      <self>
288        <element name="body"/>
289        <render-before>Body</render-before>
290      </self>
291      <self>
292        <element name="back"/>
293        <render-before>Back matter</render-before>
294      </self>
295      <self>
296        <element name="chap"/>
297        <render-before>Chapter</render-before>
298      </self>
299      <self>
300        <element name="section"/>
301        <render-before>&#x00a7;</render-before>
302      </self>
303      <self>
304        <element name="heading"/>
305        <render-before>Heading <attribute name="id"/></render-before>
306      </self>
307      <self>
308        <element name="p"/><!-- pilcrow -->
309        <render-before>&#x00b6; <attribute name="id"/></render-before>
310      </self>
311      <self>
312        <element name="s"/>
313        <apply-filter rule="s/&#173;//g"/>
314      </self>
315      <self>
316        <element name="gap"/>
317        <render-before>&#x2026;</render-before>
318      </self>
319    </tree-view>
320
321    <content-view>
322      <self>
323        <element name="lb"/>
324        <render-before><nl/></render-before>
325      </self>
326      <self>
327        <element name="pb"/>
328        <render-before><nl/></render-before>
329        <render-after><nl/></render-after>
330      </self>
331      <self>
332        <element name="p"/>
333        <render-before><nl/><nl/></render-before>
334      </self>
335      <self>
336        <element name="heading"/>
337        <render-before><nl/><nl/></render-before>
338      </self>
339      <self>
340        <element name="figure"/>
341        <render-before><nl/></render-before>
342        <render-after><nl/></render-after>
343      </self>
344      <self>
345        <element name="table"/>
346        <render-before><nl/></render-before>
347        <render-after><nl/></render-after>
348      </self>
349      <self>
350        <element name="row"/>
351        <render-after><nl/></render-after>
352      </self>
353      <self>
354        <element name="cell"/>
355        <render-after>&#x0009;</render-after><!-- tab -->
356      </self>
357      <self>
358        <element name="gap"/>
359        <render-before>&#x2026;</render-before>
360      </self>
361      <parent>
362        <element name="info"/>
363        <render-before><nl/></render-before>
364      </parent>
365    </content-view>
366  </doctype>
367
368  <doctype name="termlist">
369    <containers>
370    </containers>
371
372    <subcontainers>
373    </subcontainers>
374
375    <word-separators>
376    </word-separators>
377
378    <grapheme-separators>
379    </grapheme-separators>
380
381    <langspec>
382      <attribute name=""/>
383    </langspec>
384
385    <metadata name="">
386      <author></author>
387      <title></title>
388      <locator></locator>
389      <language></language>
390    </metadata>
391
392    <page-image>
393    </page-image>
394
395    <defs>
396    </defs>
397
398    <tree-view>
399    </tree-view>
400
401    <content-view>
402      <parent>
403        <element name="term"/>
404        <render-before><nl/></render-before>
405      </parent>
406    </content-view>
407  </doctype>
408
409  <!-- a very quick-and-dirty docspec for XHTML
410       (2002-06-23 mdh) -->
411  <doctype name="html">
412    <containers>
413      <element name="p"/>
414      <element name="div"/>
415    </containers>
416
417    <subcontainers>
418    </subcontainers>
419
420    <word-separators>
421    </word-separators>
422
423    <grapheme-separators>
424    </grapheme-separators>
425
426    <langspec>
427      <attribute name="lang"/>
428    </langspec>
429
430    <metadata name="info">
431      <author></author>
432      <title>/descendant::*[name() = "title"]/text()</title>
433      <locator></locator>
434      <language>/descendant::*[name() = "html"]/@lang</language>
435    </metadata>
436
437    <page-image>
438    </page-image>
439
440    <defs>
441    </defs>
442
443    <tree-view>
444    </tree-view>
445
446    <content-view>
447      <self>
448        <element name="br"/>
449        <render-before><nl/></render-before>
450      </self>
451      <self>
452        <element name="li"/>
453        <render-before><nl/></render-before>
454      </self>
455      <self>
456        <element name="p"/>
457        <render-before><nl/><nl/></render-before>
458      </self>
459      <parent>
460        <element name="head"/>
461        <render-before><nl/></render-before>
462      </parent>
463    </content-view>
464  </doctype>
465
466  <!-- the CDLI XML format (under development)
467       CDLI week, L.A. (9 December 2002)
468
469       These rules yield a display that approximates ATF. They are largely
470       complete, with the exception of support for igg and complex glosses.
471       A few subtle problems remain, e.g. with bracket consolidation.
472    --> 
473  <doctype name="" ns="http://cdli.ucla.edu/text/1">
474    <containers>
475      <element name="l"/>
476    </containers>
477
478    <subcontainers>
479    </subcontainers>
480
481    <word-separators>
482      <element name="w"/>
483    </word-separators>
484
485    <grapheme-separators symbol="-">
486      <element name="g"/>
487      <element name="cg.g"/>
488    </grapheme-separators>
489
490    <langspec>
491      <attribute name="xml:lang"/>
492    </langspec>
493
494    <metadata name="">
495      <author></author>
496      <title></title>
497      <locator></locator>
498      <language>/descendant::*[name() = "text"][1]/@xml:lang</language>
499    </metadata>
500
501    <page-image>
502      <element name="object"/>
503    </page-image>
504
505    <defs>
506      <pseudoelement name="missing">
507        <element name="g"/>
508        <attr-value name="breakage" value="missing"/>
509      </pseudoelement>
510      <pseudoelement name="maybe-missing">
511        <element name="g"/>
512        <attr-value name="breakage" value="maybe-missing"/>
513      </pseudoelement>
514      <pseudoelement name="ed.supplied">
515        <element name="g"/>
516        <attr-value name="sign" value="ed.supplied"/>
517      </pseudoelement>
518      <pseudoelement name="ed.removed">
519        <element name="g"/>
520        <attr-value name="sign" value="ed.removed"/>
521      </pseudoelement>
522      <pseudoelement name="scribe.implied">
523        <element name="g"/>
524        <attr-value name="sign" value="scribe.implied"/>
525      </pseudoelement>
526      <pseudoelement name="pre.gloss">
527        <element name="g"/>
528        <attr-value name="gloss" value="pre"/>
529      </pseudoelement>
530      <pseudoelement name="post.gloss">
531        <element name="g"/>
532        <attr-value name="gloss" value="post"/>
533      </pseudoelement>
534      <pseudoelement name="cg.rel.adjacent">
535        <element name="cg.rel"/>
536        <attr-value name="c" value="adjacent"/>
537      </pseudoelement>
538      <pseudoelement name="cg.rel.ligatured">
539        <element name="cg.rel"/>
540        <attr-value name="c" value="ligatured"/>
541      </pseudoelement>
542      <pseudoelement name="cg.rel.times">
543        <element name="cg.rel"/>
544        <attr-value name="c" value="times"/>
545      </pseudoelement>
546      <pseudoelement name="cg.rel.over">
547        <element name="cg.rel"/>
548        <attr-value name="c" value="over"/>
549      </pseudoelement>
550      <pseudoelement name="cg.rel.crossed">
551        <element name="cg.rel"/>
552        <attr-value name="c" value="crossed"/>
553      </pseudoelement>
554      <pseudoelement name="cg.rel.or">
555        <element name="cg.rel"/>
556        <attr-value name="c" value="or"/>
557      </pseudoelement>
558      <pseudoelement name="signref">
559        <element name="g"/>
560        <attr-value name="nametype" value="signref"/>
561      </pseudoelement>
562      <pseudoelement name="cg.signref">
563        <element name="cg.g"/>
564        <attr-value name="nametype" value="signref"/>
565      </pseudoelement>
566      <pseudoelement name="gg.group">
567        <element name="gg"/>
568        <attr-value name="type" value="group"/>
569      </pseudoelement>
570      <pseudoelement name="gg.alternation">
571        <element name="gg"/>
572        <attr-value name="type" value="alternation"/>
573      </pseudoelement>
574      <pseudoelement name="gg.ligature">
575        <element name="gg"/>
576        <attr-value name="type" value="ligature"/>
577      </pseudoelement>
578      <pseudoelement name="gg.num-plus">
579        <element name="gg"/>
580        <attr-value name="type" value="num-plus"/>
581      </pseudoelement>
582      <pseudoelement name="gg.num-dotted">
583        <element name="gg"/>
584        <attr-value name="type" value="num-dotted"/>
585      </pseudoelement>
586      <pseudoelement name="newline">
587        <element name="nong"/>
588        <attr-value name="type" value="newline"/>
589      </pseudoelement>
590      <pseudoelement name="broken">
591        <element name="nong"/>
592        <attr-value name="type" value="broken"/>
593      </pseudoelement>
594      <pseudoelement name="traces">
595        <element name="nong"/>
596        <attr-value name="type" value="traces"/>
597      </pseudoelement>
598      <pseudoelement name="envelope">
599        <element name="object"/>
600        <attr-value name="type" value="envelope"/>
601      </pseudoelement>
602    </defs>
603
604    <tree-view>
605    </tree-view>
606
607    <content-view>
608      <!-- Hyphen is inserted before g, signref, pre.gloss, post.gloss,
609           missing, maybe-missing, ed.supplied, ed.removed, scribe.implied,
610           cg, cg.g, and cg.signref except at the beginning of a word, or
611           after a pre.gloss, or within any type of gg.
612
613           Further, the hyphen for cg.g is "delegated" to cg: i.e., it is
614           suppressed after cg, and a hyphen is inserted before cg with
615           the distribution indicated above. The hyphen is also suppressed
616           after any cg.rel. -->
617      <self>
618        <element name="g"/>
619        <ignore-after>
620          <element name="w"/>
621          <element name="pre.gloss"/>
622        </ignore-after>
623        <ignore-in-parent>
624          <element name="gg.group"/>
625          <element name="gg.alternation"/>
626          <element name="gg.ligature"/>
627          <element name="gg.num-plus"/>
628          <element name="gg.num-dotted"/>
629        </ignore-in-parent>
630        <render-before>-</render-before>
631      </self>
632      <self>
633        <element name="signref"/>
634        <ignore-after>
635          <element name="w"/>
636          <element name="pre.gloss"/>
637        </ignore-after>
638        <ignore-in-parent>
639          <element name="gg.group"/>
640          <element name="gg.alternation"/>
641          <element name="gg.ligature"/>
642          <element name="gg.num-plus"/>
643          <element name="gg.num-dotted"/>
644        </ignore-in-parent>
645        <render-before>-</render-before>
646      </self>
647      <self>
648        <element name="pre.gloss"/>
649        <ignore-after>
650          <element name="w"/>
651          <element name="newline"/>
652        </ignore-after>
653        <ignore-in-parent>
654          <element name="gg.group"/>
655          <element name="gg.alternation"/>
656          <element name="gg.ligature"/>
657          <element name="gg.num-plus"/>
658          <element name="gg.num-dotted"/>
659        </ignore-in-parent>
660        <render-before>-</render-before>
661      </self>
662      <self>
663        <element name="missing"/>
664        <ignore-after>
665          <element name="w"/>
666          <element name="pre.gloss"/>
667        </ignore-after>
668        <ignore-in-parent>
669          <element name="gg.group"/>
670          <element name="gg.alternation"/>
671          <element name="gg.ligature"/>
672          <element name="gg.num-plus"/>
673          <element name="gg.num-dotted"/>
674        </ignore-in-parent>
675        <render-before>-</render-before>
676      </self>
677      <self>
678        <element name="maybe-missing"/>
679        <ignore-after>
680          <element name="w"/>
681          <element name="pre.gloss"/>
682        </ignore-after>
683        <ignore-in-parent>
684          <element name="gg.group"/>
685          <element name="gg.alternation"/>
686          <element name="gg.ligature"/>
687          <element name="gg.num-plus"/>
688          <element name="gg.num-dotted"/>
689        </ignore-in-parent>
690        <render-before>-</render-before>
691      </self>
692      <self>
693        <element name="ed.supplied"/>
694        <ignore-after>
695          <element name="w"/>
696          <element name="pre.gloss"/>
697        </ignore-after>
698        <ignore-in-parent>
699          <element name="gg.group"/>
700          <element name="gg.alternation"/>
701          <element name="gg.ligature"/>
702          <element name="gg.num-plus"/>
703          <element name="gg.num-dotted"/>
704        </ignore-in-parent>
705        <render-before>-</render-before>
706      </self>
707      <self>
708        <element name="ed.removed"/>
709        <ignore-after>
710          <element name="w"/>
711          <element name="pre.gloss"/>
712        </ignore-after>
713        <ignore-in-parent>
714          <element name="gg.group"/>
715          <element name="gg.alternation"/>
716          <element name="gg.ligature"/>
717          <element name="gg.num-plus"/>
718          <element name="gg.num-dotted"/>
719        </ignore-in-parent>
720        <render-before>-</render-before>
721      </self>
722      <self>
723        <element name="scribe.implied"/>
724        <ignore-after>
725          <element name="w"/>
726          <element name="pre.gloss"/>
727        </ignore-after>
728        <ignore-in-parent>
729          <element name="gg.group"/>
730          <element name="gg.alternation"/>
731          <element name="gg.ligature"/>
732          <element name="gg.num-plus"/>
733          <element name="gg.num-dotted"/>
734        </ignore-in-parent>
735        <render-before>-</render-before>
736      </self>
737      <self>
738        <element name="cg"/>
739        <ignore-after>
740          <element name="w"/>
741          <element name="pre.gloss"/>
742        </ignore-after>
743        <ignore-in-parent>
744          <element name="gg.group"/>
745          <element name="gg.alternation"/>
746          <element name="gg.ligature"/>
747          <element name="gg.num-plus"/>
748          <element name="gg.num-dotted"/>
749        </ignore-in-parent>
750        <render-before>-</render-before>
751      </self>
752      <self>
753        <element name="cg.g"/>
754        <ignore-after>
755          <element name="cg"/>
756          <element name="cg.rel.adjacent"/>
757          <element name="cg.rel.ligatured"/>
758          <element name="cg.rel.times"/>
759          <element name="cg.rel.over"/>
760          <element name="cg.rel.crossed"/>
761          <element name="cg.rel.or"/>
762        </ignore-after>
763        <render-before>-</render-before>
764      </self>
765      <self>
766        <element name="cg.signref"/>
767        <ignore-after>
768          <element name="cg"/>
769          <element name="cg.rel.adjacent"/>
770          <element name="cg.rel.ligatured"/>
771          <element name="cg.rel.times"/>
772          <element name="cg.rel.over"/>
773          <element name="cg.rel.crossed"/>
774          <element name="cg.rel.or"/>
775        </ignore-after>
776        <render-before>-</render-before>
777      </self>
778
779      <!-- render joiners between the elements of a grapheme group -->
780      <parent>
781        <element name="gg.group"/>
782        <ignore-after>
783          <element name="gg.group"/>
784        </ignore-after>
785        <render-before>.</render-before>
786      </parent>
787      <parent>
788        <element name="gg.alternation"/>
789        <ignore-after>
790          <element name="gg.alternation"/>
791        </ignore-after>
792        <render-before>/</render-before>
793      </parent>
794      <parent>
795        <element name="gg.ligature"/>
796        <ignore-after>
797          <element name="gg.ligature"/>
798        </ignore-after>
799        <render-before>+</render-before>
800      </parent>
801      <parent>
802        <element name="gg.num-plus"/>
803        <ignore-after>
804          <element name="gg.num-plus"/>
805        </ignore-after>
806        <render-before>+</render-before>
807      </parent>
808      <parent>
809        <element name="gg.num-dotted"/>
810        <ignore-after>
811          <element name="gg.num-dotted"/>
812        </ignore-after>
813        <render-before>.</render-before>
814      </parent>
815
816      <!-- glosses are surrounded by curly braces -->
817      <self>
818        <element name="pre.gloss"/>
819        <render-before>{</render-before>
820        <render-after>}</render-after>
821      </self>
822      <self>
823        <element name="post.gloss"/>
824        <render-before>{</render-before>
825        <render-after>}</render-after>
826      </self>
827
828      <!-- any sequence of missing elements is surrounded by square brackets -->
829      <self>
830        <element name="missing"/>
831        <ignore-after dist="either">
832          <element name="missing"/>
833          <element name="maybe-missing"/>
834        </ignore-after>
835        <render-before>[</render-before>
836      </self>
837      <self>
838        <element name="missing"/>
839        <ignore-before dist="either">
840          <element name="missing"/>
841          <element name="maybe-missing"/>
842        </ignore-before>
843        <render-after>]</render-after>
844      </self>
845
846      <!-- Any sequence of maybe-missing elements is surrounded by
847           parentheses. It's more complicated, though, since maybe-missing
848           implies missing. Thus if we're not surrounded explicitly by missing,
849           we have to generate square brackets at the outermost level.
850           The ordering of rules is significant. -->
851      <self>
852        <element name="maybe-missing"/>
853        <ignore-after dist="either">
854          <element name="missing"/>
855          <element name="maybe-missing"/>
856        </ignore-after>
857        <render-before>[</render-before>
858      </self>
859      <self>
860        <element name="maybe-missing"/>
861        <ignore-after dist="either">
862          <element name="maybe-missing"/>
863        </ignore-after>
864        <render-before>(</render-before>
865      </self>
866      <self>
867        <element name="maybe-missing"/>
868        <ignore-before dist="either">
869          <element name="maybe-missing"/>
870        </ignore-before>
871        <render-after>)</render-after>
872      </self>
873      <self>
874        <element name="maybe-missing"/>
875        <ignore-before dist="either">
876          <element name="missing"/>
877          <element name="maybe-missing"/>
878        </ignore-before>
879        <render-after>]</render-after>
880      </self>
881
882      <!-- ed.supplied, ed.removed, and scribe.implied are brackets with
883           behavior similar to missing -->
884      <self>
885        <element name="ed.supplied"/>
886        <ignore-after dist="either">
887          <element name="ed.supplied"/>
888        </ignore-after>
889        <render-before>&lt;</render-before>
890      </self>
891      <self>
892        <element name="ed.supplied"/>
893        <ignore-before dist="either">
894          <element name="ed.supplied"/>
895        </ignore-before>
896        <render-after>&gt;</render-after>
897      </self>
898      <self>
899        <element name="ed.removed"/>
900        <ignore-after dist="either">
901          <element name="ed.removed"/>
902        </ignore-after>
903        <render-before>&lt;&lt;</render-before>
904      </self>
905      <self>
906        <element name="ed.removed"/>
907        <ignore-before dist="either">
908          <element name="ed.removed"/>
909        </ignore-before>
910        <render-after>&gt;&gt;</render-after>
911      </self>
912      <self>
913        <element name="scribe.implied"/>
914        <ignore-after dist="either">
915          <element name="scribe.implied"/>
916        </ignore-after>
917        <render-before>&lt;(</render-before>
918      </self>
919      <self>
920        <element name="scribe.implied"/>
921        <ignore-before dist="either">
922          <element name="scribe.implied"/>
923        </ignore-before>
924        <render-after>)&gt;</render-after>
925      </self>
926
927
928      <self>
929        <element name="cg.gg"/>
930        <render-before>(</render-before>
931        <render-after>)</render-after>
932      </self>
933
934      <!-- a compound element is surrounded by vertical bars, unless it is
935           contained within a grapheme group -->
936      <self>
937        <element name="cg"/>
938        <ignore-in-parent>
939          <element name="cg.gg"/>
940        </ignore-in-parent>
941        <render-before>|</render-before>
942        <render-after>|</render-after>
943      </self>
944
945      <!-- symbols for compound grapheme relators -->
946      <self>
947        <element name="cg.rel.adjacent"/>
948        <render-after>.</render-after>
949      </self>
950      <self>
951        <element name="cg.rel.ligatured"/>
952        <render-after>+</render-after>
953      </self>
954      <self>
955        <element name="cg.rel.times"/>
956        <render-after>x</render-after>
957      </self>
958      <self>
959        <element name="cg.rel.over"/>
960        <render-after>@</render-after>
961      </self>
962      <self>
963        <element name="cg.rel.crossed"/>
964        <render-after>%</render-after>
965      </self>
966      <self>
967        <element name="cg.rel.or"/>
968        <render-after>/</render-after>
969      </self>
970
971      <self>
972        <element name="newline"/>
973        <render-before>;</render-before>
974      </self>
975
976      <self>
977        <element name="broken"/>
978        <render-before>[</render-before>
979        <render-after>]</render-after>
980      </self>
981      <self>
982        <element name="traces"/>
983        <render-before>(</render-before>
984        <render-after>)</render-after>
985      </self>
986
987      <!-- flag attributes on any of: g, pre.gloss, post.gloss, missing,
988           maybe-missing, signref, cg.g, cg.signref, cg -->
989      <self>
990        <element name="g"/>
991        <if>
992          <attr-value name="uncertain" value="y"/>
993          <suffix>?</suffix>
994        </if>
995        <if>
996          <attr-value name="collated" value="y"/>
997          <suffix>*</suffix>
998        </if>
999        <if>
1000          <attr-value name="breakage" value="damaged"/>
1001          <suffix>#</suffix>
1002        </if>
1003        <if>
1004          <attr-value name="sign" value="ed.emended"/>
1005          <suffix>!</suffix>
1006        </if>
1007        <if>
1008          <attr-value name="sign" value="unusual.form"/>
1009          <suffix>!!</suffix>
1010        </if>
1011        <if>
1012          <attr-value name="sign" value="really.is"/>
1013          <suffix>!!!</suffix>
1014        </if>
1015      </self>
1016      <self>
1017        <element name="pre.gloss"/>
1018        <if>
1019          <attr-value name="uncertain" value="y"/>
1020          <suffix>?</suffix>
1021        </if>
1022        <if>
1023          <attr-value name="collated" value="y"/>
1024          <suffix>*</suffix>
1025        </if>
1026        <if>
1027          <attr-value name="breakage" value="damaged"/>
1028          <suffix>#</suffix>
1029        </if>
1030        <if>
1031          <attr-value name="sign" value="ed.emended"/>
1032          <suffix>!</suffix>
1033        </if>
1034        <if>
1035          <attr-value name="sign" value="unusual.form"/>
1036          <suffix>!!</suffix>
1037        </if>
1038        <if>
1039          <attr-value name="sign" value="really.is"/>
1040          <suffix>!!!</suffix>
1041        </if>
1042      </self>
1043      <self>
1044        <element name="post.gloss"/>
1045        <if>
1046          <attr-value name="uncertain" value="y"/>
1047          <suffix>?</suffix>
1048        </if>
1049        <if>
1050          <attr-value name="collated" value="y"/>
1051          <suffix>*</suffix>
1052        </if>
1053        <if>
1054          <attr-value name="breakage" value="damaged"/>
1055          <suffix>#</suffix>
1056        </if>
1057        <if>
1058          <attr-value name="sign" value="ed.emended"/>
1059          <suffix>!</suffix>
1060        </if>
1061        <if>
1062          <attr-value name="sign" value="unusual.form"/>
1063          <suffix>!!</suffix>
1064        </if>
1065        <if>
1066          <attr-value name="sign" value="really.is"/>
1067          <suffix>!!!</suffix>
1068        </if>
1069      </self>
1070      <self>
1071        <element name="missing"/>
1072        <if>
1073          <attr-value name="uncertain" value="y"/>
1074          <suffix>?</suffix>
1075        </if>
1076        <if>
1077          <attr-value name="collated" value="y"/>
1078          <suffix>*</suffix>
1079        </if>
1080        <if>
1081          <attr-value name="breakage" value="damaged"/>
1082          <suffix>#</suffix>
1083        </if>
1084        <if>
1085          <attr-value name="sign" value="ed.emended"/>
1086          <suffix>!</suffix>
1087        </if>
1088        <if>
1089          <attr-value name="sign" value="unusual.form"/>
1090          <suffix>!!</suffix>
1091        </if>
1092        <if>
1093          <attr-value name="sign" value="really.is"/>
1094          <suffix>!!!</suffix>
1095        </if>
1096      </self>
1097      <self>
1098        <element name="maybe-missing"/>
1099        <if>
1100          <attr-value name="uncertain" value="y"/>
1101          <suffix>?</suffix>
1102        </if>
1103        <if>
1104          <attr-value name="collated" value="y"/>
1105          <suffix>*</suffix>
1106        </if>
1107        <if>
1108          <attr-value name="breakage" value="damaged"/>
1109          <suffix>#</suffix>
1110        </if>
1111        <if>
1112          <attr-value name="sign" value="ed.emended"/>
1113          <suffix>!</suffix>
1114        </if>
1115        <if>
1116          <attr-value name="sign" value="unusual.form"/>
1117          <suffix>!!</suffix>
1118        </if>
1119        <if>
1120          <attr-value name="sign" value="really.is"/>
1121          <suffix>!!!</suffix>
1122        </if>
1123      </self>
1124      <self>
1125        <element name="ed.supplied"/>
1126        <if>
1127          <attr-value name="uncertain" value="y"/>
1128          <suffix>?</suffix>
1129        </if>
1130        <if>
1131          <attr-value name="collated" value="y"/>
1132          <suffix>*</suffix>
1133        </if>
1134        <if>
1135          <attr-value name="breakage" value="damaged"/>
1136          <suffix>#</suffix>
1137        </if>
1138        <if>
1139          <attr-value name="sign" value="ed.emended"/>
1140          <suffix>!</suffix>
1141        </if>
1142        <if>
1143          <attr-value name="sign" value="unusual.form"/>
1144          <suffix>!!</suffix>
1145        </if>
1146        <if>
1147          <attr-value name="sign" value="really.is"/>
1148          <suffix>!!!</suffix>
1149        </if>
1150      </self>
1151      <self>
1152        <element name="ed.removed"/>
1153        <if>
1154          <attr-value name="uncertain" value="y"/>
1155          <suffix>?</suffix>
1156        </if>
1157        <if>
1158          <attr-value name="collated" value="y"/>
1159          <suffix>*</suffix>
1160        </if>
1161        <if>
1162          <attr-value name="breakage" value="damaged"/>
1163          <suffix>#</suffix>
1164        </if>
1165        <if>
1166          <attr-value name="sign" value="ed.emended"/>
1167          <suffix>!</suffix>
1168        </if>
1169        <if>
1170          <attr-value name="sign" value="unusual.form"/>
1171          <suffix>!!</suffix>
1172        </if>
1173        <if>
1174          <attr-value name="sign" value="really.is"/>
1175          <suffix>!!!</suffix>
1176        </if>
1177      </self>
1178      <self>
1179        <element name="scribe.implied"/>
1180        <if>
1181          <attr-value name="uncertain" value="y"/>
1182          <suffix>?</suffix>
1183        </if>
1184        <if>
1185          <attr-value name="collated" value="y"/>
1186          <suffix>*</suffix>
1187        </if>
1188        <if>
1189          <attr-value name="breakage" value="damaged"/>
1190          <suffix>#</suffix>
1191        </if>
1192        <if>
1193          <attr-value name="sign" value="ed.emended"/>
1194          <suffix>!</suffix>
1195        </if>
1196        <if>
1197          <attr-value name="sign" value="unusual.form"/>
1198          <suffix>!!</suffix>
1199        </if>
1200        <if>
1201          <attr-value name="sign" value="really.is"/>
1202          <suffix>!!!</suffix>
1203        </if>
1204      </self>
1205      <self>
1206        <element name="signref"/>
1207        <if>
1208          <attr-value name="uncertain" value="y"/>
1209          <suffix>?</suffix>
1210        </if>
1211        <if>
1212          <attr-value name="collated" value="y"/>
1213          <suffix>*</suffix>
1214        </if>
1215        <if>
1216          <attr-value name="breakage" value="damaged"/>
1217          <suffix>#</suffix>
1218        </if>
1219        <if>
1220          <attr-value name="sign" value="ed.emended"/>
1221          <suffix>!</suffix>
1222        </if>
1223        <if>
1224          <attr-value name="sign" value="unusual.form"/>
1225          <suffix>!!</suffix>
1226        </if>
1227        <if>
1228          <attr-value name="sign" value="really.is"/>
1229          <suffix>!!!</suffix>
1230        </if>
1231      </self>
1232      <self>
1233        <element name="cg.signref"/>
1234        <if>
1235          <attr-value name="uncertain" value="y"/>
1236          <suffix>?</suffix>
1237        </if>
1238        <if>
1239          <attr-value name="collated" value="y"/>
1240          <suffix>*</suffix>
1241        </if>
1242        <if>
1243          <attr-value name="breakage" value="damaged"/>
1244          <suffix>#</suffix>
1245        </if>
1246        <if>
1247          <attr-value name="sign" value="ed.emended"/>
1248          <suffix>!</suffix>
1249        </if>
1250        <if>
1251          <attr-value name="sign" value="unusual.form"/>
1252          <suffix>!!</suffix>
1253        </if>
1254        <if>
1255          <attr-value name="sign" value="really.is"/>
1256          <suffix>!!!</suffix>
1257        </if>
1258      </self>
1259      <self>
1260        <element name="cg"/>
1261        <if>
1262          <attr-value name="uncertain" value="y"/>
1263          <suffix>?</suffix>
1264        </if>
1265        <if>
1266          <attr-value name="collated" value="y"/>
1267          <suffix>*</suffix>
1268        </if>
1269        <if>
1270          <attr-value name="breakage" value="damaged"/>
1271          <suffix>#</suffix>
1272        </if>
1273        <if>
1274          <attr-value name="sign" value="ed.emended"/>
1275          <suffix>!</suffix>
1276        </if>
1277        <if>
1278          <attr-value name="sign" value="unusual.form"/>
1279          <suffix>!!</suffix>
1280        </if>
1281        <if>
1282          <attr-value name="sign" value="really.is"/>
1283          <suffix>!!!</suffix>
1284        </if>
1285      </self>
1286
1287      <!-- handle combinations of (maybe-)missing and gloss-->
1288      <self>
1289        <element name="missing"/>
1290        <if>
1291          <attr-value name="gloss" value="pre"/>
1292          <prefix>{</prefix>
1293          <suffix>}</suffix>
1294        </if>
1295        <if>
1296          <attr-value name="gloss" value="post"/>
1297          <prefix>{</prefix>
1298          <suffix>}</suffix>
1299        </if>
1300      </self>
1301      <self>
1302        <element name="maybe-missing"/>
1303        <if>
1304          <attr-value name="gloss" value="pre"/>
1305          <prefix>{</prefix>
1306          <suffix>}</suffix>
1307        </if>
1308        <if>
1309          <attr-value name="gloss" value="post"/>
1310          <prefix>{</prefix>
1311          <suffix>}</suffix>
1312        </if>
1313      </self>
1314
1315      <!-- the value portion of signrefs is uppercased -->
1316      <self>
1317        <element name="signref"/>
1318        <apply-filter rule="s/^([^~-]+)/\U$1/"/>
1319      </self>
1320      <self>
1321        <element name="cg.signref"/>
1322        <apply-filter rule="s/^([^~-]+)/\U$1/"/>
1323      </self>
1324
1325      <self>
1326        <element name="w"/>
1327        <render-before> </render-before>
1328      </self>
1329      <self>
1330        <element name="l"/>
1331        <render-before><nl/><attribute name="n"/>. </render-before>
1332      </self>
1333
1334      <self>
1335        <element name="column"/>
1336        <render-before><nl/>@column <attribute name="n"/></render-before>
1337      </self>
1338      <self>
1339        <element name="surface"/>
1340        <render-before><nl/>@<attribute name="type"/></render-before>
1341      </self>
1342      <self>
1343        <element name="sealing"/>
1344        <render-before><nl/>@seal <attribute name="n"/></render-before>
1345      </self>
1346      <self>
1347        <element name="object"/>
1348        <render-before><nl/></render-before>
1349        <render-after><nl/></render-after>
1350      </self>
1351      <self>
1352        <element name="envelope"/>
1353        <render-before><nl/>@envelope</render-before>
1354      </self>
1355      <self>
1356        <element name="cmt"/>
1357        <render-before><nl/>#</render-before>
1358      </self>
1359      <self>
1360        <element name="nonl"/>
1361        <render-before><nl/>$</render-before>
1362      </self>
1363      <self>
1364        <element name="noncolumn"/>
1365        <render-before><nl/>$</render-before>
1366      </self>
1367      <self>
1368        <element name="text"/>
1369        <render-before><nl/><nl/>&amp;<attribute name="n"/></render-before>
1370      </self>
1371    </content-view>
1372  </doctype>
1373
1374  <!-- "rome" is the Arboreal outline format -->
1375  <doctype name="rome">
1376    <containers>
1377    </containers>
1378
1379    <subcontainers>
1380    </subcontainers>
1381
1382    <word-separators>
1383    </word-separators>
1384
1385    <grapheme-separators>
1386    </grapheme-separators>
1387
1388    <langspec>
1389      <attribute name="lang"/>
1390    </langspec>
1391
1392    <metadata name="">
1393      <author></author>
1394      <title></title>
1395      <locator></locator>
1396      <language></language>
1397    </metadata>
1398
1399    <page-image>
1400    </page-image>
1401
1402    <defs>
1403    </defs>
1404
1405    <tree-view>
1406    </tree-view>
1407
1408    <content-view>
1409      <self>
1410        <element name="h1"/>
1411        <render-after><nl/></render-after>
1412        <style>
1413          <bold/>
1414          <foreground value="#0000BB"/>
1415        </style>
1416      </self>
1417      <self>
1418        <element name="h2"/>
1419        <render-after><nl/></render-after>
1420        <style>
1421          <left-indent value="20"/>
1422        </style>
1423      </self>
1424      <self>
1425        <element name="h3"/>
1426        <render-after><nl/></render-after>
1427        <style>
1428          <left-indent value="40"/>
1429        </style>
1430      </self>
1431      <self>
1432        <element name="h4"/>
1433        <render-after><nl/></render-after>
1434        <style>
1435          <left-indent value="60"/>
1436        </style>
1437      </self>
1438      <self>
1439        <element name="h5"/>
1440        <render-after><nl/></render-after>
1441        <style>
1442          <left-indent value="80"/>
1443        </style>
1444      </self>
1445      <self>
1446        <element name="h6"/>
1447        <render-after><nl/></render-after>
1448        <style>
1449          <left-indent value="100"/>
1450        </style>
1451      </self>
1452      <self>
1453        <element name="h7"/>
1454        <render-after><nl/></render-after>
1455        <style>
1456          <left-indent value="120"/>
1457        </style>
1458      </self>
1459      <self>
1460        <element name="h8"/>
1461        <render-after><nl/></render-after>
1462        <style>
1463          <left-indent value="140"/>
1464        </style>
1465      </self>
1466      <self>
1467        <element name="h9"/>
1468        <render-after><nl/></render-after>
1469        <style>
1470          <left-indent value="160"/>
1471        </style>
1472      </self>
1473      <self>
1474        <element name="h10"/>
1475        <render-after><nl/></render-after>
1476        <style>
1477          <left-indent value="180"/>
1478        </style>
1479      </self>
1480      <self>
1481        <element name="h11"/>
1482        <render-after><nl/></render-after>
1483        <style>
1484          <left-indent value="200"/>
1485        </style>
1486      </self>
1487      <self>
1488        <element name="h12"/>
1489        <render-after><nl/></render-after>
1490        <style>
1491          <left-indent value="220"/>
1492        </style>
1493      </self>
1494    </content-view>
1495  </doctype>
1496
1497  <!-- tagged word list format (wtag) -->
1498  <doctype name="wtag">
1499    <containers>
1500      <element name="w"/>
1501    </containers>
1502
1503    <subcontainers>
1504    </subcontainers>
1505
1506    <word-separators>
1507    </word-separators>
1508
1509    <grapheme-separators>
1510    </grapheme-separators>
1511
1512    <langspec>
1513      <attribute name="lang"/>
1514    </langspec>
1515
1516    <metadata name="">
1517      <author></author>
1518      <title></title>
1519      <locator>/wtag/@locator</locator>
1520      <language></language>
1521    </metadata>
1522
1523    <page-image>
1524    </page-image>
1525
1526    <defs>
1527    </defs>
1528
1529    <tree-view>
1530    </tree-view>
1531
1532    <content-view>
1533      <self>
1534        <element name="w"/>
1535        <render-after><nl/></render-after>
1536      </self>
1537    </content-view>
1538  </doctype>
1539
1540</docspecs>