<?xml version="1.0" encoding="UTF-8"?>

<!--
  *** NOTICE ***

  This version of the docspecs file is not compatible with versions of
  Arboreal prior to 3.8!

  Last revision: Tue Jul 29 02:09:24 EDT 2003
-->

<!DOCTYPE docspecs [

<!ELEMENT docspecs (doctype*)>

<!ATTLIST docspecs
  xmlns     CDATA            #FIXED "http://archimedes.fas.harvard.edu/arboreal/ddl/1.2">

<!ELEMENT doctype                    (containers,
	                              subcontainers,
	                              word-separators,
	                              grapheme-separators,
	                              langspec,
	                              metadata,
                                      page-image,
                                      defs,
                                      tree-view,
                                      content-view)>

<!ATTLIST doctype
  name      CDATA            #REQUIRED
  ns        CDATA            #IMPLIED>

<!ELEMENT containers                 (element*)>

<!ELEMENT subcontainers              (element*)>

<!ELEMENT word-separators            (element*)>

<!ELEMENT grapheme-separators        (element*)>

<!ATTLIST grapheme-separators
  symbol    CDATA            #IMPLIED>

<!ELEMENT langspec                  (attribute)>

<!ELEMENT metadata                   (author, title, locator, language)>

<!ATTLIST metadata
  name      CDATA            #REQUIRED>

<!ELEMENT page-image                 (element?)>

<!ELEMENT defs                       (pseudoelement*)>

<!ELEMENT content-view               (self | parent)*>

<!ELEMENT tree-view                  (default-node?, (self | parent)*)>

<!ELEMENT pseudoelement              (element, attr-value)>

<!ATTLIST pseudoelement
  name      NMTOKEN          #REQUIRED>

<!ELEMENT default-node               (#PCDATA | node-name | attribute)*>

<!ELEMENT node-name                  EMPTY>

<!ELEMENT self                       (element,
                                      if*,	  
                                      ignore-before?,
                                      ignore-after?,
                                      ignore-in-parent?,
                                      render-before?,
                                      render-after?,
                                      apply-filter?,
	                              style?,
				      style-extra?)>

<!ELEMENT parent                     (element,
                                      ignore-before?,
                                      ignore-after?,
                                      ignore-in-parent?,
                                      render-before?,
                                      render-after?,
                                      apply-filter?,
                                      style?,
				      style-extra?)>

<!ELEMENT element                    EMPTY>

<!ATTLIST element
  name      CDATA            #REQUIRED>

<!ELEMENT attribute                  EMPTY>

<!ATTLIST attribute
  name      CDATA            #REQUIRED>

<!ELEMENT attr-value EMPTY>

<!ATTLIST attr-value
  name      NMTOKEN          #REQUIRED
  value     CDATA            #REQUIRED>

<!ELEMENT author                     (#PCDATA)>

<!ELEMENT title                      (#PCDATA)>

<!ELEMENT locator                    (#PCDATA)>

<!ELEMENT language                   (#PCDATA)>

<!ELEMENT nl                         EMPTY>

<!ELEMENT if                         (attr-value, prefix?, suffix?)>

<!ELEMENT prefix                     (#PCDATA | nl)*>

<!ELEMENT suffix                     (#PCDATA | nl)*>

<!ELEMENT render-before              (#PCDATA | nl | attribute)*>

<!ELEMENT render-after               (#PCDATA | nl | attribute)*>

<!ELEMENT apply-filter               EMPTY>

<!ATTLIST apply-filter
  rule      CDATA            #REQUIRED>

<!ELEMENT ignore-before              (element*)>

<!ATTLIST ignore-before
  dist      (1|2|either)     "1">

<!ELEMENT ignore-after (element*)>

<!ATTLIST ignore-after
  dist      (1|2|either)     "1">

<!ELEMENT ignore-in-parent           (element*)>

<!ELEMENT style                      (alignment |
	                              bold |
                                      foreground |
                                      italic |
                                      left-indent |
                                      right-indent |
                                      subscript |
                                      superscript |
                                      underline)*>

<!ELEMENT style-extra                (alignment |
	                              bold |
                                      foreground |
                                      italic |
                                      left-indent |
                                      right-indent |
                                      subscript |
                                      superscript |
                                      underline)*>

<!ELEMENT alignment                  EMPTY>

<!ATTLIST alignment
  value     (left | right | center | justified)	   "left">

<!ELEMENT bold                       EMPTY>

<!ELEMENT foreground                 EMPTY>

<!ATTLIST foreground
  value     CDATA            #REQUIRED>

<!ELEMENT italic                     EMPTY>

<!ELEMENT left-indent                EMPTY>

<!ATTLIST left-indent
  value     CDATA            #REQUIRED>

<!ELEMENT right-indent               EMPTY>

<!ATTLIST right-indent
  value     CDATA            #REQUIRED>

<!ELEMENT subscript                  EMPTY>

<!ELEMENT superscript                EMPTY>

<!ELEMENT underline                  EMPTY>
]>

<docspecs>
  <!-- the generic docspec (for Archimedes texts) -->
  <doctype name="">
    <containers>
      <element name="s"/>
      <element name="cell"/>
    </containers>

    <subcontainers>
      <element name="foreign"/>
    </subcontainers>

    <word-separators>
    </word-separators>

    <grapheme-separators>
    </grapheme-separators>

    <langspec>
      <attribute name="lang"/>
    </langspec>

    <metadata name="info">
      <author>/archimedes/info/author/text()</author>
      <title>/archimedes/info/title/text()</title>
      <locator>/archimedes/info/locator/text()</locator>
      <language>/archimedes/info/lang/text()</language>
    </metadata>

    <page-image>
      <element name="pb"/>
    </page-image>

    <defs>
      <pseudoelement name="heading">
        <element name="p"/>
	<attr-value name="type" value="head"/>
      </pseudoelement>
    </defs>

    <tree-view>
      <self>
	<element name="archimedes"/>
	<render-before>Archimedes Project document</render-before>
      </self>
      <self>
	<element name="info"/>
	<render-before>Metadata</render-before>
      </self>
      <self>
	<element name="author"/>
	<render-before>Author: </render-before>
      </self>
      <self>
	<element name="title"/>
	<render-before>Title: </render-before>
      </self>
      <self>
	<element name="date"/>
	<render-before>Date: </render-before>
      </self>
      <self>
	<element name="place"/>
	<render-before>Place: </render-before>
      </self>
      <self>
	<element name="translator"/>
	<render-before>Translator: </render-before>
      </self>
      <self>
	<element name="lang"/>
	<render-before>Language (ISO 639): </render-before>
      </self>
      <self>
	<element name="cvs_file"/>
	<render-before>CVS name: </render-before>
      </self>
      <self>
	<element name="cvs_version"/>
	<render-before>CVS version: </render-before>
      </self>
      <self>
	<element name="locator"/>
	<render-before>Locator: </render-before>
      </self>
      <self>
	<element name="text"/>
	<render-before>Text</render-before>
      </self>
      <self>
	<element name="front"/>
	<render-before>Front matter</render-before>
      </self>
      <self>
	<element name="body"/>
	<render-before>Body</render-before>
      </self>
      <self>
	<element name="back"/>
	<render-before>Back matter</render-before>
      </self>
      <self>
	<element name="chap"/>
	<render-before>Chapter</render-before>
      </self>
      <self>
	<element name="section"/>
	<render-before>&#x00a7;</render-before>
      </self>
      <self>
	<element name="heading"/>
	<render-before>Heading <attribute name="id"/></render-before>
      </self>
      <self>
	<element name="p"/><!-- pilcrow -->
	<render-before>&#x00b6; <attribute name="id"/></render-before>
      </self>
      <self>
	<element name="s"/>
	<apply-filter rule="s/&#173;//g"/>
      </self>
      <self>
        <element name="gap"/>
        <render-before>&#x2026;</render-before>
      </self>
    </tree-view>

    <content-view>
      <self>
        <element name="lb"/>
        <render-before><nl/></render-before>
      </self>
      <self>
        <element name="pb"/>
	<render-before><nl/></render-before>
        <render-after><nl/></render-after>
      </self>
      <self>
        <element name="p"/>
        <render-before><nl/><nl/></render-before>
      </self>
      <self>
        <element name="heading"/>
        <render-before><nl/><nl/></render-before>
      </self>
      <self>
        <element name="figure"/>
        <render-before><nl/></render-before>
	<render-after><nl/></render-after>
      </self>
      <self>
	<element name="table"/>
	<render-before><nl/></render-before>
	<render-after><nl/></render-after>
      </self>
      <self>
	<element name="row"/>
	<render-after><nl/></render-after>
      </self>
      <self>
	<element name="cell"/>
	<render-after>&#x0009;</render-after><!-- tab -->
      </self>
      <self>
        <element name="gap"/>
        <render-before>&#x2026;</render-before>
      </self>
      <parent>
        <element name="info"/>
        <render-before><nl/></render-before>
      </parent>
    </content-view>
  </doctype>

  <doctype name="termlist">
    <containers>
    </containers>

    <subcontainers>
    </subcontainers>

    <word-separators>
    </word-separators>

    <grapheme-separators>
    </grapheme-separators>

    <langspec>
      <attribute name=""/>
    </langspec>

    <metadata name="">
      <author></author>
      <title></title>
      <locator></locator>
      <language></language>
    </metadata>

    <page-image>
    </page-image>

    <defs>
    </defs>

    <tree-view>
    </tree-view>

    <content-view>
      <parent>
        <element name="term"/>
        <render-before><nl/></render-before>
      </parent>
    </content-view>
  </doctype>

  <!-- a very quick-and-dirty docspec for XHTML
       (2002-06-23 mdh) -->
  <doctype name="html">
    <containers>
      <element name="p"/>
      <element name="div"/>
    </containers>

    <subcontainers>
    </subcontainers>

    <word-separators>
    </word-separators>

    <grapheme-separators>
    </grapheme-separators>

    <langspec>
      <attribute name="lang"/>
    </langspec>

    <metadata name="info">
      <author></author>
      <title>/descendant::*[name() = "title"]/text()</title>
      <locator></locator>
      <language>/descendant::*[name() = "html"]/@lang</language>
    </metadata>

    <page-image>
    </page-image>

    <defs>
    </defs>

    <tree-view>
    </tree-view>

    <content-view>
      <self>
        <element name="br"/>
        <render-before><nl/></render-before>
      </self>
      <self>
        <element name="li"/>
        <render-before><nl/></render-before>
      </self>
      <self>
        <element name="p"/>
        <render-before><nl/><nl/></render-before>
      </self>
      <parent>
        <element name="head"/>
        <render-before><nl/></render-before>
      </parent>
    </content-view>
  </doctype>

  <!-- the CDLI XML format (under development)
       CDLI week, L.A. (9 December 2002)

       These rules yield a display that approximates ATF. They are largely
       complete, with the exception of support for igg and complex glosses.
       A few subtle problems remain, e.g. with bracket consolidation.
    -->  
  <doctype name="" ns="http://cdli.ucla.edu/text/1">
    <containers>
      <element name="l"/>
    </containers>

    <subcontainers>
    </subcontainers>

    <word-separators>
      <element name="w"/>
    </word-separators>

    <grapheme-separators symbol="-">
      <element name="g"/>
      <element name="cg.g"/>
    </grapheme-separators>

    <langspec>
      <attribute name="xml:lang"/>
    </langspec>

    <metadata name="">
      <author></author>
      <title></title>
      <locator></locator>
      <language>/descendant::*[name() = "text"][1]/@xml:lang</language>
    </metadata>

    <page-image>
      <element name="object"/>
    </page-image>

    <defs>
      <pseudoelement name="missing">
        <element name="g"/>
	<attr-value name="breakage" value="missing"/>
      </pseudoelement>
      <pseudoelement name="maybe-missing">
        <element name="g"/>
	<attr-value name="breakage" value="maybe-missing"/>
      </pseudoelement>
      <pseudoelement name="ed.supplied">
	<element name="g"/>
	<attr-value name="sign" value="ed.supplied"/>
      </pseudoelement>
      <pseudoelement name="ed.removed">
	<element name="g"/>
	<attr-value name="sign" value="ed.removed"/>
      </pseudoelement>
      <pseudoelement name="scribe.implied">
	<element name="g"/>
	<attr-value name="sign" value="scribe.implied"/>
      </pseudoelement>
      <pseudoelement name="pre.gloss">
        <element name="g"/>
	<attr-value name="gloss" value="pre"/>
      </pseudoelement>
      <pseudoelement name="post.gloss">
        <element name="g"/>
	<attr-value name="gloss" value="post"/>
      </pseudoelement>
      <pseudoelement name="cg.rel.adjacent">
        <element name="cg.rel"/>
	<attr-value name="c" value="adjacent"/>
      </pseudoelement>
      <pseudoelement name="cg.rel.ligatured">
        <element name="cg.rel"/>
	<attr-value name="c" value="ligatured"/>
      </pseudoelement>
      <pseudoelement name="cg.rel.times">
        <element name="cg.rel"/>
	<attr-value name="c" value="times"/>
      </pseudoelement>
      <pseudoelement name="cg.rel.over">
        <element name="cg.rel"/>
	<attr-value name="c" value="over"/>
      </pseudoelement>
      <pseudoelement name="cg.rel.crossed">
        <element name="cg.rel"/>
	<attr-value name="c" value="crossed"/>
      </pseudoelement>
      <pseudoelement name="cg.rel.or">
        <element name="cg.rel"/>
	<attr-value name="c" value="or"/>
      </pseudoelement>
      <pseudoelement name="signref">
        <element name="g"/>
	<attr-value name="nametype" value="signref"/>
      </pseudoelement>
      <pseudoelement name="cg.signref">
        <element name="cg.g"/>
        <attr-value name="nametype" value="signref"/>
      </pseudoelement>
      <pseudoelement name="gg.group">
	<element name="gg"/>
	<attr-value name="type" value="group"/>
      </pseudoelement>
      <pseudoelement name="gg.alternation">
	<element name="gg"/>
	<attr-value name="type" value="alternation"/>
      </pseudoelement>
      <pseudoelement name="gg.ligature">
	<element name="gg"/>
	<attr-value name="type" value="ligature"/>
      </pseudoelement>
      <pseudoelement name="gg.num-plus">
	<element name="gg"/>
	<attr-value name="type" value="num-plus"/>
      </pseudoelement>
      <pseudoelement name="gg.num-dotted">
	<element name="gg"/>
	<attr-value name="type" value="num-dotted"/>
      </pseudoelement>
      <pseudoelement name="newline">
        <element name="nong"/>
	<attr-value name="type" value="newline"/>
      </pseudoelement>
      <pseudoelement name="broken">
        <element name="nong"/>
	<attr-value name="type" value="broken"/>
      </pseudoelement>
      <pseudoelement name="traces">
	<element name="nong"/>
	<attr-value name="type" value="traces"/>
      </pseudoelement>
      <pseudoelement name="envelope">
        <element name="object"/>
	<attr-value name="type" value="envelope"/>
      </pseudoelement>
    </defs>

    <tree-view>
    </tree-view>

    <content-view>
      <!-- Hyphen is inserted before g, signref, pre.gloss, post.gloss,
	   missing, maybe-missing, ed.supplied, ed.removed, scribe.implied,
	   cg, cg.g, and cg.signref except at the beginning of a word, or
	   after a pre.gloss, or within any type of gg.

	   Further, the hyphen for cg.g is "delegated" to cg: i.e., it is
	   suppressed after cg, and a hyphen is inserted before cg with
	   the distribution indicated above. The hyphen is also suppressed
	   after any cg.rel. -->
      <self>
        <element name="g"/>
        <ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
        </ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
        <render-before>-</render-before>
      </self>
      <self>
        <element name="signref"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
        </ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
        <render-before>-</render-before>
      </self>
      <self>
        <element name="pre.gloss"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="newline"/>
	</ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="missing"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
	</ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="maybe-missing"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
	</ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="ed.supplied"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
	</ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="ed.removed"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
	</ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="scribe.implied"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
	</ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="cg"/>
	<ignore-after>
	  <element name="w"/>
	  <element name="pre.gloss"/>
	</ignore-after>
	<ignore-in-parent>
	  <element name="gg.group"/>
	  <element name="gg.alternation"/>
	  <element name="gg.ligature"/>
	  <element name="gg.num-plus"/>
	  <element name="gg.num-dotted"/>
	</ignore-in-parent>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="cg.g"/>
	<ignore-after>
	  <element name="cg"/>
	  <element name="cg.rel.adjacent"/>
	  <element name="cg.rel.ligatured"/>
	  <element name="cg.rel.times"/>
	  <element name="cg.rel.over"/>
	  <element name="cg.rel.crossed"/>
	  <element name="cg.rel.or"/>
	</ignore-after>
	<render-before>-</render-before>
      </self>
      <self>
        <element name="cg.signref"/>
	<ignore-after>
	  <element name="cg"/>
	  <element name="cg.rel.adjacent"/>
	  <element name="cg.rel.ligatured"/>
	  <element name="cg.rel.times"/>
	  <element name="cg.rel.over"/>
	  <element name="cg.rel.crossed"/>
	  <element name="cg.rel.or"/>
	</ignore-after>
	<render-before>-</render-before>
      </self>

      <!-- render joiners between the elements of a grapheme group -->
      <parent>
	<element name="gg.group"/>
	<ignore-after>
	  <element name="gg.group"/>
	</ignore-after>
	<render-before>.</render-before>
      </parent>
      <parent>
	<element name="gg.alternation"/>
	<ignore-after>
	  <element name="gg.alternation"/>
	</ignore-after>
	<render-before>/</render-before>
      </parent>
      <parent>
	<element name="gg.ligature"/>
	<ignore-after>
	  <element name="gg.ligature"/>
	</ignore-after>
	<render-before>+</render-before>
      </parent>
      <parent>
	<element name="gg.num-plus"/>
	<ignore-after>
	  <element name="gg.num-plus"/>
	</ignore-after>
	<render-before>+</render-before>
      </parent>
      <parent>
	<element name="gg.num-dotted"/>
	<ignore-after>
	  <element name="gg.num-dotted"/>
	</ignore-after>
	<render-before>.</render-before>
      </parent>

      <!-- glosses are surrounded by curly braces -->
      <self>
        <element name="pre.gloss"/>
	<render-before>{</render-before>
	<render-after>}</render-after>
      </self>
      <self>
        <element name="post.gloss"/>
	<render-before>{</render-before>
	<render-after>}</render-after>
      </self>

      <!-- any sequence of missing elements is surrounded by square brackets -->
      <self>
        <element name="missing"/>
	<ignore-after dist="either">
	  <element name="missing"/>
	  <element name="maybe-missing"/>
	</ignore-after>
	<render-before>[</render-before>
      </self>
      <self>
        <element name="missing"/>
	<ignore-before dist="either">
	  <element name="missing"/>
	  <element name="maybe-missing"/>
	</ignore-before>
	<render-after>]</render-after>
      </self>

      <!-- Any sequence of maybe-missing elements is surrounded by
	   parentheses. It's more complicated, though, since maybe-missing
	   implies missing. Thus if we're not surrounded explicitly by missing,
	   we have to generate square brackets at the outermost level.
	   The ordering of rules is significant. -->
      <self>
	<element name="maybe-missing"/>
	<ignore-after dist="either">
	  <element name="missing"/>
	  <element name="maybe-missing"/>
	</ignore-after>
	<render-before>[</render-before>
      </self>
      <self>
        <element name="maybe-missing"/>
	<ignore-after dist="either">
	  <element name="maybe-missing"/>
	</ignore-after>
	<render-before>(</render-before>
      </self>
      <self>
        <element name="maybe-missing"/>
	<ignore-before dist="either">
	  <element name="maybe-missing"/>
	</ignore-before>
	<render-after>)</render-after>
      </self>
      <self>
	<element name="maybe-missing"/>
	<ignore-before dist="either">
	  <element name="missing"/>
	  <element name="maybe-missing"/>
	</ignore-before>
	<render-after>]</render-after>
      </self>

      <!-- ed.supplied, ed.removed, and scribe.implied are brackets with
	   behavior similar to missing -->
      <self>
        <element name="ed.supplied"/>
	<ignore-after dist="either">
	  <element name="ed.supplied"/>
	</ignore-after>
	<render-before>&lt;</render-before>
      </self>
      <self>
        <element name="ed.supplied"/>
	<ignore-before dist="either">
	  <element name="ed.supplied"/>
	</ignore-before>
	<render-after>&gt;</render-after>
      </self>
      <self>
        <element name="ed.removed"/>
	<ignore-after dist="either">
	  <element name="ed.removed"/>
	</ignore-after>
	<render-before>&lt;&lt;</render-before>
      </self>
      <self>
        <element name="ed.removed"/>
	<ignore-before dist="either">
	  <element name="ed.removed"/>
	</ignore-before>
	<render-after>&gt;&gt;</render-after>
      </self>
      <self>
        <element name="scribe.implied"/>
	<ignore-after dist="either">
	  <element name="scribe.implied"/>
	</ignore-after>
	<render-before>&lt;(</render-before>
      </self>
      <self>
        <element name="scribe.implied"/>
	<ignore-before dist="either">
	  <element name="scribe.implied"/>
	</ignore-before>
	<render-after>)&gt;</render-after>
      </self>


      <self>
        <element name="cg.gg"/>
	<render-before>(</render-before>
	<render-after>)</render-after>
      </self>

      <!-- a compound element is surrounded by vertical bars, unless it is
	   contained within a grapheme group -->
      <self>
        <element name="cg"/>
	<ignore-in-parent>
	  <element name="cg.gg"/>
	</ignore-in-parent>
	<render-before>|</render-before>
	<render-after>|</render-after>
      </self>

      <!-- symbols for compound grapheme relators -->
      <self>
        <element name="cg.rel.adjacent"/>
	<render-after>.</render-after>
      </self>
      <self>
        <element name="cg.rel.ligatured"/>
	<render-after>+</render-after>
      </self>
      <self>
        <element name="cg.rel.times"/>
	<render-after>x</render-after>
      </self>
      <self>
        <element name="cg.rel.over"/>
	<render-after>@</render-after>
      </self>
      <self>
        <element name="cg.rel.crossed"/>
	<render-after>%</render-after>
      </self>
      <self>
        <element name="cg.rel.or"/>
	<render-after>/</render-after>
      </self>

      <self>
        <element name="newline"/>
	<render-before>;</render-before>
      </self>

      <self>
        <element name="broken"/>
	<render-before>[</render-before>
	<render-after>]</render-after>
      </self>
      <self>
	<element name="traces"/>
	<render-before>(</render-before>
	<render-after>)</render-after>
      </self>

      <!-- flag attributes on any of: g, pre.gloss, post.gloss, missing,
	   maybe-missing, signref, cg.g, cg.signref, cg -->
      <self>
	<element name="g"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="pre.gloss"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="post.gloss"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="missing"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="maybe-missing"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="ed.supplied"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="ed.removed"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="scribe.implied"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="signref"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="cg.signref"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>
      <self>
	<element name="cg"/>
	<if>
	  <attr-value name="uncertain" value="y"/>
	  <suffix>?</suffix>
	</if>
	<if>
	  <attr-value name="collated" value="y"/>
	  <suffix>*</suffix>
	</if>
	<if>
	  <attr-value name="breakage" value="damaged"/>
	  <suffix>#</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="ed.emended"/>
	  <suffix>!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="unusual.form"/>
	  <suffix>!!</suffix>
	</if>
	<if>
	  <attr-value name="sign" value="really.is"/>
	  <suffix>!!!</suffix>
	</if>
      </self>

      <!-- handle combinations of (maybe-)missing and gloss-->
      <self>
	<element name="missing"/>
	<if>
	  <attr-value name="gloss" value="pre"/>
	  <prefix>{</prefix>
	  <suffix>}</suffix>
	</if>
	<if>
	  <attr-value name="gloss" value="post"/>
	  <prefix>{</prefix>
	  <suffix>}</suffix>
	</if>
      </self>
      <self>
	<element name="maybe-missing"/>
	<if>
	  <attr-value name="gloss" value="pre"/>
	  <prefix>{</prefix>
	  <suffix>}</suffix>
	</if>
	<if>
	  <attr-value name="gloss" value="post"/>
	  <prefix>{</prefix>
	  <suffix>}</suffix>
	</if>
      </self>

      <!-- the value portion of signrefs is uppercased -->
      <self>
        <element name="signref"/>
	<apply-filter rule="s/^([^~-]+)/\U$1/"/>
      </self>
      <self>
        <element name="cg.signref"/>
        <apply-filter rule="s/^([^~-]+)/\U$1/"/>
      </self>

      <self>
        <element name="w"/>
        <render-before> </render-before>
      </self>
      <self>
        <element name="l"/>
	<render-before><nl/><attribute name="n"/>. </render-before>
      </self>

      <self>
        <element name="column"/>
	<render-before><nl/>@column <attribute name="n"/></render-before>
      </self>
      <self>
	<element name="surface"/>
	<render-before><nl/>@<attribute name="type"/></render-before>
      </self>
      <self>
        <element name="sealing"/>
	<render-before><nl/>@seal <attribute name="n"/></render-before>
      </self>
      <self>
	<element name="object"/>
	<render-before><nl/></render-before>
	<render-after><nl/></render-after>
      </self>
      <self>
        <element name="envelope"/>
	<render-before><nl/>@envelope</render-before>
      </self>
      <self>
        <element name="cmt"/>
	<render-before><nl/>#</render-before>
      </self>
      <self>
        <element name="nonl"/>
	<render-before><nl/>$</render-before>
      </self>
      <self>
        <element name="noncolumn"/>
	<render-before><nl/>$</render-before>
      </self>
      <self>
        <element name="text"/>
	<render-before><nl/><nl/>&amp;<attribute name="n"/></render-before>
      </self>
    </content-view>
  </doctype>

  <!-- "rome" is the Arboreal outline format -->
  <doctype name="rome">
    <containers>
    </containers>

    <subcontainers>
    </subcontainers>

    <word-separators>
    </word-separators>

    <grapheme-separators>
    </grapheme-separators>

    <langspec>
      <attribute name="lang"/>
    </langspec>

    <metadata name="">
      <author></author>
      <title></title>
      <locator></locator>
      <language></language>
    </metadata>

    <page-image>
    </page-image>

    <defs>
    </defs>

    <tree-view>
    </tree-view>

    <content-view>
      <self>
        <element name="h1"/>
	<render-after><nl/></render-after>
	<style>
          <bold/>
	  <foreground value="#0000BB"/>
        </style>
      </self>
      <self>
        <element name="h2"/>
	<render-after><nl/></render-after>
        <style>
	  <left-indent value="20"/>
	</style>
      </self>
      <self>
        <element name="h3"/>
	<render-after><nl/></render-after>
        <style>
	  <left-indent value="40"/>
	</style>
      </self>
      <self>
        <element name="h4"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="60"/>
        </style>
      </self>
      <self>
        <element name="h5"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="80"/>
        </style>
      </self>
      <self>
        <element name="h6"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="100"/>
        </style>
      </self>
      <self>
        <element name="h7"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="120"/>
        </style>
      </self>
      <self>
        <element name="h8"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="140"/>
        </style>
      </self>
      <self>
        <element name="h9"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="160"/>
        </style>
      </self>
      <self>
        <element name="h10"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="180"/>
        </style>
      </self>
      <self>
        <element name="h11"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="200"/>
        </style>
      </self>
      <self>
        <element name="h12"/>
	<render-after><nl/></render-after>
	<style>
	  <left-indent value="220"/>
        </style>
      </self>
    </content-view>
  </doctype>

  <!-- tagged word list format (wtag) -->
  <doctype name="wtag">
    <containers>
      <element name="w"/>
    </containers>

    <subcontainers>
    </subcontainers>

    <word-separators>
    </word-separators>

    <grapheme-separators>
    </grapheme-separators>

    <langspec>
      <attribute name="lang"/>
    </langspec>

    <metadata name="">
      <author></author>
      <title></title>
      <locator>/wtag/@locator</locator>
      <language></language>
    </metadata>

    <page-image>
    </page-image>

    <defs>
    </defs>

    <tree-view>
    </tree-view>

    <content-view>
      <self>
        <element name="w"/>
	<render-after><nl/></render-after>
      </self>
    </content-view>
  </doctype>

</docspecs>
