Docspecs: docspecs-cdli.xml

File docspecs-cdli.xml, 27.8 KB (added by kthoden, 15 years ago)
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!--
4  *** NOTICE ***
5
6  This file contains only the CDLI docspecs.
7
8  It is not compatible with versions of Arboreal prior to 3.8!
9
10  Last revision: Sun Jun  8 03:28:35 EDT 2003
11-->
12
13<!DOCTYPE docspecs [
14
15<!ELEMENT docspecs (doctype*)>
16
17<!ATTLIST docspecs
18  xmlns     CDATA            #FIXED "http://archimedes.fas.harvard.edu/arboreal/ddl/1.2">
19
20<!ELEMENT doctype                    (containers,
21                                      subcontainers,
22                                      word-separators,
23                                      grapheme-separators,
24                                      langspec,
25                                      metadata,
26                                      page-image,
27                                      defs,
28                                      tree-view,
29                                      content-view)>
30
31<!ATTLIST doctype
32  name      CDATA            #REQUIRED
33  ns        CDATA            #IMPLIED>
34
35<!ELEMENT containers                 (element*)>
36
37<!ELEMENT subcontainers              (element*)>
38
39<!ELEMENT word-separators            (element*)>
40
41<!ELEMENT grapheme-separators        (element*)>
42
43<!ATTLIST grapheme-separators
44  symbol    CDATA            #IMPLIED>
45
46<!ELEMENT langspec                  (attribute)>
47
48<!ELEMENT metadata                   (author, title, locator, language)>
49
50<!ATTLIST metadata
51  name      CDATA            #REQUIRED>
52
53<!ELEMENT page-image                 (element?)>
54
55<!ELEMENT defs                       (pseudoelement*)>
56
57<!ELEMENT content-view               (self | parent)*>
58
59<!ELEMENT tree-view                  (default-node?, (self | parent)*)>
60
61<!ELEMENT pseudoelement              (element, attr-value)>
62
63<!ATTLIST pseudoelement
64  name      NMTOKEN          #REQUIRED>
65
66<!ELEMENT default-node               (#PCDATA | node-name | attribute)*>
67
68<!ELEMENT node-name                  EMPTY>
69
70<!ELEMENT self                       (element,
71                                      if*,       
72                                      ignore-before?,
73                                      ignore-after?,
74                                      ignore-in-parent?,
75                                      render-before?,
76                                      render-after?,
77                                      apply-filter?,
78                                      style?,
79                                      style-extra?)>
80
81<!ELEMENT parent                     (element,
82                                      ignore-before?,
83                                      ignore-after?,
84                                      ignore-in-parent?,
85                                      render-before?,
86                                      render-after?,
87                                      apply-filter?,
88                                      style?,
89                                      style-extra?)>
90
91<!ELEMENT element                    EMPTY>
92
93<!ATTLIST element
94  name      CDATA            #REQUIRED>
95
96<!ELEMENT attribute                  EMPTY>
97
98<!ATTLIST attribute
99  name      CDATA            #REQUIRED>
100
101<!ELEMENT attr-value EMPTY>
102
103<!ATTLIST attr-value
104  name      NMTOKEN          #REQUIRED
105  value     CDATA            #REQUIRED>
106
107<!ELEMENT author                     (#PCDATA)>
108
109<!ELEMENT title                      (#PCDATA)>
110
111<!ELEMENT locator                    (#PCDATA)>
112
113<!ELEMENT language                   (#PCDATA)>
114
115<!ELEMENT nl                         EMPTY>
116
117<!ELEMENT if                         (attr-value, prefix?, suffix?)>
118
119<!ELEMENT prefix                     (#PCDATA | nl)*>
120
121<!ELEMENT suffix                     (#PCDATA | nl)*>
122
123<!ELEMENT render-before              (#PCDATA | nl | attribute)*>
124
125<!ELEMENT render-after               (#PCDATA | nl | attribute)*>
126
127<!ELEMENT apply-filter               EMPTY>
128
129<!ATTLIST apply-filter
130  rule      CDATA            #REQUIRED>
131
132<!ELEMENT ignore-before              (element*)>
133
134<!ATTLIST ignore-before
135  dist      (1|2|either)     "1">
136
137<!ELEMENT ignore-after (element*)>
138
139<!ATTLIST ignore-after
140  dist      (1|2|either)     "1">
141
142<!ELEMENT ignore-in-parent           (element*)>
143
144<!ELEMENT style                      (alignment |
145                                      bold |
146                                      foreground |
147                                      italic |
148                                      left-indent |
149                                      right-indent |
150                                      subscript |
151                                      superscript |
152                                      underline)*>
153
154<!ELEMENT style-extra                (alignment |
155                                      bold |
156                                      foreground |
157                                      italic |
158                                      left-indent |
159                                      right-indent |
160                                      subscript |
161                                      superscript |
162                                      underline)*>
163
164<!ELEMENT alignment                  EMPTY>
165
166<!ATTLIST alignment
167  value     (left | right | center | justified)    "left">
168
169<!ELEMENT bold                       EMPTY>
170
171<!ELEMENT foreground                 EMPTY>
172
173<!ATTLIST foreground
174  value     CDATA            #REQUIRED>
175
176<!ELEMENT italic                     EMPTY>
177
178<!ELEMENT left-indent                EMPTY>
179
180<!ATTLIST left-indent
181  value     CDATA            #REQUIRED>
182
183<!ELEMENT right-indent               EMPTY>
184
185<!ATTLIST right-indent
186  value     CDATA            #REQUIRED>
187
188<!ELEMENT subscript                  EMPTY>
189
190<!ELEMENT superscript                EMPTY>
191
192<!ELEMENT underline                  EMPTY>
193]>
194
195<docspecs>
196
197  <!-- the CDLI XML format (under development)
198       CDLI week, L.A. (9 December 2002)
199
200       These rules yield a display that approximates ATF. They are largely
201       complete, with the exception of support for igg and complex glosses.
202       A few subtle problems remain, e.g. with bracket consolidation.
203    --> 
204  <doctype name="" ns="http://cdli.ucla.edu/text/1">
205    <containers>
206      <element name="l"/>
207    </containers>
208
209    <subcontainers>
210    </subcontainers>
211
212    <word-separators>
213      <element name="w"/>
214    </word-separators>
215
216    <grapheme-separators symbol="-">
217      <element name="g"/>
218      <element name="cg.g"/>
219    </grapheme-separators>
220
221    <langspec>
222      <attribute name="xml:lang"/>
223    </langspec>
224
225    <metadata name="">
226      <author></author>
227      <title></title>
228      <locator></locator>
229      <language>/descendant::*[name() = "text"][1]/@xml:lang</language>
230    </metadata>
231
232    <page-image>
233      <element name="object"/>
234    </page-image>
235
236    <defs>
237      <pseudoelement name="missing">
238        <element name="g"/>
239        <attr-value name="breakage" value="missing"/>
240      </pseudoelement>
241      <pseudoelement name="maybe-missing">
242        <element name="g"/>
243        <attr-value name="breakage" value="maybe-missing"/>
244      </pseudoelement>
245      <pseudoelement name="ed.supplied">
246        <element name="g"/>
247        <attr-value name="sign" value="ed.supplied"/>
248      </pseudoelement>
249      <pseudoelement name="ed.removed">
250        <element name="g"/>
251        <attr-value name="sign" value="ed.removed"/>
252      </pseudoelement>
253      <pseudoelement name="scribe.implied">
254        <element name="g"/>
255        <attr-value name="sign" value="scribe.implied"/>
256      </pseudoelement>
257      <pseudoelement name="pre.gloss">
258        <element name="g"/>
259        <attr-value name="gloss" value="pre"/>
260      </pseudoelement>
261      <pseudoelement name="post.gloss">
262        <element name="g"/>
263        <attr-value name="gloss" value="post"/>
264      </pseudoelement>
265      <pseudoelement name="cg.rel.adjacent">
266        <element name="cg.rel"/>
267        <attr-value name="c" value="adjacent"/>
268      </pseudoelement>
269      <pseudoelement name="cg.rel.ligatured">
270        <element name="cg.rel"/>
271        <attr-value name="c" value="ligatured"/>
272      </pseudoelement>
273      <pseudoelement name="cg.rel.times">
274        <element name="cg.rel"/>
275        <attr-value name="c" value="times"/>
276      </pseudoelement>
277      <pseudoelement name="cg.rel.over">
278        <element name="cg.rel"/>
279        <attr-value name="c" value="over"/>
280      </pseudoelement>
281      <pseudoelement name="cg.rel.crossed">
282        <element name="cg.rel"/>
283        <attr-value name="c" value="crossed"/>
284      </pseudoelement>
285      <pseudoelement name="cg.rel.or">
286        <element name="cg.rel"/>
287        <attr-value name="c" value="or"/>
288      </pseudoelement>
289      <pseudoelement name="signref">
290        <element name="g"/>
291        <attr-value name="nametype" value="signref"/>
292      </pseudoelement>
293      <pseudoelement name="cg.signref">
294        <element name="cg.g"/>
295        <attr-value name="nametype" value="signref"/>
296      </pseudoelement>
297      <pseudoelement name="gg.group">
298        <element name="gg"/>
299        <attr-value name="type" value="group"/>
300      </pseudoelement>
301      <pseudoelement name="gg.alternation">
302        <element name="gg"/>
303        <attr-value name="type" value="alternation"/>
304      </pseudoelement>
305      <pseudoelement name="gg.ligature">
306        <element name="gg"/>
307        <attr-value name="type" value="ligature"/>
308      </pseudoelement>
309      <pseudoelement name="gg.num-plus">
310        <element name="gg"/>
311        <attr-value name="type" value="num-plus"/>
312      </pseudoelement>
313      <pseudoelement name="gg.num-dotted">
314        <element name="gg"/>
315        <attr-value name="type" value="num-dotted"/>
316      </pseudoelement>
317      <pseudoelement name="newline">
318        <element name="nong"/>
319        <attr-value name="type" value="newline"/>
320      </pseudoelement>
321      <pseudoelement name="broken">
322        <element name="nong"/>
323        <attr-value name="type" value="broken"/>
324      </pseudoelement>
325      <pseudoelement name="traces">
326        <element name="nong"/>
327        <attr-value name="type" value="traces"/>
328      </pseudoelement>
329      <pseudoelement name="envelope">
330        <element name="object"/>
331        <attr-value name="type" value="envelope"/>
332      </pseudoelement>
333    </defs>
334
335    <tree-view>
336    </tree-view>
337
338    <content-view>
339      <!-- Hyphen is inserted before g, signref, pre.gloss, post.gloss,
340           missing, maybe-missing, ed.supplied, ed.removed, scribe.implied,
341           cg, cg.g, and cg.signref except at the beginning of a word, or
342           after a pre.gloss, or within any type of gg.
343
344           Further, the hyphen for cg.g is "delegated" to cg: i.e., it is
345           suppressed after cg, and a hyphen is inserted before cg with
346           the distribution indicated above. The hyphen is also suppressed
347           after any cg.rel. -->
348      <self>
349        <element name="g"/>
350        <ignore-after>
351          <element name="w"/>
352          <element name="pre.gloss"/>
353        </ignore-after>
354        <ignore-in-parent>
355          <element name="gg.group"/>
356          <element name="gg.alternation"/>
357          <element name="gg.ligature"/>
358          <element name="gg.num-plus"/>
359          <element name="gg.num-dotted"/>
360        </ignore-in-parent>
361        <render-before>-</render-before>
362      </self>
363      <self>
364        <element name="signref"/>
365        <ignore-after>
366          <element name="w"/>
367          <element name="pre.gloss"/>
368        </ignore-after>
369        <ignore-in-parent>
370          <element name="gg.group"/>
371          <element name="gg.alternation"/>
372          <element name="gg.ligature"/>
373          <element name="gg.num-plus"/>
374          <element name="gg.num-dotted"/>
375        </ignore-in-parent>
376        <render-before>-</render-before>
377      </self>
378      <self>
379        <element name="pre.gloss"/>
380        <ignore-after>
381          <element name="w"/>
382          <element name="newline"/>
383        </ignore-after>
384        <ignore-in-parent>
385          <element name="gg.group"/>
386          <element name="gg.alternation"/>
387          <element name="gg.ligature"/>
388          <element name="gg.num-plus"/>
389          <element name="gg.num-dotted"/>
390        </ignore-in-parent>
391        <render-before>-</render-before>
392      </self>
393      <self>
394        <element name="missing"/>
395        <ignore-after>
396          <element name="w"/>
397          <element name="pre.gloss"/>
398        </ignore-after>
399        <ignore-in-parent>
400          <element name="gg.group"/>
401          <element name="gg.alternation"/>
402          <element name="gg.ligature"/>
403          <element name="gg.num-plus"/>
404          <element name="gg.num-dotted"/>
405        </ignore-in-parent>
406        <render-before>-</render-before>
407      </self>
408      <self>
409        <element name="maybe-missing"/>
410        <ignore-after>
411          <element name="w"/>
412          <element name="pre.gloss"/>
413        </ignore-after>
414        <ignore-in-parent>
415          <element name="gg.group"/>
416          <element name="gg.alternation"/>
417          <element name="gg.ligature"/>
418          <element name="gg.num-plus"/>
419          <element name="gg.num-dotted"/>
420        </ignore-in-parent>
421        <render-before>-</render-before>
422      </self>
423      <self>
424        <element name="ed.supplied"/>
425        <ignore-after>
426          <element name="w"/>
427          <element name="pre.gloss"/>
428        </ignore-after>
429        <ignore-in-parent>
430          <element name="gg.group"/>
431          <element name="gg.alternation"/>
432          <element name="gg.ligature"/>
433          <element name="gg.num-plus"/>
434          <element name="gg.num-dotted"/>
435        </ignore-in-parent>
436        <render-before>-</render-before>
437      </self>
438      <self>
439        <element name="ed.removed"/>
440        <ignore-after>
441          <element name="w"/>
442          <element name="pre.gloss"/>
443        </ignore-after>
444        <ignore-in-parent>
445          <element name="gg.group"/>
446          <element name="gg.alternation"/>
447          <element name="gg.ligature"/>
448          <element name="gg.num-plus"/>
449          <element name="gg.num-dotted"/>
450        </ignore-in-parent>
451        <render-before>-</render-before>
452      </self>
453      <self>
454        <element name="scribe.implied"/>
455        <ignore-after>
456          <element name="w"/>
457          <element name="pre.gloss"/>
458        </ignore-after>
459        <ignore-in-parent>
460          <element name="gg.group"/>
461          <element name="gg.alternation"/>
462          <element name="gg.ligature"/>
463          <element name="gg.num-plus"/>
464          <element name="gg.num-dotted"/>
465        </ignore-in-parent>
466        <render-before>-</render-before>
467      </self>
468      <self>
469        <element name="cg"/>
470        <ignore-after>
471          <element name="w"/>
472          <element name="pre.gloss"/>
473        </ignore-after>
474        <ignore-in-parent>
475          <element name="gg.group"/>
476          <element name="gg.alternation"/>
477          <element name="gg.ligature"/>
478          <element name="gg.num-plus"/>
479          <element name="gg.num-dotted"/>
480        </ignore-in-parent>
481        <render-before>-</render-before>
482      </self>
483      <self>
484        <element name="cg.g"/>
485        <ignore-after>
486          <element name="cg"/>
487          <element name="cg.rel.adjacent"/>
488          <element name="cg.rel.ligatured"/>
489          <element name="cg.rel.times"/>
490          <element name="cg.rel.over"/>
491          <element name="cg.rel.crossed"/>
492          <element name="cg.rel.or"/>
493        </ignore-after>
494        <render-before>-</render-before>
495      </self>
496      <self>
497        <element name="cg.signref"/>
498        <ignore-after>
499          <element name="cg"/>
500          <element name="cg.rel.adjacent"/>
501          <element name="cg.rel.ligatured"/>
502          <element name="cg.rel.times"/>
503          <element name="cg.rel.over"/>
504          <element name="cg.rel.crossed"/>
505          <element name="cg.rel.or"/>
506        </ignore-after>
507        <render-before>-</render-before>
508      </self>
509
510      <!-- render joiners between the elements of a grapheme group -->
511      <parent>
512        <element name="gg.group"/>
513        <ignore-after>
514          <element name="gg.group"/>
515        </ignore-after>
516        <render-before>.</render-before>
517      </parent>
518      <parent>
519        <element name="gg.alternation"/>
520        <ignore-after>
521          <element name="gg.alternation"/>
522        </ignore-after>
523        <render-before>/</render-before>
524      </parent>
525      <parent>
526        <element name="gg.ligature"/>
527        <ignore-after>
528          <element name="gg.ligature"/>
529        </ignore-after>
530        <render-before>+</render-before>
531      </parent>
532      <parent>
533        <element name="gg.num-plus"/>
534        <ignore-after>
535          <element name="gg.num-plus"/>
536        </ignore-after>
537        <render-before>+</render-before>
538      </parent>
539      <parent>
540        <element name="gg.num-dotted"/>
541        <ignore-after>
542          <element name="gg.num-dotted"/>
543        </ignore-after>
544        <render-before>.</render-before>
545      </parent>
546
547      <!-- glosses are surrounded by curly braces -->
548      <self>
549        <element name="pre.gloss"/>
550        <render-before>{</render-before>
551        <render-after>}</render-after>
552      </self>
553      <self>
554        <element name="post.gloss"/>
555        <render-before>{</render-before>
556        <render-after>}</render-after>
557      </self>
558
559      <!-- any sequence of missing elements is surrounded by square brackets -->
560      <self>
561        <element name="missing"/>
562        <ignore-after dist="either">
563          <element name="missing"/>
564          <element name="maybe-missing"/>
565        </ignore-after>
566        <render-before>[</render-before>
567      </self>
568      <self>
569        <element name="missing"/>
570        <ignore-before dist="either">
571          <element name="missing"/>
572          <element name="maybe-missing"/>
573        </ignore-before>
574        <render-after>]</render-after>
575      </self>
576
577      <!-- Any sequence of maybe-missing elements is surrounded by
578           parentheses. It's more complicated, though, since maybe-missing
579           implies missing. Thus if we're not surrounded explicitly by missing,
580           we have to generate square brackets at the outermost level.
581           The ordering of rules is significant. -->
582      <self>
583        <element name="maybe-missing"/>
584        <ignore-after dist="either">
585          <element name="missing"/>
586          <element name="maybe-missing"/>
587        </ignore-after>
588        <render-before>[</render-before>
589      </self>
590      <self>
591        <element name="maybe-missing"/>
592        <ignore-after dist="either">
593          <element name="maybe-missing"/>
594        </ignore-after>
595        <render-before>(</render-before>
596      </self>
597      <self>
598        <element name="maybe-missing"/>
599        <ignore-before dist="either">
600          <element name="maybe-missing"/>
601        </ignore-before>
602        <render-after>)</render-after>
603      </self>
604      <self>
605        <element name="maybe-missing"/>
606        <ignore-before dist="either">
607          <element name="missing"/>
608          <element name="maybe-missing"/>
609        </ignore-before>
610        <render-after>]</render-after>
611      </self>
612
613      <!-- ed.supplied, ed.removed, and scribe.implied are brackets with
614           behavior similar to missing -->
615      <self>
616        <element name="ed.supplied"/>
617        <ignore-after dist="either">
618          <element name="ed.supplied"/>
619        </ignore-after>
620        <render-before>&lt;</render-before>
621      </self>
622      <self>
623        <element name="ed.supplied"/>
624        <ignore-before dist="either">
625          <element name="ed.supplied"/>
626        </ignore-before>
627        <render-after>&gt;</render-after>
628      </self>
629      <self>
630        <element name="ed.removed"/>
631        <ignore-after dist="either">
632          <element name="ed.removed"/>
633        </ignore-after>
634        <render-before>&lt;&lt;</render-before>
635      </self>
636      <self>
637        <element name="ed.removed"/>
638        <ignore-before dist="either">
639          <element name="ed.removed"/>
640        </ignore-before>
641        <render-after>&gt;&gt;</render-after>
642      </self>
643      <self>
644        <element name="scribe.implied"/>
645        <ignore-after dist="either">
646          <element name="scribe.implied"/>
647        </ignore-after>
648        <render-before>&lt;(</render-before>
649      </self>
650      <self>
651        <element name="scribe.implied"/>
652        <ignore-before dist="either">
653          <element name="scribe.implied"/>
654        </ignore-before>
655        <render-after>)&gt;</render-after>
656      </self>
657
658
659      <self>
660        <element name="cg.gg"/>
661        <render-before>(</render-before>
662        <render-after>)</render-after>
663      </self>
664
665      <!-- a compound element is surrounded by vertical bars, unless it is
666           contained within a grapheme group -->
667      <self>
668        <element name="cg"/>
669        <ignore-in-parent>
670          <element name="cg.gg"/>
671        </ignore-in-parent>
672        <render-before>|</render-before>
673        <render-after>|</render-after>
674      </self>
675
676      <!-- symbols for compound grapheme relators -->
677      <self>
678        <element name="cg.rel.adjacent"/>
679        <render-after>.</render-after>
680      </self>
681      <self>
682        <element name="cg.rel.ligatured"/>
683        <render-after>+</render-after>
684      </self>
685      <self>
686        <element name="cg.rel.times"/>
687        <render-after>x</render-after>
688      </self>
689      <self>
690        <element name="cg.rel.over"/>
691        <render-after>@</render-after>
692      </self>
693      <self>
694        <element name="cg.rel.crossed"/>
695        <render-after>%</render-after>
696      </self>
697      <self>
698        <element name="cg.rel.or"/>
699        <render-after>/</render-after>
700      </self>
701
702      <self>
703        <element name="newline"/>
704        <render-before>;</render-before>
705      </self>
706
707      <self>
708        <element name="broken"/>
709        <render-before>[</render-before>
710        <render-after>]</render-after>
711      </self>
712      <self>
713        <element name="traces"/>
714        <render-before>(</render-before>
715        <render-after>)</render-after>
716      </self>
717
718      <!-- flag attributes on any of: g, pre.gloss, post.gloss, missing,
719           maybe-missing, signref, cg.g, cg.signref, cg -->
720      <self>
721        <element name="g"/>
722        <if>
723          <attr-value name="uncertain" value="y"/>
724          <suffix>?</suffix>
725        </if>
726        <if>
727          <attr-value name="collated" value="y"/>
728          <suffix>*</suffix>
729        </if>
730        <if>
731          <attr-value name="breakage" value="damaged"/>
732          <suffix>#</suffix>
733        </if>
734        <if>
735          <attr-value name="sign" value="ed.emended"/>
736          <suffix>!</suffix>
737        </if>
738        <if>
739          <attr-value name="sign" value="unusual.form"/>
740          <suffix>!!</suffix>
741        </if>
742        <if>
743          <attr-value name="sign" value="really.is"/>
744          <suffix>!!!</suffix>
745        </if>
746      </self>
747      <self>
748        <element name="pre.gloss"/>
749        <if>
750          <attr-value name="uncertain" value="y"/>
751          <suffix>?</suffix>
752        </if>
753        <if>
754          <attr-value name="collated" value="y"/>
755          <suffix>*</suffix>
756        </if>
757        <if>
758          <attr-value name="breakage" value="damaged"/>
759          <suffix>#</suffix>
760        </if>
761        <if>
762          <attr-value name="sign" value="ed.emended"/>
763          <suffix>!</suffix>
764        </if>
765        <if>
766          <attr-value name="sign" value="unusual.form"/>
767          <suffix>!!</suffix>
768        </if>
769        <if>
770          <attr-value name="sign" value="really.is"/>
771          <suffix>!!!</suffix>
772        </if>
773      </self>
774      <self>
775        <element name="post.gloss"/>
776        <if>
777          <attr-value name="uncertain" value="y"/>
778          <suffix>?</suffix>
779        </if>
780        <if>
781          <attr-value name="collated" value="y"/>
782          <suffix>*</suffix>
783        </if>
784        <if>
785          <attr-value name="breakage" value="damaged"/>
786          <suffix>#</suffix>
787        </if>
788        <if>
789          <attr-value name="sign" value="ed.emended"/>
790          <suffix>!</suffix>
791        </if>
792        <if>
793          <attr-value name="sign" value="unusual.form"/>
794          <suffix>!!</suffix>
795        </if>
796        <if>
797          <attr-value name="sign" value="really.is"/>
798          <suffix>!!!</suffix>
799        </if>
800      </self>
801      <self>
802        <element name="missing"/>
803        <if>
804          <attr-value name="uncertain" value="y"/>
805          <suffix>?</suffix>
806        </if>
807        <if>
808          <attr-value name="collated" value="y"/>
809          <suffix>*</suffix>
810        </if>
811        <if>
812          <attr-value name="breakage" value="damaged"/>
813          <suffix>#</suffix>
814        </if>
815        <if>
816          <attr-value name="sign" value="ed.emended"/>
817          <suffix>!</suffix>
818        </if>
819        <if>
820          <attr-value name="sign" value="unusual.form"/>
821          <suffix>!!</suffix>
822        </if>
823        <if>
824          <attr-value name="sign" value="really.is"/>
825          <suffix>!!!</suffix>
826        </if>
827      </self>
828      <self>
829        <element name="maybe-missing"/>
830        <if>
831          <attr-value name="uncertain" value="y"/>
832          <suffix>?</suffix>
833        </if>
834        <if>
835          <attr-value name="collated" value="y"/>
836          <suffix>*</suffix>
837        </if>
838        <if>
839          <attr-value name="breakage" value="damaged"/>
840          <suffix>#</suffix>
841        </if>
842        <if>
843          <attr-value name="sign" value="ed.emended"/>
844          <suffix>!</suffix>
845        </if>
846        <if>
847          <attr-value name="sign" value="unusual.form"/>
848          <suffix>!!</suffix>
849        </if>
850        <if>
851          <attr-value name="sign" value="really.is"/>
852          <suffix>!!!</suffix>
853        </if>
854      </self>
855      <self>
856        <element name="ed.supplied"/>
857        <if>
858          <attr-value name="uncertain" value="y"/>
859          <suffix>?</suffix>
860        </if>
861        <if>
862          <attr-value name="collated" value="y"/>
863          <suffix>*</suffix>
864        </if>
865        <if>
866          <attr-value name="breakage" value="damaged"/>
867          <suffix>#</suffix>
868        </if>
869        <if>
870          <attr-value name="sign" value="ed.emended"/>
871          <suffix>!</suffix>
872        </if>
873        <if>
874          <attr-value name="sign" value="unusual.form"/>
875          <suffix>!!</suffix>
876        </if>
877        <if>
878          <attr-value name="sign" value="really.is"/>
879          <suffix>!!!</suffix>
880        </if>
881      </self>
882      <self>
883        <element name="ed.removed"/>
884        <if>
885          <attr-value name="uncertain" value="y"/>
886          <suffix>?</suffix>
887        </if>
888        <if>
889          <attr-value name="collated" value="y"/>
890          <suffix>*</suffix>
891        </if>
892        <if>
893          <attr-value name="breakage" value="damaged"/>
894          <suffix>#</suffix>
895        </if>
896        <if>
897          <attr-value name="sign" value="ed.emended"/>
898          <suffix>!</suffix>
899        </if>
900        <if>
901          <attr-value name="sign" value="unusual.form"/>
902          <suffix>!!</suffix>
903        </if>
904        <if>
905          <attr-value name="sign" value="really.is"/>
906          <suffix>!!!</suffix>
907        </if>
908      </self>
909      <self>
910        <element name="scribe.implied"/>
911        <if>
912          <attr-value name="uncertain" value="y"/>
913          <suffix>?</suffix>
914        </if>
915        <if>
916          <attr-value name="collated" value="y"/>
917          <suffix>*</suffix>
918        </if>
919        <if>
920          <attr-value name="breakage" value="damaged"/>
921          <suffix>#</suffix>
922        </if>
923        <if>
924          <attr-value name="sign" value="ed.emended"/>
925          <suffix>!</suffix>
926        </if>
927        <if>
928          <attr-value name="sign" value="unusual.form"/>
929          <suffix>!!</suffix>
930        </if>
931        <if>
932          <attr-value name="sign" value="really.is"/>
933          <suffix>!!!</suffix>
934        </if>
935      </self>
936      <self>
937        <element name="signref"/>
938        <if>
939          <attr-value name="uncertain" value="y"/>
940          <suffix>?</suffix>
941        </if>
942        <if>
943          <attr-value name="collated" value="y"/>
944          <suffix>*</suffix>
945        </if>
946        <if>
947          <attr-value name="breakage" value="damaged"/>
948          <suffix>#</suffix>
949        </if>
950        <if>
951          <attr-value name="sign" value="ed.emended"/>
952          <suffix>!</suffix>
953        </if>
954        <if>
955          <attr-value name="sign" value="unusual.form"/>
956          <suffix>!!</suffix>
957        </if>
958        <if>
959          <attr-value name="sign" value="really.is"/>
960          <suffix>!!!</suffix>
961        </if>
962      </self>
963      <self>
964        <element name="cg.signref"/>
965        <if>
966          <attr-value name="uncertain" value="y"/>
967          <suffix>?</suffix>
968        </if>
969        <if>
970          <attr-value name="collated" value="y"/>
971          <suffix>*</suffix>
972        </if>
973        <if>
974          <attr-value name="breakage" value="damaged"/>
975          <suffix>#</suffix>
976        </if>
977        <if>
978          <attr-value name="sign" value="ed.emended"/>
979          <suffix>!</suffix>
980        </if>
981        <if>
982          <attr-value name="sign" value="unusual.form"/>
983          <suffix>!!</suffix>
984        </if>
985        <if>
986          <attr-value name="sign" value="really.is"/>
987          <suffix>!!!</suffix>
988        </if>
989      </self>
990      <self>
991        <element name="cg"/>
992        <if>
993          <attr-value name="uncertain" value="y"/>
994          <suffix>?</suffix>
995        </if>
996        <if>
997          <attr-value name="collated" value="y"/>
998          <suffix>*</suffix>
999        </if>
1000        <if>
1001          <attr-value name="breakage" value="damaged"/>
1002          <suffix>#</suffix>
1003        </if>
1004        <if>
1005          <attr-value name="sign" value="ed.emended"/>
1006          <suffix>!</suffix>
1007        </if>
1008        <if>
1009          <attr-value name="sign" value="unusual.form"/>
1010          <suffix>!!</suffix>
1011        </if>
1012        <if>
1013          <attr-value name="sign" value="really.is"/>
1014          <suffix>!!!</suffix>
1015        </if>
1016      </self>
1017
1018      <!-- handle combinations of (maybe-)missing and gloss-->
1019      <self>
1020        <element name="missing"/>
1021        <if>
1022          <attr-value name="gloss" value="pre"/>
1023          <prefix>{</prefix>
1024          <suffix>}</suffix>
1025        </if>
1026        <if>
1027          <attr-value name="gloss" value="post"/>
1028          <prefix>{</prefix>
1029          <suffix>}</suffix>
1030        </if>
1031      </self>
1032      <self>
1033        <element name="maybe-missing"/>
1034        <if>
1035          <attr-value name="gloss" value="pre"/>
1036          <prefix>{</prefix>
1037          <suffix>}</suffix>
1038        </if>
1039        <if>
1040          <attr-value name="gloss" value="post"/>
1041          <prefix>{</prefix>
1042          <suffix>}</suffix>
1043        </if>
1044      </self>
1045
1046      <!-- the value portion of signrefs is uppercased -->
1047      <self>
1048        <element name="signref"/>
1049        <apply-filter rule="s/^([^~-]+)/\U$1/"/>
1050      </self>
1051      <self>
1052        <element name="cg.signref"/>
1053        <apply-filter rule="s/^([^~-]+)/\U$1/"/>
1054      </self>
1055
1056      <self>
1057        <element name="w"/>
1058        <render-before> </render-before>
1059      </self>
1060      <self>
1061        <element name="l"/>
1062        <render-before><nl/><attribute name="n"/>. </render-before>
1063      </self>
1064
1065      <self>
1066        <element name="column"/>
1067        <render-before><nl/>@column <attribute name="n"/></render-before>
1068      </self>
1069      <self>
1070        <element name="surface"/>
1071        <render-before><nl/>@<attribute name="type"/></render-before>
1072      </self>
1073      <self>
1074        <element name="sealing"/>
1075        <render-before><nl/>@seal <attribute name="n"/></render-before>
1076      </self>
1077      <self>
1078        <element name="object"/>
1079        <render-before><nl/></render-before>
1080        <render-after><nl/></render-after>
1081      </self>
1082      <self>
1083        <element name="envelope"/>
1084        <render-before><nl/>@envelope</render-before>
1085      </self>
1086      <self>
1087        <element name="cmt"/>
1088        <render-before><nl/>#</render-before>
1089      </self>
1090      <self>
1091        <element name="nonl"/>
1092        <render-before><nl/>$</render-before>
1093      </self>
1094      <self>
1095        <element name="noncolumn"/>
1096        <render-before><nl/>$</render-before>
1097      </self>
1098      <self>
1099        <element name="text"/>
1100        <render-before><nl/><nl/>&amp;<attribute name="n"/></render-before>
1101      </self>
1102    </content-view>
1103  </doctype>
1104</docspecs>