BetweenPageBreaks

This stylesheet iteratively transforms the content between two page breaks in TEI to generate an HTML output that is put in a specific file (one output per page), with the purpose of creating a navigation allowing one to browse through pages.

The work has been done under my supervision by Solenne Coutagne, Master student at Ecole Naitonal des Chartes.

Laurent Romary

 <!DOCTYPE xsl:stylesheet [<!ENTITY nbsp "&#160;">]> 





    Deutsch  English     <img src="../../humboldt.jpg" alt="Humboldt Universität zu Berlin"/> </a> <li> FRANZOSEN IN                           BERLIN</a> </li> <li> WISSENCHAFT &amp; POLITIK</a> </li> <li> ROMANTISCHE SCHLÜSSELTEXTE</a> </li> <li> FREITAG-GESELLSCHAFT</a> </li> <li> TIECKIANA</a> </li> </ul> <li> Editorische Richtlinien</a> </li> <li> Briefe</a> <ul> <li> nach Jahr</a> </li> <li> nach Ort</a> </li> <li> nach Besitzer</a> </li> <li> nach Absender</a> </li> <li> nach Adressat</a> </li> </ul> </li> <li> Suche</a> <ul> <li> Einfache Suche</a> </li> <li> Erweiterte Suche</a> </li> </ul> </li> <li> Kontakt</a> </li> <li> <a class="item_menu" href="">Aktuell</a> </li> </ul> <a href="javascript:DivStatus( 'mondiv', '1' )"> <xsl:value-of select="normalize-space(//tei:titleStmt/tei:title)"/> </a> <xsl:for-each select="//tei:respStmt"> <xsl:value-of select="concat(tei:resp, ': ', tei:persName | tei:orgName)"/> </xsl:for-each> <xsl:if test="//tei:msIdentifier/tei:institution"> <xsl:choose> <xsl:when test="//tei:institution/following-sibling::node"> <xsl:value-of select="concat(//tei:msIdentifier/tei:institution, ',')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat(//tei:msIdentifier/tei:institution, '.')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:if test="//tei:msIdentifier/tei:repository"> <xsl:choose> <xsl:when test="//tei:repository/following-sibling::node"> <xsl:value-of select="concat(//tei:msIdentifier/tei:repository, ',')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat(//tei:msIdentifier/tei:repository, '.')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:if test="//tei:msIdentifier/tei:collection"> <xsl:choose> <xsl:when test="//tei:collection/following-sibling::node"> <xsl:value-of select="concat(//tei:msIdentifier/tei:collection, ',')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat(//tei:msIdentifier/tei:collection, '.')"/> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:if test="//tei:msIdentifier/tei:idno"> <xsl:value-of select="concat(//tei:msIdentifier/tei:idno, '.')"/> </xsl:if> </xsl:template>

<xsl:template name="structure"> <xsl:param name="output"/> <xsl:value-of select="normalize-space(//tei:titleStmt/tei:title)"/> <link rel="stylesheet" type="text/css" href="../../test.css"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <script type="text/javascript" src="../../mojozoom.js"/> <script src="FancyZoom 1.1/js-global/FancyZoom.js" type="text/javascript"/> <script src="FancyZoom 1.1/js-global/FancyZoomHTML.js" type="text/javascript"/> <script src="../../cachediv.js" type="text/javascript"/> <body onload="initialize"> <xsl:call-template name="menu"/> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="@facs"/> </xsl:attribute> <xsl:element name="img"> <xsl:attribute name="src"> <xsl:value-of select="concat(substring-before(@facs, '.jpg'), 'k', '.jpg')"/> </xsl:attribute> <xsl:attribute name="data-zoomsrc"> <xsl:value-of select="@facs"/> </xsl:attribute> <xsl:attribute name="alt"> <xsl:value-of select="bild"/> </xsl:attribute> </xsl:element> </xsl:element> <p class="type_transcription"> <a href="xml.html" class="item_menu">XML-Datei </a> <p class="type_transcription"> <a href="page_{@n}_korrigiert.html" class="item_menu"> Kritisch</a> <p class="type_transcription"> <a href="page_{@n}_urtext.html" class="item_menu">Diplomatisch</a> <xsl:variable name="letzte_seite" select="preceding::tei:pb[1]"/> <xsl:if test="$letzte_seite"> <xsl:choose> <xsl:when test="$output='urtext'"> <a href="page_{$letzte_seite/@n}_urtext.html">[Seite <xsl:value-of select="$letzte_seite/@n"/>] </a> </xsl:when> <xsl:when test="$output='korrigiert'"> <a href="page_{$letzte_seite/@n}_korrigiert.html">[Seite <xsl:value-of select="$letzte_seite/@n"/>] </a> </xsl:when> </xsl:choose> </xsl:if> <xsl:apply-templates select="//tei:body"> <xsl:with-param name="anfang" select="."/> <xsl:with-param name="ende" select="following::tei:pb[1]"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> <xsl:variable name="naechste_seite" select="following::tei:pb[1]"/> <xsl:if test="$naechste_seite"> <xsl:choose> <xsl:when test="$output='urtext'"> <a href="page_{$naechste_seite/@n}_urtext.html">[Seite <xsl:value-of select="$naechste_seite/@n"/>] </a> </xsl:when> <xsl:when test="$output='korrigiert'"> <a href="page_{$naechste_seite/@n}_korrigiert.html">[Seite <xsl:value-of select="$naechste_seite/@n"/>] </a> </xsl:when> </xsl:choose> </xsl:if> </xsl:template>

<xsl:template match="/"> <xsl:for-each select="//tei:pb"> <xsl:result-document method="html" href="page_{@n}_urtext.html"> <xsl:call-template name="structure"> <xsl:with-param name="output" select="'urtext'"/> </xsl:call-template> </xsl:result-document> </xsl:for-each> <xsl:for-each select="//tei:pb"> <xsl:result-document method="html" href="page_{@n}_korrigiert.html"> <xsl:call-template name="structure"> <xsl:with-param name="output" select="'korrigiert'"/> </xsl:call-template> </xsl:result-document> </xsl:for-each> <xsl:result-document method="html" href="xml.html"> <xsl:value-of select="normalize-space(//tei:titleStmt/tei:title)"/> <link rel="stylesheet" type="text/css" href="../../test.css"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <xsl:call-template name="menu"/> <xsl:for-each select="//tei:pb"> <xsl:attribute name="src"> <xsl:value-of select="concat(substring-before(@facs, '.jpg'), 'k', '.jpg')" />                               </xsl:attribute> </xsl:for-each> <p class="type_transcription"> <a href="xml.html">XML-Datei</a> <p class="type_transcription"> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="concat('page_', //tei:div[@type='transkription']/*[1]/@n, '_korrigiert.html')" />                                   </xsl:attribute> <xsl:text>Kritisch</xsl:text> </xsl:element> <p class="type_transcription"> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="concat('page_', //tei:div[@type='transkription']/*[1]/@n, '_urtext.html')" />                                   </xsl:attribute> <xsl:text>Diplomatisch</xsl:text> </xsl:element> <xsl:apply-templates select="." mode="xmlverb"/> </xsl:result-document> </xsl:template>

<xsl:template match="text"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:value-of select="."/> </xsl:if> </xsl:template>

<xsl:template match="tei:p"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:if> </xsl:template>

<xsl:template match="tei:lb"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> </xsl:if> </xsl:template>

<xsl:template name="rendition"> <xsl:param name="rend"/> <xsl:if test="$rend != ''"> <xsl:attribute name="class"> <xsl:for-each select="tokenize($rend, '\s')"> <xsl:value-of select="concat(substring-after(., '#'), ' ')"/> <xsl:if test="position != last"/> </xsl:for-each> </xsl:attribute> </xsl:if> </xsl:template>

<xsl:template match="//tei:add[not(ancestor::tei:subst)]"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:choose><xsl:when test="$output='urtext'"> <xsl:call-template name="rendition"> <xsl:with-param name="rend" select="@rendition"/> </xsl:call-template> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> <xsl:template match="tei:subst/tei:add"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:if test="$output='urtext'"> <xsl:choose> <xsl:when test="@place='above'"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> </xsl:apply-templates> </xsl:when> <xsl:when test="@place='below'"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> </xsl:apply-templates> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:if test="$output='korrigiert'"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> </xsl:apply-templates> </xsl:if> </xsl:if> </xsl:template> <xsl:template match="tei:del"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:if test="$output='urtext'"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> </xsl:apply-templates> </xsl:if> </xsl:if> </xsl:template>

<xsl:template match="//tei:hi[@rend='underline']"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:choose> <xsl:when test="$output='urtext'"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="korrigiert"/> </xsl:apply-templates> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> <xsl:template match="tei:hi[@rend='italic']"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <i> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </i> </xsl:if> </xsl:template>

<xsl:template match="tei:dateline"> <xsl:param name="output"/> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:choose> <xsl:when test="//tei:dateline[@rendition] and $output='urtext'"> <xsl:call-template name="rendition"> <xsl:with-param name="rend" select="@rendition"/> </xsl:call-template> <xsl:apply-templates select="tei:settlement"> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates>  <xsl:apply-templates select="tei:date"> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="tei:settlement"> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates>  <xsl:apply-templates select="tei:date"> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template>

<xsl:template match="tei:salute | tei:signed"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:choose> <xsl:when test="//tei:dateline[@rendition] and $output='urtext'"> <xsl:call-template name="rendition"> <xsl:with-param name="rend" select="@rendition"/> </xsl:call-template> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template>

<xsl:template match="tei:gap"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:text>[...]</xsl:text> </xsl:if> </xsl:template> <xsl:template match="tei:unclear"> <xsl:param name="output"/> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:value-of select="concat('[', normalize-space(.), ']')"/> </xsl:if> </xsl:template>

<xsl:template match="//tei:expan | //tei:reg | //tei:corr"> <xsl:param name="output"/> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:if test="$output='korrigiert'"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> </xsl:apply-templates> </xsl:if> </xsl:if> </xsl:template>

<xsl:template match="//tei:abbr | //tei:orig | //tei:sic"> <xsl:param name="output"/> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:if test="$output='urtext'"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> </xsl:apply-templates> </xsl:if> </xsl:if> </xsl:template>

<xsl:template match="tei:note[not(@resp)]"> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:param name="output"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <xsl:apply-templates> <xsl:with-param name="anfang" select="$anfang"/> <xsl:with-param name="ende" select="$ende"/> <xsl:with-param name="output" select="$output"/> </xsl:apply-templates> </xsl:if> </xsl:template>

<xsl:template match="tei:note[@resp]"> <xsl:param name="output"/> <xsl:param name="anfang"/> <xsl:param name="ende"/> <xsl:if test="not(following::tei:pb[@n=$anfang/@n]) and not(preceding::tei:pb[@n=$ende/@n])"> <a class="info_anmerkung" href="#"> <xsl:value-of select="count(preceding::tei:note) + 1"/> <xsl:value-of select=".[@xml:id]"/> </a>

</xsl:if> </xsl:template>

</xsl:stylesheet>