From 014359630efcf2aa2f3e0103075fe66fec9e90e5 Mon Sep 17 00:00:00 2001
From: Martin de la Iglesia <iglesia@hab.de>
Date: Thu, 29 Aug 2024 11:20:37 +0000
Subject: [PATCH] Upload New File

---
 stammb_psn2html_einzeldateien.xsl | 361 ++++++++++++++++++++++++++++++
 1 file changed, 361 insertions(+)
 create mode 100644 stammb_psn2html_einzeldateien.xsl

diff --git a/stammb_psn2html_einzeldateien.xsl b/stammb_psn2html_einzeldateien.xsl
new file mode 100644
index 0000000..0136ffb
--- /dev/null
+++ b/stammb_psn2html_einzeldateien.xsl
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Dieses Stylesheet ist Teil von
+
+Philipp Hainhofer: Das Große Stammbuch. Kommentierte digitale Edition eines bedeutenden Album Amicorum aus der Zeit um 1600 [Wolfenbütteler Digitale Editionen, Nr. 6], herausgegeben, transkribiert, übersetzt und kommentiert von Sabine Jagodzinski, Wolfenbüttel: Herzog August Bibliothek 2024, https://stammbuch.hab.de/stammbuch
+
+und wurde erstellt von Martin de la Iglesia (iglesia@hab.de).
+
+Es erzeugt für jeden Eintrag in der TEI/XML-Datei des Personenregisters jeweils eine XHTML-Datei. -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xhtml="http://www.w3.org/1999/xhtml" exclude-result-prefixes="#all" version="2.0" xpath-default-namespace="http://www.tei-c.org/ns/1.0">
+    <xsl:output method="xhtml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
+    
+    <xsl:variable name="psnpfad"></xsl:variable>
+    <xsl:variable name="outputpfad">personen/</xsl:variable>
+    <xsl:variable name="psnclasspath">../klassifikation-zum-personenregister</xsl:variable>
+    <xsl:variable name="biblpfad">../../informationen-zur-edition/bibliographie/</xsl:variable>
+    <xsl:variable name="stammbuchpfad">stammbuch#</xsl:variable>
+    
+    <xsl:template match="/">
+        <xsl:apply-templates select="//person"/>        
+    </xsl:template>
+    
+    <xsl:template match="person">
+        <xsl:result-document href="{$outputpfad}{@xml:id}.xhtml">
+            <html xmlns="http://www.w3.org/1999/xhtml">
+                <head>
+                    <meta name="publisher" content="Herzog August Bibliothek Wolfenbüttel"/>
+                    <link rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/de/"/>
+                    <title><xsl:choose>
+                        <xsl:when test="persName[@type='preferred']/term/forename and persName[@type='preferred']/term/surname ">
+                            <xsl:value-of select="persName[@type='preferred']/term/forename"/><xsl:text> </xsl:text><xsl:value-of select="persName[@type='preferred']/term/surname"/>
+                            
+                        </xsl:when>
+                        <xsl:when test="persName[@type='preferred']/term/name">
+                            <xsl:value-of select="persName[@type='preferred']/term/name"/>
+                        </xsl:when>
+                    </xsl:choose></title>                    
+                </head>
+                <body>
+                    <h1 class="prefname"><xsl:choose>
+                        <xsl:when test="persName[@type='preferred']/term/forename and persName[@type='preferred']/term/surname ">
+                            <xsl:value-of select="persName[@type='preferred']/term/forename"/><xsl:text> </xsl:text><xsl:value-of select="persName[@type='preferred']/term/surname"/>
+                            
+                        </xsl:when>
+                        <xsl:when test="persName[@type='preferred']/term/name">
+                            <xsl:value-of select="persName[@type='preferred']/term/name"/>
+                        </xsl:when>
+                    </xsl:choose></h1>
+                    <xsl:if test="birth/@when-iso or birth/@notBefore-iso or death/@when-iso or death/@notBefore-iso">
+                        <div class="birthdeath">
+                            <p>
+                                <xsl:if test="birth/@*">
+                                    <xsl:text>* </xsl:text>
+                                </xsl:if>
+                                <xsl:if test="birth/@precision eq 'low' and birth/@when-iso">
+                                    <xsl:text>ca. </xsl:text>
+                                </xsl:if>
+                                <xsl:choose>
+                                    <xsl:when test="birth/@when-iso">
+                                        <xsl:choose>
+                                            <xsl:when test="substring(birth/@when-iso, 1, 1) = '-'">
+                                                <xsl:value-of select="number(substring-after(birth/@when-iso, '-')) + 1"/>
+                                                <xsl:text> v. Chr.</xsl:text>
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                <xsl:value-of select="number(birth/@when-iso)"/>
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    </xsl:when>
+                                    <xsl:when test="birth/@notBefore-iso and birth/@notAfter-iso">
+                                        <xsl:text>zwischen </xsl:text>
+                                        <xsl:if test="birth/@precision eq 'low'">
+                                            <xsl:text>ca. </xsl:text>
+                                        </xsl:if>
+                                        <xsl:choose>
+                                            <xsl:when test="substring(birth/@notBefore-iso, 1, 1) = '-'">
+                                                <xsl:value-of select="number(substring-after(birth/@notBefore-iso, '-')) + 1"/>
+                                                <xsl:if test="substring(birth/@notAfter-iso, 1, 1) != '-'">
+                                                    <xsl:text> v. Chr.</xsl:text>
+                                                </xsl:if>
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                <xsl:value-of select="number(birth/@notBefore-iso)"/>
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                        <xsl:text> und </xsl:text>
+                                        <xsl:choose>
+                                            <xsl:when test="substring(birth/@notAfter-iso, 1, 1) = '-'">
+                                                <xsl:value-of select="number(substring-after(birth/@notAfter-iso, '-')) + 1"/>
+                                                <xsl:text> v. Chr.</xsl:text>
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                <xsl:value-of select="number(birth/@notAfter-iso)"/>
+                                                <xsl:if test="substring(birth/@notBefore-iso, 1, 1) = '-'">
+                                                    <xsl:text> n. Chr.</xsl:text>
+                                                </xsl:if>
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    </xsl:when>
+                                    <xsl:otherwise/>                                    
+                                </xsl:choose>  
+                                <xsl:if test="birth/@*">
+                                    <br/>
+                                </xsl:if>
+                                <xsl:if test="death/@*">                                    
+                                    <xsl:text>✝ </xsl:text>
+                                </xsl:if>
+                                <xsl:if test="death/@precision eq 'low' and death/@when-iso">
+                                    <xsl:text>ca. </xsl:text>
+                                </xsl:if>
+                                
+                                <xsl:choose>
+                                    <xsl:when test="death/@when-iso">
+                                        <xsl:choose>
+                                            <xsl:when test="substring(death/@when-iso, 1, 1) = '-'">
+                                                <xsl:value-of select="number(substring-after(death/@when-iso, '-')) + 1"/>
+                                                <xsl:text> v. Chr.</xsl:text>
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                <xsl:value-of select="number(death/@when-iso)"/>
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    </xsl:when>
+                                    <xsl:when test="death/@notBefore-iso and death/@notAfter-iso">
+                                        <xsl:text>zwischen </xsl:text>
+                                        <xsl:if test="death/@precision eq 'low'">
+                                            <xsl:text>ca. </xsl:text>
+                                        </xsl:if>
+                                        <xsl:choose>
+                                            <xsl:when test="substring(death/@notBefore-iso, 1, 1) = '-'">
+                                                <xsl:value-of select="number(substring-after(death/@notBefore-iso, '-')) + 1"/>
+                                                <xsl:if test="substring(death/@notAfter-iso, 1, 1) != '-'">
+                                                    <xsl:text> v. Chr.</xsl:text>
+                                                </xsl:if>
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                <xsl:value-of select="number(death/@notBefore-iso)"/>
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                        <xsl:text> und </xsl:text>
+                                        <xsl:choose>
+                                            <xsl:when test="substring(death/@notAfter-iso, 1, 1) = '-'">
+                                                <xsl:value-of select="number(substring-after(death/@notAfter-iso, '-')) + 1"/>
+                                                <xsl:text> v. Chr.</xsl:text>
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                <xsl:value-of select="number(death/@notAfter-iso)"/>
+                                                <xsl:if test="substring(death/@notBefore-iso, 1, 1) = '-'">
+                                                    <xsl:text> n. Chr.</xsl:text>
+                                                </xsl:if>
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    </xsl:when>
+                                    <xsl:otherwise/>                                    
+                                </xsl:choose>
+                            </p>
+                        </div>
+                    </xsl:if>
+                    <xsl:if test="floruit">
+                        <div class="floruit">
+                            <p>
+                                <span>Wirkungsdaten: </span>
+                                <xsl:value-of select="floruit"/>
+                            </p>
+                        </div>
+                    </xsl:if>
+                    
+                    <xsl:if test="persName[@type = 'variant']">    
+                        <div class="variantcontainer">
+                            <xsl:choose>
+                                <xsl:when test="count(persName[@type = 'variant']) > 1">
+                                    <h2 class="variantnameprefix">Andere Namen</h2>
+                                    <ul class="variantnames">
+                                        <xsl:for-each select="persName[@type = 'variant']">
+                                            <li>
+                                                <xsl:choose>
+                                                    <xsl:when test="term/forename and term/surname">
+                                                        <xsl:value-of select="term/forename"/><xsl:text> </xsl:text><xsl:value-of select="term/surname"/>
+                                                        
+                                                    </xsl:when>
+                                                    <xsl:when test="term/name">
+                                                        <xsl:value-of select="term/name"/>
+                                                    </xsl:when>
+                                                </xsl:choose>                                                    
+                                            </li>
+                                        </xsl:for-each>
+                                    </ul>
+                                </xsl:when>
+                                <xsl:otherwise>                               
+                                    <h2 class="variantnameprefix">Anderer Name</h2>
+                                    <p class="variantname"><xsl:choose>
+                                        <xsl:when test="persName[@type='variant']/term/forename and persName[@type = 'variant']/term/surname">
+                                            <xsl:value-of select="persName[@type = 'variant']/term/forename"/><xsl:text> </xsl:text><xsl:value-of select="persName[@type = 'variant']/term/surname"/>
+                                            
+                                        </xsl:when>
+                                        <xsl:when test="persName[@type = 'variant']/term/name">
+                                            <xsl:value-of select="persName[@type = 'variant']/term/name"/>
+                                        </xsl:when>
+                                    </xsl:choose></p>                                
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </div>
+                    </xsl:if>
+                    
+                    <xsl:if test="ptr[@type='gnd']">
+                        <div class="gndcontainer">
+                            <h2 class="gndhead">Gemeinsame Normdatei (GND)</h2>
+                            <p>
+                                <a>
+                                    <xsl:attribute name="href" select="ptr[@type='gnd']/@target"/>
+                                    <xsl:value-of select="substring-after(ptr[@type='gnd'][1]/@target, 'd-nb.info/gnd/')"/>
+                                </a>
+                            </p>
+                        </div>
+                    </xsl:if>
+                    
+                    <xsl:if test="occupation">
+                        <div class="categorycontainer">
+                            <h2 class="catprefix">Kategorien</h2> 
+                            <ul>
+                                <xsl:for-each select="occupation">
+                                    <!--<xsl:variable name="occupationcode" select="replace(replace(replace(lower-case(.), 'ä', 'ae'), ' ', '_'), 'ü', 'ue')"/>-->
+                                    <li>
+                                        <a>
+                                            <xsl:attribute name="href">
+                                                <xsl:value-of select="concat($psnclasspath,@code)"/>
+                                            </xsl:attribute>
+                                            <xsl:value-of select="//category[@xml:id eq substring-after(current()/@code, '#')]/catDesc"/>
+                                        </a>
+                                    </li>
+                                </xsl:for-each>
+                            </ul>
+                        </div>
+                    </xsl:if>
+                    
+                    <xsl:if test="faith">
+                        <div class="faithcontainer">
+                            <h2>Konfession</h2>
+                            <p><span><xsl:value-of select="faith"/></span></p>
+                        </div>
+                    </xsl:if>
+                    
+                    <xsl:if test="note[@type = 'weitere_Angaben']">
+                        <div class="bio">
+                            <xsl:choose>
+                                <xsl:when test="note[@type = 'weitere_Angaben']/p">
+                                    <h2 class="biohead">Weitere Angaben</h2>
+                                    <xsl:apply-templates select="note[@type = 'weitere_Angaben']"/>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <h2 class="bioprefix">Weitere Angaben</h2>
+                                    <p>
+                                        <xsl:apply-templates select="note[@type = 'weitere_Angaben']"/>
+                                    </p>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </div>
+                    </xsl:if>
+                    
+                    <!--<xsl:if test="noteGrp[@type='Personenverhältnis']/note[@type='Hainhofer']/*">
+                        <div class="Personenverhältnis_Hainhofer">
+                        <h2>Personenverhältnis Inskribent - Hainhofer</h2>
+                        <xsl:apply-templates select="noteGrp[@type='Personenverhältnis']/note[@type='Hainhofer']"/>
+                        </div>
+                        </xsl:if>
+                        <xsl:if test="noteGrp[@type='Personenverhältnis']/note[@type='Künstler']/*">
+                        <div class="Personenverhältnis_Künstler">
+                        <h2>Personenverhältnis Inskribent - Künstler</h2>
+                        <xsl:apply-templates select="noteGrp[@type='Personenverhältnis']/note[@type='Künstler']"/>
+                        </div>
+                        </xsl:if>-->
+                    <xsl:if test="noteGrp[@type='Personenverhältnis']/note[@type='andere_Inskribenten']/*">
+                        <div class="Personenverhältnis_andere_Inskribenten">
+                            <h2>Verhältnis zu anderen Inskribent*innen</h2>
+                            <p><xsl:apply-templates select="noteGrp[@type='Personenverhältnis']/note[@type='andere_Inskribenten']"/></p>
+                        </div>
+                    </xsl:if>
+                    
+                    <xsl:if test="ptr[@type='ph-reisen']">
+                        <div class="ph-reisencontainer">
+                            <h2 class="ph-reisenhead">Registereintrag in der Reiseberichte-Edition</h2>
+                            <p>
+                                <a>
+                                    <xsl:attribute name="href" select="ptr[@type='ph-reisen']/@target"/>
+                                    <xsl:value-of select="ptr[@type='ph-reisen']/@target"/>									
+                                </a>
+                            </p>
+                        </div>
+                    </xsl:if>
+                    
+                    <xsl:if test="listBibl">
+                        <div class="litcontainer">
+                            <h2>Literatur</h2>
+                            <ul>
+                                <xsl:for-each select="listBibl/bibl">
+                                    <li>
+                                        <a>
+                                            <xsl:variable name="biblid" select="substring-after(ptr/@target, ':')"/>
+                                            <xsl:attribute name="href">
+                                                <xsl:value-of select="concat($biblpfad, $biblid)"/>
+                                            </xsl:attribute>
+                                            <xsl:value-of select="document('stammb_bibl.xml')//bibl[@xml:id eq $biblid]/seg"/>
+                                        </a>
+                                        <xsl:choose>
+                                            <xsl:when test="citedRange[not(@target)]">
+                                                <xsl:text>, </xsl:text>
+                                                <xsl:value-of select="citedRange"/>
+                                            </xsl:when>
+                                            <xsl:when test="citedRange[@target]">
+                                                <xsl:text>, </xsl:text>
+                                                <a>
+                                                    <xsl:attribute name="href" select="citedRange/@target"/>
+                                                    <xsl:value-of select="citedRange"/>
+                                                </a>
+                                            </xsl:when>
+                                        </xsl:choose>
+                                    </li>
+                                </xsl:for-each>
+                            </ul>
+                        </div>
+                    </xsl:if>
+                    
+                    <div class="occurrencescontainer">
+                        <h2>Vorkommen im Text</h2>
+                        <ul>                            
+                            <xsl:for-each select="document('stammbuch.xml')//rs[substring-after(@ref,'psn:') eq current()/@xml:id]">
+                                <li><a><xsl:attribute name="href" select="concat($stammbuchpfad,./ancestor::div[@type='Eintrag']/@xml:id)"/><xsl:choose>
+                                    <xsl:when test="matches(./ancestor::div[@type='Eintrag']/div[@type='Seite']/p, '^[A-Z]')"/>
+                                    <xsl:otherwise>S. </xsl:otherwise>
+                                </xsl:choose><xsl:value-of select="./ancestor::div[@type='Eintrag']/div[@type='Seite']/p"/></a><xsl:choose>
+                                    <xsl:when test="ancestor::div[@type='Name']">
+                                        <xsl:text> (Inskribent*in)</xsl:text>
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                       <xsl:text> (</xsl:text><xsl:value-of select="replace(./ancestor::div[1]/@type,'_',' ')"/><xsl:text>)</xsl:text>
+                                    </xsl:otherwise>
+                                </xsl:choose></li>
+                            </xsl:for-each>
+                        </ul>
+                    </div>
+                </body>
+            </html>
+        </xsl:result-document>
+    </xsl:template>
+    
+    <xsl:template match="rs">
+        <a xmlns="http://www.w3.org/1999/xhtml"><xsl:attribute name="href" select="concat($psnpfad,substring-after(@ref,'#'))"/><xsl:value-of select="."/></a>
+    </xsl:template>
+    
+    <xsl:template match="bibl/ref">
+        <a class="Bibliographielink" xmlns="http://www.w3.org/1999/xhtml"><xsl:attribute name="href" select="concat($biblpfad,substring-after(@target,'lit:'))"/><xsl:value-of select="."/></a>
+    </xsl:template>
+    
+    <xsl:template match="*[not(local-name() eq 'bibl')]/ref[starts-with(@target,'stammbuch.xml#')]">
+        <a class="Stammbuchlink" xmlns="http://www.w3.org/1999/xhtml"><xsl:attribute name="href" select="concat($stammbuchpfad,substring-after(@target,'stammbuch.xml#'))"/><xsl:value-of select="."/></a>
+    </xsl:template>
+    <xsl:template match="*[not(local-name() eq 'bibl')]/ref[starts-with(@target,'http')]">
+        <a class="Weblink" xmlns="http://www.w3.org/1999/xhtml"><xsl:attribute name="href" select="@target"/><xsl:value-of select="."/></a>
+    </xsl:template>
+</xsl:stylesheet>
-- 
GitLab