<commit_before><?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:aac="urn:general"
    xmlns:tei="http://www.tei-c.org/ns/1.0"
    xmlns:sru="http://www.loc.gov/zing/srw/"
    xmlns:exist="http://exist.sourceforge.net/NS/exist"
    xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
    version="1.0" 
    exclude-result-prefixes="xsl aac tei sru exist xd">

    <xd:doc scope="stylesheet">
        <xd:desc>
<xd:p>Stylesheet for formatting TEI-elements  inside a FCS/SRU-result.
the TEI-elements are expected without namespace (!) (just local names)
This is not nice, but is currently in results like that.</xd:p>
<xd:p>
The templates are sorted by TEI-elements they match.
if the same transformation applies to multiple elements,
it is extracted into own named-template and called from the matching templates.
the named templates are at the bottom.</xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:include href="data2view_teiHeader.xsl"/>
    <xd:doc scope="component">
        <xd:desc>
            <xd:p>This template generates the CSS classes from any element following the convention:</xd:p>
            <xd:ul>
                <xd:li>namespace prefix (tei) + local name</xd:li>
                <xd:li>if present: namespace prefix + "type" + value of @type</xd:li>
                <xd:li>if present: namespace prefix + "rend" + value of @rend</xd:li>
                <xd:li>if present: namespace prefix + "place" + value of @place</xd:li>
                <xd:li>if present: namespace unit + @unit name + value of @unit</xd:li>
            </xd:ul>
            <xd:p>The various parts of a name are concatenated with hyphens. Blanks in @rend are replaced by underscores.</xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template name="classnames">
        <xsl:value-of select="concat('tei-',local-name(.))"/>
        <xsl:if test="@type">
            <xsl:value-of select="concat(' tei-type-',@type)"/>
        </xsl:if>
        <xsl:if test="@rend">
            <xsl:value-of select="concat(' tei-rend-',translate(@rend,' ','_'))"/>
        </xsl:if>
        <xsl:if test="@place">
            <xsl:value-of select="concat(' tei-place-',@place)"/>
        </xsl:if>
        <xsl:if test="@unit">
            <xsl:value-of select="concat(' tei-unit-',@unit)"/>
        </xsl:if>
    </xsl:template>
    
    <xd:doc>
        <xd:desc>Put TEI content into a div</xd:desc>
    </xd:doc>
    <xsl:template match="TEI | tei:TEI" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
                <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="@xml:id"><xsl:value-of select="concat('tei-TEI ', @xml:id)"/></xsl:when>
                    <xsl:otherwise>tei-TEI</xsl:otherwise>
                </xsl:choose>
                </xsl:attribute>
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>

    <xsl:template match="text | front | back | tei:text | tei:front | tei:back" mode="record-data">
        <div class="tei-{local-name()}">
        <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    
    <xd:doc>
        <xd:desc>Put TEI Header content into a div</xd:desc>
    </xd:doc>
    <xsl:template match="tei:teiHeader" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    <!--<xd:doc>
        <xd:desc>Generate some generelly useful information contained in the TEI header</xd:desc>
    </xd:doc>
    <xsl:template match="tei:fileDesc" mode="record-data">
        <h1>
            <xsl:value-of select="tei:titleStmt/tei:title"/>
        </h1>
        <p class="tei-author">by <xsl:value-of select="tei:author"/>
        </p>
        <p class="tei-publicationStmt">
            <xsl:value-of select="tei:publicationStmt/tei:pubPlace"/>, <xsl:value-of select="tei:publicationStmt/tei:date"/>
        </p>
        <p class="tei-editionStmt">Edition: <xsl:value-of select="tei:editionStmt/tei:edition"/>
        </p>
        <p class="tei-sourceDesc">
            <xsl:for-each select="tei:sourceDesc/tei:p">
                <p>
                    <xsl:value-of select="."/>
                </p>
            </xsl:for-each>
        </p>
        <xsl:choose>
            <xsl:when test="tei:publicationStmt/tei:availability[@status='restricted']">
                <p class="tei-publicationStmt">All rights reserved!</p>
                <xsl:if test="tei:publicationStmt/tei:availability//tei:ref[@type='license']">
                    <p class="tei-ref-license">
                        <a href="{tei:publicationStmt/tei:availability//tei:ref[@type='license']/@target}">License</a>
                    </p>
                </xsl:if>
            </xsl:when>
        </xsl:choose>
    </xsl:template>-->
    <xd:doc>
        <xd:desc>A TEI biblStruct is mapped to a HTML div element</xd:desc>
    </xd:doc>
    <xsl:template match="tei:biblStruct" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:if test="@xml:id">
                <xsl:attribute name="id">
                    <xsl:value-of select="@xml:id"/>
                </xsl:attribute>
            </xsl:if>
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    <xd:doc>
        <xd:desc>Presents monographs
            <xd:p>
                Convention used is:
            </xd:p>
            <xd:p>
                Author, Author, ... : Title, Title, ...
            </xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template match="tei:monogr" mode="record-data">
        <span class="tei-authors"><xsl:apply-templates mode="record-data" select="tei:author"
        /></span><span class="xsl-separator tei-title tei-author">: </span><span class="tei-titles"><xsl:apply-templates mode="record-data"
                select="tei:title"/></span>.<xsl:apply-templates mode="record-data"
            select="tei:imprint"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>Presents dependent publications
            <xd:p>
                Convention used is:
            </xd:p>
            <xd:p>
                Author, Author, ... : Title, Title, ... in -&gt; monogr
            </xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template match="tei:analytic" mode="record-data">
        <span class="tei-authors"><xsl:apply-templates mode="record-data" select="tei:author"
        /></span><span class="xsl-separator tei-title-tei-author-sep">: </span><span class="tei-titles"><xsl:apply-templates mode="record-data"
                select="tei:title"/></span> in </xsl:template>

    <xd:doc>
        <xd:desc>Return text and spacer if needed</xd:desc>
    </xd:doc>
    <xsl:template match="tei:author" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:author"><span class="xsl-separator tei-author-sep">, </span>
        </xsl:if>
    </xsl:template>
    <xd:doc>
        <xd:desc>Return text</xd:desc>
    </xd:doc>
    <xsl:template match="tei:imprint/tei:publisher" mode="record-data">
        <span class="tei-publisher">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:pubPlace">
            <span class="xsl-separator tei-publisher-tei-pubplace-sep">, </span>
        </xsl:if>
    </xsl:template>
    
    <xd:doc>
        <xd:desc>Return text and spacer if needed</xd:desc>
    </xd:doc>
    <xsl:template match="tei:title" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:title"><span class="xsl-separator tei-title-sep">, </span></xsl:if>
    </xsl:template>
    <xd:doc>
        <xd:desc>TEI Imprint as imprint span</xd:desc>
    </xd:doc>
    <xsl:template match="tei:imprint" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </span>.
    </xsl:template>
    <xd:doc>
        <xd:desc>TEI pubPlace as pubPlace span</xd:desc>
    </xd:doc>
    <xsl:template match="tei:imprint/tei:date" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:idno|following-sibling::tei:biblScope">
            <xsl:value-of select="'. '"/>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:idno[@type='issn']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">ISSN: <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">
                <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'vol']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">Volume: <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'issue']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">Issue: <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'pages']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">
                <xsl:value-of select="."/> pages</span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'startPage']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">p. <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xd:doc>
        <xd:desc/>
    </xd:doc>
    <xsl:template match="tei:series" mode="record-data">
        <div class="cs-xsl-error">
            TODO!
        </div>
    </xsl:template>
    <xd:doc>
        <xd:desc>Notes in biblStruct are used to specify index terms</xd:desc>
    </xd:doc>
    <xsl:template match="tei:biblStruct/tei:note" mode="record-data">
        <xsl:apply-templates mode="record-data"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>Notes in biblStruct are used to specify index terms</xd:desc>
    </xd:doc>
    <xsl:template match="tei:biblStruct/tei:note/tei:index" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <ul class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </ul>
    </xsl:template>
    <xsl:template match="tei:index/tei:term" mode="record-data">
        <xsl:variable name="href">
            <xsl:call-template name="formURL">
                <xsl:with-param name="q" select="concat('vicavTaxonomy=', .)"/>
            </xsl:call-template>
        </xsl:variable>
        <li>
            <xsl:choose>
                <xsl:when test="@type = 'vicavTaxonomy'">
                    <a href="{$href}">
                        <xsl:value-of select="."/>
                    </a>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="."/>
                </xsl:otherwise>
            </xsl:choose>
        </li>
    </xsl:template>
    <xd:doc>
        <xd:desc>Ignore the text tag for TEI</xd:desc>
    </xd:doc>
    <xsl:template match="tei:TEI/tei:text" mode="record-data">
        <xsl:apply-templates mode="record-data"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>Put TEI body content into a div</xd:desc>
    </xd:doc>
    <xsl:template match="body | tei:body" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    <xd:doc>
        <xd:desc>A head section is assumed to contain a number of headings
        <xd:p>
            To generate HTML headings from these we use another mode.
        </xd:p>
            
        </xd:desc>
    </xd:doc>
    <!--there is already a template for head
        <xsl:template match="tei:head" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:apply-templates mode="tei-body-headings"/>
        </div>
    </xsl:template>
    <xsl:template match="*" mode="tei-body-headings">
        <h2>
            <xsl:apply-templates mode="record-data"/>
        </h2>
    </xsl:template>-->
    <xsl:template match="tei:ref[contains(@target, '.JPG') or                                   contains(@target, '.jpg') or                                  contains(@target, '.PNG') or                                  contains(@target, '.PNG')]" mode="record-data">
        <!--    <xsl:template match="tei:ref[contains(@target, '.jpg')]" mode="record-data">-->
        <xsl:call-template name="generateImg"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>some special elements retained in data, due to missing correspondencies in tei 
            if it will get more, we should move to separate file</xd:desc>
    </xd:doc>
    <xsl:template match="aac_HYPH1 | aac:HYPH1" mode="record-data">
        <xsl:apply-templates/>
        <xsl:text> </xsl:text>
    </xsl:template>
    <xd:doc>
        <xd:desc>some special elements retained in data, due to missing correspondencies in tei 
            if it will get more, we should move to separate file</xd:desc>
    </xd:doc>
    <xsl:template match="aac_HYPH2  | aac:HYPH2" mode="record-data">
        <xsl:apply-templates/>
        <xsl:text> </xsl:text>
    </xsl:template>
    <xd:doc>
        <xd:desc>some special elements retained in data, due to missing correspondencies in tei 
            if it will get more, we should move to separate file</xd:desc>
    </xd:doc>
    <xsl:template match="aac_HYPH3  | aac:HYPH3" mode="record-data">
        <xsl:apply-templates/>
        <xsl:text> </xsl:text>
    </xsl:template>
    <xd:doc>
        <xd:desc>tei:address elements are mapped to html:address (???) elements
            <xd:p>Suche elements occur in ... </xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template match="address | tei:address" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <address class="{$class}">
            <xsl:if test="tei:street">
                <xsl:value-of select="tei:street"/>
                <br/>
            </xsl:if>
            <xsl:if test="tei:postCode | tei:settlement">
                <xsl:value-of select="tei:postCode"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="tei:settlement"/>
                <br/>
            </xsl:if>
            <xsl:if test="tei:country">
                <xsl:value-of select="tei:country"/>
            </xsl:if>
        </address>
    </xsl:template>
    <xd:doc>
        <xd:desc>tei:bibl elements are (???)
        <xd:p>moved to data2view_teiHeader.xsl</xd:p>
        </xd:desc>
    </xd:doc>
    <!--<xsl:template match="bibl | tei:bibl" mode="record-data">
        <xsl:call-template name="inline"/>
    </xsl:template>-->
    <xsl:template match="tei:birth" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div>
            <span class="label">geboren: </span>
            <span class="{$class}">
                <xsl:if test="@when">
                    <xsl:attribute name="data-when">
                        <xsl:value-of select="@when"/>
                    </xsl:attribute>
                </xsl:if>
                <xsl:value-of select="concat(@when, ', ', tei:placeName)"/>
            </span>
        </div>
    </xsl:template>
    <xsl:template match="tei:birth" mode="record-data">
        <div>
            <span class="label">geboren: </span>
            <span class="{local-name()}" data-when="{@when}">
                <xsl:value-of select="concat(@when, ', ', tei:placeName)"/>
            </span>
        </div>
    </xsl:template>
    
    <xsl:template match="choice | tei:choice " mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </span>
    </xsl:template>
    <xsl:template match="orig | tei:orig | tei:sic | sic" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:call-template name="inline">
                <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
            </xsl:call-template>
        </span>
    </xsl:template>
    <xsl:template match="tei:note|note" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </span>
    </xsl:template>
    <xsl:template match="tei:corr | corr" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <sup>
                <xsl:text>[</xsl:text>
                <xsl:call-template name="inline">
                    <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
                </xsl:call-template>
                <xsl:text>]</xsl:text>
            </sup>
        </span>
    </xsl:template>
    <xsl:template match="tei:supplied | supplied" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <sup>
                <xsl:text>〈</xsl:text>
                <xsl:call-template name="inline">
                    <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
                </xsl:call-template>
                <xsl:text>〉</xsl:text>
            </sup>
        </span>
    </xsl:template>
    <xsl:template match="tei:reg | reg" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <sup>
                <xsl:text>[</xsl:text>
                <xsl:call-template name="inline">
                    <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
                </xsl:call-template>
                <xsl:text>]</xsl:text>
            </sup>
        </span>
    </xsl:template>
    <xsl:template match="orig | tei:orig | tei:sic | sic" mode="record-data">
        <xsl:call-template name="inline">
            <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
        </xsl:call-template>
    </xsl:template>
    
    <xsl:template match="tei:ref|ref|tei:ptr|ptr" mode="record-data"/>

    <xsl:template match="tei:corr | corr" mode="record-data">
        <sup>
            <xsl:text>(</xsl:text>
            <xsl:call-template name="inline">
                <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
            </xsl:call-template>
            <xsl:text>)</xsl:text>
        </sup>
    </xsl:template>
    <xsl:template match="tei:supplied | supplied" mode="record-data">
        <sup>
            <xsl:text>〈</xsl:text>
            <xsl:call-template name="inline">
                <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
            </xsl:call-template>
            <xsl:text>〉</xsl:text>
        </sup>
    </xsl:template>
    <xsl:template match="tei:reg | reg" mode="record-data">
        <sup>
            <xsl:text>[</xsl:text>
            <xsl:call-template name="inline">
                <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
            </xsl:call-template>
            <xsl:text>]</xsl:text>
        </sup>
    </xsl:template>
    
    <xd:doc>
        <xd:desc>tei:cit elements are mapped to html:quote elements<commit_msg>Remove more duplicate templates.<commit_after><?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:aac="urn:general"
    xmlns:tei="http://www.tei-c.org/ns/1.0"
    xmlns:sru="http://www.loc.gov/zing/srw/"
    xmlns:exist="http://exist.sourceforge.net/NS/exist"
    xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
    version="1.0" 
    exclude-result-prefixes="xsl aac tei sru exist xd">

    <xd:doc scope="stylesheet">
        <xd:desc>
<xd:p>Stylesheet for formatting TEI-elements  inside a FCS/SRU-result.
the TEI-elements are expected without namespace (!) (just local names)
This is not nice, but is currently in results like that.</xd:p>
<xd:p>
The templates are sorted by TEI-elements they match.
if the same transformation applies to multiple elements,
it is extracted into own named-template and called from the matching templates.
the named templates are at the bottom.</xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:include href="data2view_teiHeader.xsl"/>
    <xd:doc scope="component">
        <xd:desc>
            <xd:p>This template generates the CSS classes from any element following the convention:</xd:p>
            <xd:ul>
                <xd:li>namespace prefix (tei) + local name</xd:li>
                <xd:li>if present: namespace prefix + "type" + value of @type</xd:li>
                <xd:li>if present: namespace prefix + "rend" + value of @rend</xd:li>
                <xd:li>if present: namespace prefix + "place" + value of @place</xd:li>
                <xd:li>if present: namespace unit + @unit name + value of @unit</xd:li>
            </xd:ul>
            <xd:p>The various parts of a name are concatenated with hyphens. Blanks in @rend are replaced by underscores.</xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template name="classnames">
        <xsl:value-of select="concat('tei-',local-name(.))"/>
        <xsl:if test="@type">
            <xsl:value-of select="concat(' tei-type-',@type)"/>
        </xsl:if>
        <xsl:if test="@rend">
            <xsl:value-of select="concat(' tei-rend-',translate(@rend,' ','_'))"/>
        </xsl:if>
        <xsl:if test="@place">
            <xsl:value-of select="concat(' tei-place-',@place)"/>
        </xsl:if>
        <xsl:if test="@unit">
            <xsl:value-of select="concat(' tei-unit-',@unit)"/>
        </xsl:if>
    </xsl:template>
    
    <xd:doc>
        <xd:desc>Put TEI content into a div</xd:desc>
    </xd:doc>
    <xsl:template match="TEI | tei:TEI" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
                <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="@xml:id"><xsl:value-of select="concat('tei-TEI ', @xml:id)"/></xsl:when>
                    <xsl:otherwise>tei-TEI</xsl:otherwise>
                </xsl:choose>
                </xsl:attribute>
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>

    <xsl:template match="text | front | back | tei:text | tei:front | tei:back" mode="record-data">
        <div class="tei-{local-name()}">
        <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    
    <xd:doc>
        <xd:desc>Put TEI Header content into a div</xd:desc>
    </xd:doc>
    <xsl:template match="tei:teiHeader" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    <!--<xd:doc>
        <xd:desc>Generate some generelly useful information contained in the TEI header</xd:desc>
    </xd:doc>
    <xsl:template match="tei:fileDesc" mode="record-data">
        <h1>
            <xsl:value-of select="tei:titleStmt/tei:title"/>
        </h1>
        <p class="tei-author">by <xsl:value-of select="tei:author"/>
        </p>
        <p class="tei-publicationStmt">
            <xsl:value-of select="tei:publicationStmt/tei:pubPlace"/>, <xsl:value-of select="tei:publicationStmt/tei:date"/>
        </p>
        <p class="tei-editionStmt">Edition: <xsl:value-of select="tei:editionStmt/tei:edition"/>
        </p>
        <p class="tei-sourceDesc">
            <xsl:for-each select="tei:sourceDesc/tei:p">
                <p>
                    <xsl:value-of select="."/>
                </p>
            </xsl:for-each>
        </p>
        <xsl:choose>
            <xsl:when test="tei:publicationStmt/tei:availability[@status='restricted']">
                <p class="tei-publicationStmt">All rights reserved!</p>
                <xsl:if test="tei:publicationStmt/tei:availability//tei:ref[@type='license']">
                    <p class="tei-ref-license">
                        <a href="{tei:publicationStmt/tei:availability//tei:ref[@type='license']/@target}">License</a>
                    </p>
                </xsl:if>
            </xsl:when>
        </xsl:choose>
    </xsl:template>-->
    <xd:doc>
        <xd:desc>A TEI biblStruct is mapped to a HTML div element</xd:desc>
    </xd:doc>
    <xsl:template match="tei:biblStruct" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:if test="@xml:id">
                <xsl:attribute name="id">
                    <xsl:value-of select="@xml:id"/>
                </xsl:attribute>
            </xsl:if>
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    <xd:doc>
        <xd:desc>Presents monographs
            <xd:p>
                Convention used is:
            </xd:p>
            <xd:p>
                Author, Author, ... : Title, Title, ...
            </xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template match="tei:monogr" mode="record-data">
        <span class="tei-authors"><xsl:apply-templates mode="record-data" select="tei:author"
        /></span><span class="xsl-separator tei-title tei-author">: </span><span class="tei-titles"><xsl:apply-templates mode="record-data"
                select="tei:title"/></span>.<xsl:apply-templates mode="record-data"
            select="tei:imprint"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>Presents dependent publications
            <xd:p>
                Convention used is:
            </xd:p>
            <xd:p>
                Author, Author, ... : Title, Title, ... in -&gt; monogr
            </xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template match="tei:analytic" mode="record-data">
        <span class="tei-authors"><xsl:apply-templates mode="record-data" select="tei:author"
        /></span><span class="xsl-separator tei-title-tei-author-sep">: </span><span class="tei-titles"><xsl:apply-templates mode="record-data"
                select="tei:title"/></span> in </xsl:template>

    <xd:doc>
        <xd:desc>Return text and spacer if needed</xd:desc>
    </xd:doc>
    <xsl:template match="tei:author" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:author"><span class="xsl-separator tei-author-sep">, </span>
        </xsl:if>
    </xsl:template>
    <xd:doc>
        <xd:desc>Return text</xd:desc>
    </xd:doc>
    <xsl:template match="tei:imprint/tei:publisher" mode="record-data">
        <span class="tei-publisher">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:pubPlace">
            <span class="xsl-separator tei-publisher-tei-pubplace-sep">, </span>
        </xsl:if>
    </xsl:template>
    
    <xd:doc>
        <xd:desc>Return text and spacer if needed</xd:desc>
    </xd:doc>
    <xsl:template match="tei:title" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:title"><span class="xsl-separator tei-title-sep">, </span></xsl:if>
    </xsl:template>
    <xd:doc>
        <xd:desc>TEI Imprint as imprint span</xd:desc>
    </xd:doc>
    <xsl:template match="tei:imprint" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </span>.
    </xsl:template>
    <xd:doc>
        <xd:desc>TEI pubPlace as pubPlace span</xd:desc>
    </xd:doc>
    <xsl:template match="tei:imprint/tei:date" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:value-of select="."/>
        </span>
        <xsl:if test="following-sibling::tei:idno|following-sibling::tei:biblScope">
            <xsl:value-of select="'. '"/>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:idno[@type='issn']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">ISSN: <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">
                <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'vol']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">Volume: <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'issue']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">Issue: <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'pages']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">
                <xsl:value-of select="."/> pages</span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template match="tei:biblScope[@type = 'startPage']" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <xsl:if test=". != ''">
            <span class="{$class}">p. <xsl:value-of select="."/>
            </span>
            <xsl:if test="following-sibling::tei:biblScope">
                <xsl:value-of select="', '"/>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xd:doc>
        <xd:desc/>
    </xd:doc>
    <xsl:template match="tei:series" mode="record-data">
        <div class="cs-xsl-error">
            TODO!
        </div>
    </xsl:template>
    <xd:doc>
        <xd:desc>Notes in biblStruct are used to specify index terms</xd:desc>
    </xd:doc>
    <xsl:template match="tei:biblStruct/tei:note" mode="record-data">
        <xsl:apply-templates mode="record-data"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>Notes in biblStruct are used to specify index terms</xd:desc>
    </xd:doc>
    <xsl:template match="tei:biblStruct/tei:note/tei:index" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <ul class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </ul>
    </xsl:template>
    <xsl:template match="tei:index/tei:term" mode="record-data">
        <xsl:variable name="href">
            <xsl:call-template name="formURL">
                <xsl:with-param name="q" select="concat('vicavTaxonomy=', .)"/>
            </xsl:call-template>
        </xsl:variable>
        <li>
            <xsl:choose>
                <xsl:when test="@type = 'vicavTaxonomy'">
                    <a href="{$href}">
                        <xsl:value-of select="."/>
                    </a>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="."/>
                </xsl:otherwise>
            </xsl:choose>
        </li>
    </xsl:template>
    <xd:doc>
        <xd:desc>Ignore the text tag for TEI</xd:desc>
    </xd:doc>
    <xsl:template match="tei:TEI/tei:text" mode="record-data">
        <xsl:apply-templates mode="record-data"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>Put TEI body content into a div</xd:desc>
    </xd:doc>
    <xsl:template match="body | tei:body" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </div>
    </xsl:template>
    <xd:doc>
        <xd:desc>A head section is assumed to contain a number of headings
        <xd:p>
            To generate HTML headings from these we use another mode.
        </xd:p>
            
        </xd:desc>
    </xd:doc>
    <!--there is already a template for head
        <xsl:template match="tei:head" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div class="{$class}">
            <xsl:apply-templates mode="tei-body-headings"/>
        </div>
    </xsl:template>
    <xsl:template match="*" mode="tei-body-headings">
        <h2>
            <xsl:apply-templates mode="record-data"/>
        </h2>
    </xsl:template>-->
    <xsl:template match="tei:ref[contains(@target, '.JPG') or                                   contains(@target, '.jpg') or                                  contains(@target, '.PNG') or                                  contains(@target, '.PNG')]" mode="record-data">
        <!--    <xsl:template match="tei:ref[contains(@target, '.jpg')]" mode="record-data">-->
        <xsl:call-template name="generateImg"/>
    </xsl:template>
    <xd:doc>
        <xd:desc>some special elements retained in data, due to missing correspondencies in tei 
            if it will get more, we should move to separate file</xd:desc>
    </xd:doc>
    <xsl:template match="aac_HYPH1 | aac:HYPH1" mode="record-data">
        <xsl:apply-templates/>
        <xsl:text> </xsl:text>
    </xsl:template>
    <xd:doc>
        <xd:desc>some special elements retained in data, due to missing correspondencies in tei 
            if it will get more, we should move to separate file</xd:desc>
    </xd:doc>
    <xsl:template match="aac_HYPH2  | aac:HYPH2" mode="record-data">
        <xsl:apply-templates/>
        <xsl:text> </xsl:text>
    </xsl:template>
    <xd:doc>
        <xd:desc>some special elements retained in data, due to missing correspondencies in tei 
            if it will get more, we should move to separate file</xd:desc>
    </xd:doc>
    <xsl:template match="aac_HYPH3  | aac:HYPH3" mode="record-data">
        <xsl:apply-templates/>
        <xsl:text> </xsl:text>
    </xsl:template>
    <xd:doc>
        <xd:desc>tei:address elements are mapped to html:address (???) elements
            <xd:p>Suche elements occur in ... </xd:p>
        </xd:desc>
    </xd:doc>
    <xsl:template match="address | tei:address" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <address class="{$class}">
            <xsl:if test="tei:street">
                <xsl:value-of select="tei:street"/>
                <br/>
            </xsl:if>
            <xsl:if test="tei:postCode | tei:settlement">
                <xsl:value-of select="tei:postCode"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="tei:settlement"/>
                <br/>
            </xsl:if>
            <xsl:if test="tei:country">
                <xsl:value-of select="tei:country"/>
            </xsl:if>
        </address>
    </xsl:template>
    <xd:doc>
        <xd:desc>tei:bibl elements are (???)
        <xd:p>moved to data2view_teiHeader.xsl</xd:p>
        </xd:desc>
    </xd:doc>
    <!--<xsl:template match="bibl | tei:bibl" mode="record-data">
        <xsl:call-template name="inline"/>
    </xsl:template>-->
    <xsl:template match="tei:birth" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <div>
            <span class="label">geboren: </span>
            <span class="{$class}">
                <xsl:if test="@when">
                    <xsl:attribute name="data-when">
                        <xsl:value-of select="@when"/>
                    </xsl:attribute>
                </xsl:if>
                <xsl:value-of select="concat(@when, ', ', tei:placeName)"/>
            </span>
        </div>
    </xsl:template>
    <xsl:template match="tei:birth" mode="record-data">
        <div>
            <span class="label">geboren: </span>
            <span class="{local-name()}" data-when="{@when}">
                <xsl:value-of select="concat(@when, ', ', tei:placeName)"/>
            </span>
        </div>
    </xsl:template>
    
    <xsl:template match="choice | tei:choice " mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </span>
    </xsl:template>
    <xsl:template match="orig | tei:orig | tei:sic | sic" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:call-template name="inline">
                <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
            </xsl:call-template>
        </span>
    </xsl:template>
    <xsl:template match="tei:note|note" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <xsl:apply-templates mode="record-data"/>
        </span>
    </xsl:template>
    <xsl:template match="tei:corr | corr" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <sup>
                <xsl:text>[</xsl:text>
                <xsl:call-template name="inline">
                    <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
                </xsl:call-template>
                <xsl:text>]</xsl:text>
            </sup>
        </span>
    </xsl:template>
    <xsl:template match="tei:supplied | supplied" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <sup>
                <xsl:text>〈</xsl:text>
                <xsl:call-template name="inline">
                    <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
                </xsl:call-template>
                <xsl:text>〉</xsl:text>
            </sup>
        </span>
    </xsl:template>
    <xsl:template match="tei:reg | reg" mode="record-data">
        <xsl:variable name="class">
            <xsl:call-template name="classnames"/>
        </xsl:variable>
        <span class="{$class}">
            <sup>
                <xsl:text>[</xsl:text>
                <xsl:call-template name="inline">
                    <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
                </xsl:call-template>
                <xsl:text>]</xsl:text>
            </sup>
        </span>
    </xsl:template>
    <xsl:template match="orig | tei:orig | tei:sic | sic" mode="record-data">
        <xsl:call-template name="inline">
            <xsl:with-param name="insertTrailingBlank" select="not(ancestor::*[local-name(.) = 'TEI']//*[local-name(.) = 'seg' and @type='whitespace'])"/>
        </xsl:call-template>
    </xsl:template>
    
    <xsl:template match="tei:ref|ref|tei:ptr|ptr" mode="record-data"/>
    
    <xd:doc>
        <xd:desc>tei:cit elements are mapped to html:quote elements
{'fraction_non_alphanumeric': 0.18263783259484603, 'fraction_numerical': 0.0012785750501510041, 'mean_word_length': 2.123381988432939, 'pattern_counts': {'":': 0, '<': 1212, '<?xml version=': 2, '>': 1212, 'https://': 0, 'lorem ipsum': 0, 'www.': 10, 'xml': 26}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2719046', 'n_tokens_mistral': 15492, 'n_tokens_neox': 14399, 'n_words': 2569}