<?xml version="1.0"?>
<!DOCTYPE xsl:stylesheet [ 
<!--* 
  DOCTYPE xsl:stylesheet PUBLIC 'http://www.w3.org/1999/XSL/Transform'
      '/SGML/Public/W3C/xslt10.dtd' [
    *-->
<!ENTITY lt     "&#38;#60;"      ><!--=less-than sign R:-->
<!ENTITY gt     ">"      ><!--=greater-than sign R:-->
<!ENTITY ldquo "&#8220;"><!-- left double quotation mark,
                              U+201C ISOnum -->
<!ENTITY rdquo "&#8221;"><!-- right double quotation mark,
                              U+201D ISOnum -->
<!ENTITY lsquo "&#8216;">
<!ENTITY rsquo "&#8217;">
<!ENTITY nbsp "&#160;">
<!ENTITY ltri   "&#x25C3;" ><!--/triangleleft B: l triangle, open-->
<!ENTITY rtri   "&#x25B9;" ><!--/triangleright B: r triangle, open-->
<!ENTITY equiv  "&#x2261;" ><!--/equiv R: =identical with-->
<!ENTITY rarr   "&#x2192;" ><!--/rightarrow /to A: =rightward arrow-->

<!ENTITY txtnl "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>&#xA;</xsl:text>">
]>
<!--* An XSL stylesheet for translating Markup Languages articles into HTML.
    *
    * Tested with XT
    * Revisions:
    *   2000-09-22 : CMSMcQ : made file
    * To do:
    *   - provide good metadata in DC fields in header
    *-->
<xsl:stylesheet 
		xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
		version="1.0">

<!--* Output and whitespace details *-->
 <xsl:output method="html" 
	     encoding="us-ascii"
	     indent="no"
	     doctype-public="-//W3C//DTD HTML 4.0//EN"/>
 <xsl:strip-space 
		  elements="div1
		  div2
		  list"/>
 <xsl:preserve-space elements="xsl:text"/>

 <xsl:param name="slideprint">true</xsl:param>

<!--* Generic fallbacks *-->
<!--* 
<xsl:template><xsl:value-of select="."/></xsl:template>
*-->
 <xsl:template match='*'>
  <xsl:element name="span">
   <xsl:attribute name="style">color:red</xsl:attribute>
   <xsl:attribute name='title'><xsl:value-of select="name()"/></xsl:attribute>
   <xsl:text>&lt;</xsl:text>
   <xsl:value-of select="name()"/>
   <xsl:text>&gt;</xsl:text>
   <xsl:apply-templates/>
   <xsl:text>&lt;/</xsl:text>
   <xsl:value-of select="name()"/>
   <xsl:text>&gt;</xsl:text>
  </xsl:element>
 </xsl:template>

 <xsl:template match='processing-instruction()'/>
 <xsl:template match='comment()'/>

 <!--* Root *-->
 <xsl:template match='/'>
  <!--* <html><head><title>Temp</title></head><body><xmp> *-->

  <xsl:element name="html">&txtnl;
   <xsl:comment>
    <xsl:text>Need to find a way to insert the current date</xsl:text>
   </xsl:comment>&txtnl;
   <xsl:element name="head">&txtnl;
    <xsl:element name="title">
     <xsl:value-of select="header/teiHeader/title"/>
    </xsl:element>&txtnl;
    <xsl:if test="/TEI.2/@rend='w3c-member' 
	         or /TEI.2/@rend='w3c-team'">
     <xsl:element name="link">
      <xsl:attribute name="href">../../StyleSheets/base.css</xsl:attribute>
      <xsl:attribute name="type">text/css</xsl:attribute>
      <xsl:attribute name="rel">stylesheet</xsl:attribute>
     </xsl:element>
    </xsl:if>
    <xsl:element name="style">
     <xsl:attribute name="type">text/css</xsl:attribute>
     <xsl:if test="/TEI.2/@rend='ap-responses'">
      <xsl:text>
       h2 { background-color: #bbbbff; }
       h3 { background-color: #bbbbbb; }
       h3.comment { background-color: #ff8888; }
       h4,h5 { background-color: #cccccc; }
       h4 { padding-left: 0.5em; }
       h5 { padding-left: 1em; }
       h6 { background-color: #ff6666; font-size: 110%;}
       .response { background-color: #AAFFAA; 
                   border-width: thin;}
       .altresponse { background-color: #AAFFAA; 
                   border-width: thin; margin-left: 2em;}
       blockquote.oldcomment { background-color: #ffcccc; 
                   border-width: thin; margin-left: 2em;}
       blockquote.comment { background-color: #ffffff; 
                   border-width: thin; margin-left: 5em;}
       dt { border-style: solid; border-width: thin; }
      </xsl:text>
     </xsl:if>
     <xsl:if test="/TEI.2/@rend!='w3c-member'
	     and /TEI.2/@rend!='w3c-team'
	     and /TEI.2/@rend!='ap-responses'
	     ">
      <xsl:text>
    body {  
      margin: 2em 1em 2em 70px;  
      font-family: New Times Roman, serif, Lucida Sans Unicode;    
      color: black;    
      background-color: white;
    }
      </xsl:text>
     </xsl:if>
     <xsl:text>
      p {
      margin-top: 0.6em;      
      margin-bottom: 0.6em;
    }
    p.bibl {
      margin-top: 0.6em;      
      margin-bottom: 0.6em;
      margin-left: 2em;
      text-indent: -2em;
    }
    .Real-P {
      margin-top: 0.6em;      
      margin-bottom: 0.6em;
    }
    div.address {
      margin-top: 0.6em;      
      margin-bottom: 0.6em;
      margin-left: 2em;
    }
    div.note {
      margin-top: 1em;      
      margin-left: 2em;
      text-indent: -2em;
    }
    pre {  
      font-family: monospace;
      margin-left: 2em 
    }  
    a:hover { 
      background: #CCF 
    }
    td.no { 
      background: #CCF 
    }
    .author { 
      font-size: x-large
    }
    .bio { 
      font-size: small;
      font-style: italic
    }
    span.decision { 
    }
    span.result { 
      font-style: bold
    }
    span.aye { 
      display: block;
      margin-left: 2em;
    }
    span.nay { 
      display: block;
      margin-left: 2em;
    }
    span.abstain { 
      display: block;
      margin-left: 2em;
    }
    span.result { 
      display: block;
      margin-left: 2em;
      font-style: bold
    }
    span.speaker { 
      display: inline;
    }
     </xsl:text>
    </xsl:element>
   </xsl:element>
   <body>
    <!--* <xsl:element name="xmp"> *-->
    <xsl:choose>
     <xsl:when test="/TEI.2[@rend='w3c-member']">
      <xsl:call-template name="w3cmemberonly"/>
     </xsl:when>
     <xsl:when test="/TEI.2[@rend='w3c-team']">
      <xsl:call-template name="w3cteamonly"/>
     </xsl:when>
     <xsl:when test="/TEI.2/@rend='w3c-public'">
      <xsl:call-template name="w3cpublic"/>
     </xsl:when>
     <xsl:otherwise/>
    </xsl:choose>
    <xsl:apply-templates/>
    <!--* </xsl:element> *-->
   </body>
  </xsl:element>
  <!--* </xmp></body></html> *-->
 </xsl:template>

 <xsl:template name="w3cteamonly">
  <xsl:element name="p">
   <xsl:element name="a">
    <xsl:attribute name="href">/</xsl:attribute>
    <xsl:element name="img">
     <xsl:attribute name="src">/Icons/WWW/w3c_home.gif</xsl:attribute>
     <xsl:attribute name="alt">W3C</xsl:attribute>
     <xsl:attribute name="height">48</xsl:attribute>
     <xsl:attribute name="width">72</xsl:attribute>
     <xsl:attribute name="style">border:0</xsl:attribute>
    </xsl:element>
   </xsl:element>
   <xsl:element name="a">
    <xsl:attribute name="href">/Architecture/</xsl:attribute>
    <xsl:attribute name="rel">in-domain</xsl:attribute>
    <xsl:element name="img">
     <xsl:attribute name="src">/Icons/arch</xsl:attribute>
     <xsl:attribute name="alt">Architecture Domain</xsl:attribute>
     <xsl:attribute name="style">border:0</xsl:attribute>
    </xsl:element>
   </xsl:element>
   <xsl:element name="a">
    <xsl:attribute name="href">/XML/Group</xsl:attribute>
    <xsl:attribute name="rel">in-area</xsl:attribute>
    <xsl:text> XML</xsl:text>
   </xsl:element>
   <xsl:text> | </xsl:text>
   <xsl:element name="a">
    <xsl:attribute name="href">/Member/#confidential</xsl:attribute>
    <xsl:text>Team-Confidential!</xsl:text>
   </xsl:element>
  </xsl:element>
 </xsl:template>

 <xsl:template name="w3cmemberonly">
  <xsl:element name="p">
   <xsl:element name="a">
    <xsl:attribute name="href">/</xsl:attribute>
    <xsl:element name="img">
     <xsl:attribute name="src">/Icons/WWW/w3c_home.gif</xsl:attribute>
     <xsl:attribute name="alt">W3C</xsl:attribute>
     <xsl:attribute name="height">48</xsl:attribute>
     <xsl:attribute name="width">72</xsl:attribute>
     <xsl:attribute name="style">border:0</xsl:attribute>
    </xsl:element>
   </xsl:element>
   <xsl:element name="a">
    <xsl:attribute name="href">/Architecture/</xsl:attribute>
    <xsl:attribute name="rel">in-domain</xsl:attribute>
    <xsl:element name="img">
     <xsl:attribute name="src">/Icons/arch</xsl:attribute>
     <xsl:attribute name="alt">Architecture Domain</xsl:attribute>
     <xsl:attribute name="style">border:0</xsl:attribute>
    </xsl:element>
   </xsl:element>
   <xsl:element name="a">
    <xsl:attribute name="href">/XML/Group</xsl:attribute>
    <xsl:attribute name="rel">in-area</xsl:attribute>
    <xsl:text> XML</xsl:text>
   </xsl:element>
   <xsl:text> | </xsl:text>
   <xsl:element name="a">
    <xsl:attribute name="href">/XML/Group/Schemas</xsl:attribute>
    <xsl:attribute name="rel">in-area</xsl:attribute>
    <xsl:text>XML Schema</xsl:text>
   </xsl:element>
   <xsl:text> | </xsl:text>
   <xsl:element name="a">
    <xsl:attribute name="href">/Member/Eventscal.html</xsl:attribute>
    <xsl:text>Member Events</xsl:text>
   </xsl:element>
   <xsl:text> | </xsl:text>
   <xsl:element name="a">
    <xsl:attribute name="href">/Member/#confidential</xsl:attribute>
    <xsl:text>Member-Confidential!</xsl:text>
   </xsl:element>
  </xsl:element>
 </xsl:template>
 <xsl:template name="w3cpublic"> 
  <xsl:element name="p">
   <xsl:element name="a">
    <xsl:attribute name="href">/</xsl:attribute>
    <xsl:element name="img">
     <xsl:attribute name="src">/Icons/WWW/w3c_home.gif</xsl:attribute>
     <xsl:attribute name="alt">W3C</xsl:attribute>
     <xsl:attribute name="height">48</xsl:attribute>
     <xsl:attribute name="width">72</xsl:attribute>
     <xsl:attribute name="style">border:0</xsl:attribute>
    </xsl:element>
   </xsl:element>
   <xsl:element name="a">
    <xsl:attribute name="href">/Architecture/</xsl:attribute>
    <xsl:attribute name="rel">in-domain</xsl:attribute>
    <xsl:element name="img">
     <xsl:attribute name="src">/Icons/arch</xsl:attribute>
     <xsl:attribute name="alt">Architecture Domain</xsl:attribute>
     <xsl:attribute name="style">border:0</xsl:attribute>
    </xsl:element>
   </xsl:element>
   <xsl:element name="a">
    <xsl:attribute name="href">/XML</xsl:attribute>
    <xsl:attribute name="rel">in-area</xsl:attribute>
    <xsl:text> XML</xsl:text>
   </xsl:element>
   <xsl:text> | </xsl:text>
   <xsl:element name="a">
    <xsl:attribute name="href">/XML/Schema</xsl:attribute>
    <xsl:attribute name="rel">in-area</xsl:attribute>
    <xsl:text>XML Schema</xsl:text>
   </xsl:element>
  </xsl:element>
 </xsl:template>

<!--* Basic structure *-->
 <xsl:template match="tei.2|TEI.2">
  <xsl:element name="div">
   <xsl:attribute name="class">doc</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
  <xsl:if test="//note[@place='foot']">
   <xsl:element name="hr"/>
   <h3>Notes</h3>
   <xsl:element name="div">
    <xsl:attribute name="class">notes</xsl:attribute>
    <xsl:apply-templates select="//note[@place='foot']" mode="footnotes"/>
   </xsl:element>
  </xsl:if>
 </xsl:template>

 <xsl:template match="teiHeader|teiheader"/>

 <xsl:template match="text"><xsl:apply-templates/></xsl:template>

 <xsl:template match="divGen"/> <!--* stop gap, needs to be worked out *-->
 <xsl:template match="divGen[@type='toc']" priority="2">
  <xsl:call-template name="dotoc"/>
 </xsl:template>

 <xsl:template match="front">
  <xsl:apply-templates/>
  <!--* toc needed! *-->
  <xsl:if test="not(//front/divGen[@type='toc'])">
   <xsl:call-template name="dotoc"/>
  </xsl:if>
 </xsl:template>

 <xsl:template name="dotoc">
  <xsl:if test="//div1 | //div">
   <xsl:element name="a"><xsl:attribute name="name">toc</xsl:attribute>
   </xsl:element>
   <xsl:element name="hr"/>
   <xsl:if test="//div1">
    <xsl:call-template name="numbereddivtoc"/>
   </xsl:if>  
   <xsl:if test="//div">
    <xsl:call-template name="vanilladivtoc"/>
   </xsl:if>  
  </xsl:if>
 </xsl:template>

 <xsl:template name="numbereddivtoc">
  <xsl:element name="ul">&txtnl;
   <xsl:for-each select="//body//div1">
    <xsl:call-template name="donumtocline"/>&txtnl;
   </xsl:for-each>
  </xsl:element>
  <xsl:if test="//back/div1">&txtnl;
   <xsl:element name="ul">&txtnl;
    <xsl:for-each select="//back//div1">
     <xsl:call-template name="donumtocline">
      <xsl:with-param name="numstyle">A.</xsl:with-param>
     </xsl:call-template>&txtnl;
    </xsl:for-each>
   </xsl:element>
  </xsl:if>
 </xsl:template>

 <xsl:template name="donumtocline">
  <xsl:param name="numstyle">1.</xsl:param>
  
  <xsl:element name="li">
   <xsl:if test="ancestor::div0">
    <xsl:number level="single" count="div0" format="I."/>
   </xsl:if>
   <xsl:if test="ancestor-or-self::div1">
    <xsl:number level="single" count="div1" format="{$numstyle}"/>
    <xsl:if test="ancestor-or-self::div2 | ancestor-or-self::div3">
     <xsl:number level="multiple" count="div2|div3" format="1.1. "/>
    </xsl:if>
   </xsl:if>
   <xsl:text> </xsl:text>
   <xsl:element name="a">
    <xsl:attribute name="href">#<xsl:value-of select="generate-id(.)"/>
    </xsl:attribute>
    <xsl:apply-templates select="head" mode="toc"/>
   </xsl:element>
   <xsl:if test="(./div2) | (./div3)">
    <xsl:element name="ul">&txtnl;
     <xsl:for-each select="(./div2) | (./div3)">&txtnl;
      <xsl:call-template name="donumtocline">
       <xsl:with-param name="numstyle">
	<xsl:value-of select="$numstyle"/>
       </xsl:with-param>
      </xsl:call-template>
     </xsl:for-each>
    </xsl:element>
   </xsl:if>
  </xsl:element>
  &txtnl;
 </xsl:template>

 <xsl:template name="vanilladivtoc">
    <xsl:element name="ul">
     <xsl:for-each select="//body/div">
      <xsl:element name="li">
       <xsl:number level="single" format="1. "/>
       <xsl:element name="a">
	<xsl:attribute name="href">#<xsl:value-of select="generate-id(.)"/>
	</xsl:attribute>
	<xsl:apply-templates select="head" mode="toc"/>
       </xsl:element>
       <xsl:if test="./div">
	<xsl:element name="ul">
	 <xsl:for-each select="./div">
	  <xsl:element name="li">
	   <xsl:number level="multiple" count="div" format="1.1. "/>
	   <xsl:element name="a">
	    <xsl:attribute name="href">#<xsl:value-of select="generate-id(.)"/>
	    </xsl:attribute>
	    <xsl:apply-templates select="head" mode="toc"/>
	   </xsl:element>
	   <xsl:if test="./div">
	    <xsl:element name="ul">
	     <xsl:for-each select="./div">
	      <xsl:element name="li">
	       <xsl:number level="multiple" count="div" format="1.1. "/>
	       <xsl:element name="a">
		<xsl:attribute name="href"
			       >#<xsl:value-of select="generate-id(.)"/>
		</xsl:attribute>
		<xsl:apply-templates select="head" mode="toc"/>
	       </xsl:element>
	      </xsl:element>
	     </xsl:for-each>
	    </xsl:element>
	   </xsl:if>
	  </xsl:element>
	 </xsl:for-each>
	</xsl:element>
       </xsl:if>
      </xsl:element>
     </xsl:for-each>
    </xsl:element>
 </xsl:template>



 <xsl:template name="oldnumbereddivtoc">
  <xsl:element name="a"><xsl:attribute name="name">toc</xsl:attribute>
  </xsl:element>
  <xsl:element name="hr"/>
  <xsl:element name="ul">&txtnl;
   <xsl:for-each select="//body//div1">
    <xsl:call-template name="donumtocline">
     <xsl:with-param name="numstyle">1. </xsl:with-param>
    </xsl:call-template>
    <xsl:element name="li">
     <xsl:if test="ancestor::div0">
      <xsl:number level="single" count="div0" format="I."/>
     </xsl:if>
     <xsl:number level="single" count="div1" format="1. "/>
     <xsl:element name="a">
      <xsl:attribute name="href">#<xsl:value-of select="generate-id(.)"/>
      </xsl:attribute>
      <xsl:apply-templates select="head" mode="toc"/>
     </xsl:element>
     <xsl:if test="./div2">
      <xsl:element name="ul">&txtnl;
       <xsl:for-each select="./div2">
	<xsl:element name="li">
	 <xsl:number level="multiple" count="div1|div2" format="1.1. "/>
	 <xsl:element name="a">
	  <xsl:attribute name="href">#<xsl:value-of select="generate-id(.)"/>
	  </xsl:attribute>
	  <xsl:apply-templates select="head" mode="toc"/>
	 </xsl:element>
	 <xsl:if test="./div3">
	  <xsl:element name="ul">&txtnl;
	   <xsl:for-each select="./div3">
	    <xsl:element name="li">
	     <xsl:number level="multiple" 
			   count="div1|div2|div3" 
			   format="1.1 "/>
	     <xsl:element name="a">
	      <xsl:attribute name="href"
			       >#<xsl:value-of select="generate-id(.)"/>
	      </xsl:attribute>
	      <xsl:apply-templates select="head" mode="toc"/>
	     </xsl:element>
	    </xsl:element>&txtnl;
	   </xsl:for-each>
	  </xsl:element>
	 </xsl:if>
	</xsl:element>&txtnl;
       </xsl:for-each>
      </xsl:element>
     </xsl:if>
    </xsl:element>&txtnl;
   </xsl:for-each>
  </xsl:element>
  <xsl:if test="//back/div1">&txtnl;
   <xsl:element name="ul">&txtnl;
    <xsl:for-each select="//back//div1">
     <xsl:element name="li">
      <xsl:number level="single" format="A. "/>
      <xsl:element name="a">
       <xsl:attribute name="href">#<xsl:value-of select="generate-id(.)"/>
       </xsl:attribute>
       <xsl:apply-templates select="head" mode="toc"/>
      </xsl:element>
       </xsl:element>&txtnl;
    </xsl:for-each>
   </xsl:element>
  </xsl:if>
 </xsl:template>

 <xsl:template match="titlePage|titlepage">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="docImprint">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="titlePage/docImprint/docDate">
  <xsl:element name="span">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="byline|byLine">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="doctitle|docTitle"><xsl:apply-templates/></xsl:template>
 <xsl:template match="doctitle/titlepart|docTitle/titlePart">
  <xsl:element name="h1">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="docdate
	       | docauthor
	       | titlepage/titlepart
	       | titlePage/docDate
	       | docAuthor
	       | titlePage/titlePart">
  <xsl:element name="h3">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="docAuthor/name">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="docDate/date">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="div1/docDate">
  <xsl:element name="div">
   <xsl:attribute name="style">text-align: right</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="div1/docDate/name">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="div1/docDate/date">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="body">
  <xsl:element name="hr"/>
  <xsl:apply-templates/>
 </xsl:template>

 <!--* Header and title page info *-->
 <xsl:template match="author">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="author/name">
  <xsl:element name="div">
   <xsl:attribute name="class">author</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="address">
  <xsl:element name="div">
   <xsl:attribute name="class">address</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="docAuthor/address">
  <xsl:element name="div">
   <xsl:attribute name="class">address</xsl:attribute>
   <xsl:attribute name="style">font-weight: normal; font-size: small;</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="addrline|addrLine">
  <xsl:apply-templates/><xsl:element name="br"/>
 </xsl:template>

 <!--* Back matter *-->
 <xsl:template match="back">
  <xsl:element name="hr"/>
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="listBibl|listbibl">
  <xsl:element name="div">
   <xsl:attribute name="class">bibliography</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="listBibl/bibl">
  <xsl:element name="p">
   <xsl:attribute name="class">bibl</xsl:attribute>
   <xsl:if test="@id">
    <xsl:element name="a">
     <xsl:attribute name="name">
      <xsl:value-of select="generate-id(.)"/>
     </xsl:attribute>
    </xsl:element>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="p/bibl">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="bibl/editor">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="bibl/pubPlace">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="bibl/publisher">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="bibl/date">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="bibl/biblScope">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="bibl/gap | title/gap">
  [<i><xsl:value-of select="@desc"/></i>]
 </xsl:template>

 <xsl:template match="bibl"><xsl:apply-templates/></xsl:template>



<!--* I think these are all MLang, not TEI Lite 
<xsl:template match="bibItem/bibAuthor|bibitem/bibauthor"/>
<xsl:template match="bibItem/bibYear|bibitem/bibyear"/>

<xsl:template match="bibItem/pub|bibitem/pub">
 <xsl:apply-templates/>
</xsl:template>
<xsl:template match="citedAuthor|citedauthor|citedEditor|citededitor">
 <xsl:apply-templates/>
</xsl:template>
<xsl:template match="bibItem/pub/date|bibitem/pub/date">
 <xsl:apply-templates/>
</xsl:template>
<xsl:template match="articleTitle|articletitle">
 <xsl:text>&#8220;</xsl:text>
 <xsl:apply-templates/>
 <xsl:text>&#8221;</xsl:text>
</xsl:template>
<xsl:template match="bookTitle|booktitle|journalTitle|journaltitle">
 <xsl:element name="i">
  <xsl:apply-templates/>
 </xsl:element>
</xsl:template>
*-->

<!--* Sections and section titles *-->
 <xsl:template match="div[@type='abstract']|div1[@type='abstract']">
  <xsl:element name="div">
   <xsl:attribute name="class">abstract</xsl:attribute>
   <xsl:element name="hr"/>
   <xsl:if test="not(head)">
    <xsl:element name="h2">Abstract</xsl:element>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div0|div1|div2|div3|div4|div5|div6|div7|div">
   &txtnl;
  <xsl:element name="div">
   <xsl:attribute name="class">div</xsl:attribute>
    &txtnl;
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div1/head|body/div/head|back/div/head|front/div/head">
  <xsl:element name="h2">
   <xsl:if test="parent::*[@rend='comment']">
    <xsl:attribute name="class">comment</xsl:attribute>
   </xsl:if>
   <xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="generate-id(..)"/>
    </xsl:attribute>
    <xsl:if test="position() = 1">
     <xsl:if test="ancestor::div0">
      <xsl:number level="single" count="div0" format="I."/>
     </xsl:if>
     <xsl:choose>
      <xsl:when test="ancestor::back">
       <xsl:number level="single" count="div1|div" format="A. "/>
      </xsl:when>
      <xsl:when test="ancestor::front"/>
      <xsl:otherwise><!--* we are in the body *-->
       <xsl:number level="single" count="div1|div" format="1. "/>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:if>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div0/head">
  <xsl:if test="parent::div0[position() > 1]">
   <xsl:element name="hr"/>
  </xsl:if>
  <xsl:element name="h2">
   <xsl:number level="single" count="div0" format="I. "/>
   <xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="generate-id(..)"/>
    </xsl:attribute>
    <xsl:if test="position() = 1">
     <xsl:number level="single" count="div1|div" format="I "/>
    </xsl:if>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div2/head|body/div/div/head">
  <xsl:element name="h3">
   <xsl:if test="parent::*[@rend='comment']">
    <xsl:attribute name="class">comment</xsl:attribute>
   </xsl:if>
   <xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="generate-id(..)"/>
    </xsl:attribute>
    <xsl:if test="ancestor::body and position() = 1">
     <xsl:number level="multiple" count="div1|div2|div" format="1. "/>
    </xsl:if>
    <!--* if we are in back matter or front matter, don't number div2 *-->
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div3/head|body/div/div/div/head">
  <xsl:element name="h4">
   <xsl:if test="parent::*[@rend='comment']">
    <xsl:attribute name="class">comment</xsl:attribute>
   </xsl:if>
   <xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="generate-id(..)"/>
    </xsl:attribute>
    <xsl:if test="ancestor::body">
     <xsl:number level="multiple" count="div1|div2|div3|div" format="1. "/>
    </xsl:if>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div4/head | body/div/div/div/div/head">
  <xsl:element name="h5">
   <xsl:if test="parent::*[@rend='comment']">
    <xsl:attribute name="class">comment</xsl:attribute>
   </xsl:if>
   <xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="generate-id(..)"/>
    </xsl:attribute>
    <xsl:if test="ancestor::body">
     <xsl:number level="multiple" count="div1|div2|div3|div4|div" format="1. "/>
    </xsl:if>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div5/head | body/div/div/div/div/div/head">
  <xsl:element name="h5">
   <xsl:if test="parent::*[@rend='comment']">
    <xsl:attribute name="class">comment</xsl:attribute>
   </xsl:if>
   <xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="generate-id(..)"/>
    </xsl:attribute>
    <xsl:if test="ancestor::body">
     <xsl:number level="multiple" count="div1|div2|div3|div4|div5|div" format="1. "/>
    </xsl:if>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div6/head">
  <xsl:element name="h5">
   <xsl:if test="parent::*[@rend='comment']">
    <xsl:attribute name="class">comment</xsl:attribute>
   </xsl:if>
   <xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="generate-id(..)"/>
    </xsl:attribute>
    <xsl:if test="ancestor::body">
     <xsl:number 
		 level="multiple" 
		 count="div1|div2|div3|div4|div5|div6|div" 
		 format="1. "/>
    </xsl:if>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="div1/head|div2/head|div3/head|div/head" mode="toc">
  <xsl:if test="position() > 1">
   <xsl:text>: </xsl:text>
  </xsl:if>
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="trailer">
  <xsl:element name="div">
   <xsl:attribute name="style">
    <xsl:text>margin-top: 12 pt; font-style: italic</xsl:text>
   </xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>  
 </xsl:template>

 <xsl:template match="opener|closer" priority="1" name="opener-closer">
  <xsl:element name="div">
   <xsl:attribute name="style">
    <xsl:text>margin-top: 12 pt; text-align:right; margin-right: 15%</xsl:text>
   </xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>  
 </xsl:template>

 <xsl:template match="body/opener | body/closer" priority="2">
  <xsl:element name="hr"/>
  <xsl:call-template name="opener-closer"/>
 </xsl:template>

 <xsl:template match="opener/dateline">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="closer/dateline">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="closer/signed">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="closer/signed/name">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="opener/dateline/name">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>  
 </xsl:template>

 <xsl:template match="opener/dateline/date|closer/dateline/date">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>  
 </xsl:template>
 <xsl:template match="opener/dateline/name[@type='place']|closer/dateline/name[@type='place']">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>  
 </xsl:template>

 <!--* Tables *-->
 <xsl:template match="table">
  <xsl:element name="table">
   <xsl:attribute name="border">
    <xsl:choose>
     <xsl:when test='@rend="noborder"'>0</xsl:when>
     <xsl:otherwise>1</xsl:otherwise>
    </xsl:choose>
   </xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="table[@rend='datedlist']">
  <xsl:element name="table">
   <xsl:attribute name="border">0</xsl:attribute>
   <xsl:attribute name="width">100%</xsl:attribute>
    &txtnl;
   <xsl:element name="col">
    <xsl:attribute name="width">8%</xsl:attribute>
    <xsl:attribute name="valign">top</xsl:attribute>
   </xsl:element>
    &txtnl;
   <xsl:element name="col">
    <xsl:attribute name="width">92%</xsl:attribute>
    <xsl:attribute name="valign">top</xsl:attribute>
   </xsl:element>
    &txtnl;
   <xsl:element name="tbody">
    <xsl:apply-templates/>
   </xsl:element>
    &txtnl;
  </xsl:element>
 </xsl:template>
 <xsl:template match="table/head">
  <xsl:element name="caption">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="row">
  <xsl:element name="tr"><xsl:apply-templates/></xsl:element>
 </xsl:template>
 <xsl:template match="cell">
  <xsl:element name="td">
   <xsl:if test="@cols">
    <xsl:attribute name="colspan"><xsl:value-of select="@cols"/></xsl:attribute>
   </xsl:if>
   <xsl:if test="@rows">
    <xsl:attribute name="rowspan"><xsl:value-of select="@rows"/></xsl:attribute>
   </xsl:if>
   <xsl:if test="@rend">
    <xsl:attribute name="class"><xsl:value-of select="@rend"/></xsl:attribute>
   </xsl:if>
   <xsl:if test="@rend='red'">
    <xsl:attribute name="style">color: red;</xsl:attribute>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="cell[@role='label']|row[@role='label']/cell">
  <xsl:element name="th">
   <xsl:if test="@cols">
    <xsl:attribute name="colspan"><xsl:value-of select="@cols"/></xsl:attribute>
   </xsl:if>
   <xsl:if test="@rows">
    <xsl:attribute name="rowspan"><xsl:value-of select="@rows"/></xsl:attribute>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <!--* Paragraphs and chunks *-->
 <xsl:template match="p">
  <xsl:element name="div">
   <xsl:attribute name="class"><xsl:text>Real-P</xsl:text></xsl:attribute>
   <xsl:if test="@rend">
    <xsl:attribute name="class"><xsl:value-of select="@rend"/></xsl:attribute>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="p[@lang='en']" priority="1">
  <xsl:element name="div">
   <xsl:attribute name="class"><xsl:text>Real-P</xsl:text></xsl:attribute>
   <xsl:attribute name="style"><xsl:text>color: blue</xsl:text></xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="note/p[1]">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="figure">
  <xsl:element name="blockquote">
   <xsl:element name="img">
    <xsl:attribute name="src">
     <xsl:value-of select="unparsed-entity-uri(@entity)"/>
    </xsl:attribute>
    <xsl:if test="@rend='large'">
     <xsl:attribute name="width">55%</xsl:attribute>
    </xsl:if>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="figure/title">
  <xsl:element name="div">
   <xsl:element name="b">
    <xsl:apply-templates/>
   </xsl:element>
  </xsl:element>
 </xsl:template>
 <xsl:template match="figure/caption">
  <xsl:element name="div">
   <xsl:attribute name="style">font-size: smaller</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="eg">
  <xsl:element name="pre">
   <xsl:attribute name="style">margin-left: 2em; background-color: #CCD; margin-right: 3em;</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>



 <xsl:template match="note">
  <xsl:element name="div">
   <xsl:attribute name="style">margin-left: 2em; font-size:smaller</xsl:attribute>
   <xsl:text>[</xsl:text>
   <xsl:apply-templates/>
   <xsl:text>]</xsl:text>
  </xsl:element>
 </xsl:template>

 <xsl:template match="note[@place='block']" priority="2">
  <xsl:element name="div">
   <xsl:attribute name="style">margin-left: 2em;</xsl:attribute>
   <xsl:element name="div">
    <xsl:element name="b">NOTE:</xsl:element>
   </xsl:element>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="note[@place='foot']" priority="2">
  <xsl:text>[</xsl:text>
  <xsl:element name="a">
   <xsl:attribute name="name">
    <xsl:text>ref-to-</xsl:text>
    <xsl:value-of select="generate-id(.)"/>
   </xsl:attribute>
   <xsl:attribute name="href">
    <xsl:text>#</xsl:text>
    <xsl:value-of select="generate-id(.)"/>
   </xsl:attribute>
   <xsl:number level="any" count="note[@place='foot']" format="1"/>
  </xsl:element>
  <xsl:text>]</xsl:text>
 </xsl:template>

 <xsl:template match="note[@place='foot']" priority="2" mode="footnotes">
  <xsl:call-template name="footnote"/>
 </xsl:template>

 <xsl:template name="footnote">
  <xsl:element name="div">
   <xsl:attribute name="class">note</xsl:attribute>
   <!--*
  <xsl:attribute name="style">margin-left: 2em; font-size:smaller</xsl:attribute>
   *-->
   <xsl:text>[</xsl:text>
   <xsl:element name="a">
    <xsl:attribute name="name">
     <xsl:value-of select="generate-id(.)"/>
    </xsl:attribute>
    <xsl:attribute name="href">
     <xsl:text>#ref-to-</xsl:text>
     <xsl:value-of select="generate-id(.)"/>
    </xsl:attribute>
    <xsl:number level="any" count="note[@place='foot']" format="1"/>
   </xsl:element>
   <xsl:text>]</xsl:text>
   <xsl:text> </xsl:text>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="sp">
  <xsl:element name="div">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="speaker">
  <xsl:element name="b">
   <xsl:apply-templates/>
  </xsl:element>
  <xsl:text>: </xsl:text>
 </xsl:template>
 <xsl:template match="stage">
  <xsl:if test="preceding-sibling::*[1]/self::stage">
   <xsl:element name="br"/>
  </xsl:if>
  <xsl:text>(</xsl:text>
  <xsl:element name="i">
   <xsl:apply-templates/>
  </xsl:element>
  <xsl:text>)</xsl:text>
 </xsl:template>
 <xsl:template match="lg">
  <xsl:element name="blockquote">
   <xsl:if test="@rend='indent'">
    <xsl:attribute name="style">margin-left: 2em;</xsl:attribute>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="l">
  <xsl:if test="@part='M' or @part='F'">
   <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
   <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
  </xsl:if>
  <xsl:if test="@part='F'"><!--* some more *-->
   <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
   <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
   <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
  </xsl:if>
  <xsl:apply-templates/>
  <xsl:element name="br"/>
 </xsl:template>
 <xsl:template match="l[@rend='indent']">
  <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
  <xsl:apply-templates/>
  <xsl:element name="br"/>
 </xsl:template>
 <xsl:template match="l[@part='F']">
  <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
  <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
  <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
  <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
  <xsl:apply-templates/>
  <xsl:element name="br"/>
 </xsl:template>
 <xsl:template match="ref">
  <xsl:element name="a">
   <xsl:attribute name="href">#<xsl:value-of select="generate-id(id(@target))"/>
   </xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="anchor">
  <xsl:element name="a">
   <xsl:attribute name="name">
    <xsl:value-of select="generate-id(.)"/>
   </xsl:attribute>
  </xsl:element>
 </xsl:template>

 <xsl:template match="@id">
  <xsl:element name="a">
   <xsl:attribute name="name">
    <xsl:value-of select="."/>
   </xsl:attribute>
  </xsl:element>
 </xsl:template>

 <xsl:template match="q[@rend='block']|q[@type='block']">
  <xsl:element name="blockquote">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="q[@rend='comment']|q[@type='comment']">
  <xsl:element name="blockquote">
   <xsl:attribute name="class">comment</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>


 <!--* Lists *-->
 <xsl:template match="list" priority="1">
  <xsl:call-template name="do-list-head"/>
  <xsl:element name="ul"><xsl:apply-templates select="item"/></xsl:element>
 </xsl:template>
 <xsl:template match="list[@type='ordered']" priority="1.5">
  <xsl:call-template name="do-list-head"/>
  <xsl:element name="ol"><xsl:apply-templates select="item"/></xsl:element>
 </xsl:template>
 <xsl:template name="do-list-head">
  <xsl:if test="head">
   <xsl:element name="p"><xsl:element name="b">
     <xsl:apply-templates select="head" mode="list-head"/>
    </xsl:element></xsl:element>
  </xsl:if>
 </xsl:template>
 <xsl:template match="head" mode="list-head">
  <xsl:apply-templates/>
 </xsl:template>


 <xsl:template match="item">
  <xsl:element name="li">
   <xsl:if test="@rend='here'">
    <xsl:attribute name="style">color: blue</xsl:attribute>
    <!--* <xsl:text>&rarr;&nbsp;</xsl:text> *-->
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
  <xsl:text>
  </xsl:text>
 </xsl:template>
 <xsl:template match="item/para[1]">
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="list[@type='simple']" priority="1.5">
  <xsl:call-template name="do-list-head"/>
  <xsl:element name="div">
   <xsl:attribute name="style">margin-left: 2em;</xsl:attribute>
   <xsl:apply-templates select="item"/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="list[@type='simple']/item" priority="1.5">
  <xsl:element name="div">
   <xsl:attribute name="style">margin: 1ex 0 1ex 0;</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
  <xsl:text>
  </xsl:text>
 </xsl:template>

 <!--* Phrase-level elements *-->

 <xsl:template match="q">
  <xsl:text>&ldquo;</xsl:text>
  <xsl:apply-templates/>
  <xsl:text>&rdquo;</xsl:text>
 </xsl:template>

 <xsl:template match="socalled|soCalled">
  <xsl:text>&lsquo;</xsl:text>
  <xsl:apply-templates/>
  <xsl:text>&rsquo;</xsl:text>
 </xsl:template>

 <xsl:template match="term|title|foreign">
  <xsl:element name="em">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="title[@level='a' or @level='u']" priority="1">
  <xsl:text>&ldquo;</xsl:text
   ><xsl:apply-templates
			 /><xsl:text>&rdquo;</xsl:text>
 </xsl:template>

 <xsl:template match="gloss">
  <xsl:text>&lsquo;</xsl:text>
  <xsl:element name="span">
   <xsl:apply-templates/>
  </xsl:element>
  <xsl:text>&rsquo;</xsl:text>
 </xsl:template>

 <xsl:template match="hi">
  <xsl:choose>
   <xsl:when test="@rend='italic'">
    <xsl:element name="i">
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:when>
   <xsl:when test="@rend='bold'">
    <xsl:element name="b">
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:when>
   <xsl:when test="@rend='sup'">
    <xsl:element name="sup">
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:when>
   <xsl:when test="@rend='bigred'">
    <xsl:element name="span">
     <xsl:attribute name="style">
      color: navy;
      font-size: 150%;
     </xsl:attribute>
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:when>
   <xsl:otherwise>
    <xsl:element name="i">
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:otherwise>
  </xsl:choose>
 </xsl:template>
 <xsl:template match="emph">
  <xsl:choose>
   <xsl:when test="@rend='italic'">
    <xsl:element name="i">
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:when>
   <xsl:when test="@rend='bold'">
    <xsl:element name="b">
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:when>
   <xsl:when test="@rend='red'">
    <xsl:element name="span">
     <xsl:attribute name="style">color: red;</xsl:attribute>
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:when>
   <xsl:otherwise>
    <xsl:element name="em">
     <xsl:apply-templates/>
    </xsl:element>
   </xsl:otherwise>
  </xsl:choose>
 </xsl:template>

 <xsl:template match="seg[@id]">
  <xsl:element name="a">
   <xsl:attribute name="name"><xsl:value-of select="generate-id(.)"/></xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 
 <xsl:template match="seg[@rend='red']">
  <xsl:element name="span">
   <xsl:attribute name="style">color: red</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="seg[@rend='decision'] | seg[@rend='proposed'] 
	       | seg[@rend='aye'] | seg[@rend='nay'] | seg[@rend='abstain'] 
	       | seg[@rend='result']
	       | seg[@rend='speaker']">
  <xsl:element name="span">
   <xsl:attribute name="class"><xsl:value-of select="@rend"/></xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="del">
  <xsl:element name="span">
   <xsl:attribute name="style">text-decoration: line-through</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="add">
  <xsl:element name="ins">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="ident|mentioned">
  <xsl:element name="i">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="label">
  <xsl:element name="b">
   <xsl:if test="@id">
    <xsl:element name="a">
     <xsl:attribute name="name">
      <!--* <xsl:value-of select="@id"/> if only it were so simple *-->
      <xsl:value-of select="generate-id(.)"/>
     </xsl:attribute>
    </xsl:element>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="p[@rend='action-discharged']/label" priority="2">
  <xsl:element name="b">
   <xsl:attribute name="style">color: green</xsl:attribute>
   <xsl:if test="@id">
    <xsl:element name="a">
     <xsl:attribute name="name">
      <!--* <xsl:value-of select="@id"/> if only it were so simple *-->
      <xsl:value-of select="generate-id(.)"/>
     </xsl:attribute>
    </xsl:element>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="p[@rend='action-open']/label" priority="2">
  <xsl:element name="b">
   <xsl:attribute name="style">color: red</xsl:attribute>
   <xsl:if test="@id">
    <xsl:element name="a">
     <xsl:attribute name="name">
      <!--* <xsl:value-of select="@id"/> if only it were so simple *-->
      <xsl:value-of select="generate-id(.)"/>
     </xsl:attribute>
    </xsl:element>
   </xsl:if>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="list[@type='glossary']" priority="2">
  <xsl:element name="dl">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="list[@type='glossary']/label" priority="2">
  <xsl:element name="dt">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="list[@type='glossary']/item" priority="2">
  <xsl:element name="dd">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <xsl:template match="code">
  <xsl:element name="tt">
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="kw">
  <xsl:element name="tt">
   <!--* could we force this to small cap or uppercase? *-->
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="gi">
  <xsl:text>&lt;</xsl:text>
  <xsl:element name="em">
   <xsl:apply-templates/>
  </xsl:element>
  <xsl:text>&gt;</xsl:text>
 </xsl:template>

 <xsl:template match="xref">
  <xsl:element name="a">
   <xsl:attribute name="href">
    <xsl:choose>
     <xsl:when test="@doc">
      <xsl:value-of select="unparsed-entity-uri(@doc)"/>
     </xsl:when>
     <xsl:otherwise>
      <xsl:value-of select="."/>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <!--* change priorities here to make pb visible *-->
 <xsl:template match="pb" priority="1"/>
 <xsl:template match="pb" priority="0">
  <xsl:text>[page </xsl:text>
  <xsl:value-of select="@n"/>
  <xsl:text>]</xsl:text>
 </xsl:template>
 <xsl:template match="lb"><xsl:element name="br"/></xsl:template>

 <xsl:template match="p[@rend='flushright']" priority="2">
  <xsl:element name="div">
   <xsl:attribute name="style">text-align: right</xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>

 <!--* ad hoc rules for formatting Melinda Varian's Mother essay *-->
 <xsl:template match="p[@rend='maxim']" priority="2">
  <xsl:element name="table">
   <xsl:attribute name="border">1</xsl:attribute>
   <xsl:attribute name="align">center</xsl:attribute>
   <xsl:attribute name="style">
    font-size: x-large; text-align: center; background-color: #bbbbbb
   </xsl:attribute>
   <xsl:apply-templates/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="p[@rend='maxim']/seg[@rend='rule']">
  <xsl:element name="tr">
   <xsl:element name="td">
    <xsl:attribute name="style">color: red</xsl:attribute>
    <xsl:apply-templates/>
   </xsl:element>
  </xsl:element>
 </xsl:template>
 <xsl:template match="p[@rend='maxim']/seg[@rend='label']">
  <xsl:element name="tr">
   <xsl:element name="td">
    <xsl:apply-templates/>
   </xsl:element>
  </xsl:element>
 </xsl:template>

 <!--* bib refs *-->
 <!--* Quick hack: I don't know how to mirror text yet *-->
 <xsl:template match="bibRef">
  <xsl:text>[</xsl:text>
  <xsl:element name="a">
   <xsl:attribute name="href">
    <xsl:text>#</xsl:text>
    <xsl:value-of select="./@bibItemRef"/>
   </xsl:attribute>
   <xsl:value-of select="./@bibItemRef"/>
  </xsl:element>
  <xsl:text>]</xsl:text>
 </xsl:template>
 <xsl:template match="bibref">
  <xsl:text>[</xsl:text>
  <xsl:element name="a">
   <xsl:attribute name="href">
    <xsl:text>#</xsl:text>
    <xsl:value-of select="./@bibitemref"/>
   </xsl:attribute>
   <xsl:value-of select="./@bibitemref"/>
  </xsl:element>
  <xsl:text>]</xsl:text>
 </xsl:template>

</xsl:stylesheet>