XSL-Quelltext für TUSTEP-Transformation

Das unten aufgeführte XSLT-Stylesheet wird aktiv,

In jedem Fall erfolgt die Transformation im Client durch Microsofts MSXML3-Engine.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!--==================================================================
*                (c) Heinz Werner Kramski / DLA Marbach
*=====================================================================
*       $Source: H:\\projekte\\kessler\\XML\\dtd\\RCS/hgkdiary-tustep.xsl $
*           $Id: hgkdiary-tustep.xsl 1.15 2001/07/13 08:22:40 kramski Exp kramski $
*        Aufruf: per Script, siehe hgkdiary.mcr
*     Parameter: keine
*         Zweck: HGK-XML-Quelltexte fuer TUSTEPs Satzprogramm aufbereiten
*      Umgebung: XML, MSXML 3, TUSTEP
*    Siehe auch: hgkdiary.dtd, hgkdiary.mcr, hgkdiary-html.xsl
*   Bemerkungen:
*                Das Top-Level-Element <tustep> ist fuer den XSLT-Prozessor
*                notwendig und muss in TUSTEP unterdrueckt werden.
*
*                Der gesamte Inhalt wird als XML-PI ausgegeben, da sonst
*                der XSLT-Prozessor Steuerzeichen wie "&:3" als ungueltige Namen
*                bemaengelt. Die PI-Begrenzer muessen in TUSTEP unterdrueckt
*                werden. (PI ist besser als ein Kommentar, da dieser u.U.
*                keine doppelten "-" enthalten darf.)
*
*                #, $, %, \, @, & als TUSTEP-Steuerzeichen muessen hier
*                als ^#, ^$ etc. codiert und mit #um,...,modus=+1,code=utf8
*                importiert werden.
*
*          ToDo: - Segmente behandeln
*
*=====================================================================
*   $Log: hgkdiary-tustep.xsl $
*   Revision 1.15  2001/07/13 08:22:40  kramski
*   Verbergen jetzt *wirklich* korrigiert (Reihenfolgeproblem!)
*
*   Revision 1.14  2001/07/09 16:04:13  kramski
*   Fehlerbehebung: geschachteltes Verbergen nun korrigiert.
*
*   Revision 1.13  2001/05/14 10:24:29  kramski
*   Syntaxfehler in der Beschreibung eines Syntaxfehlers korrigiert
*
*   Revision 1.12  2001/05/14 09:25:15  kramski
*   Dummy-PI statt Dummy-Kommentar, um Syntax-Probleme mit enthaltenen
*   doppelten "-" zu vermeiden.
*
*   Revision 1.11  2001/04/23 11:08:00  kramski
*   Fehler wg. Fehlerbeschreibung beseitigt
*
*   Revision 1.10  2001/04/23 10:31:01  kramski
*   Kosmetik
*
*   Revision 1.9  2001/04/20 15:35:56  kramski
*   reg und reg.p behandelt
*
*   Revision 1.8  2001/04/12 15:14:51  kramski
*   Kleinere Optimierungen, vorlaeufiger Abschluss
*
*   Revision 1.7  2001/04/12 14:35:46  kramski
*   Umstellung auf #satz
*
*   Revision 1.6  2001/04/11 08:35:44  kramski
*   Vorlaeufiger Abschluss fuer #formatiere
*
*   Revision 1.5  2001/04/10 13:32:54  kramski
*   Zwischenstand, #formatiere prinzipiell ok
*
*   Revision 1.4  2001/04/03 12:24:26  kramski
*   TUSTEP-Steuerzeichen eingefuegt (erste Tests)
*
*   Revision 1.3  2001/03/28 12:29:39  kramski
*   Fehlerkorrektur Syntax
*
*   Revision 1.2  2001/03/27 11:06:07  Administrator
*   Hoechst vorlaeufige Version mit Pseudocodes, aber grundsaetzlich
*   lauffaehig
*
*   Revision 1.1  2001/03/27 10:54:18  Administrator
*   Initial revision
*
*===================================================================-->

<xsl:output method="xml" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>

<!-- TUSTEP-Steuerzeichen: -->
<xsl:variable name="BegJob"></xsl:variable>
<xsl:variable name="EndJob"></xsl:variable>

<xsl:variable name="BegComment">^&amp;X </xsl:variable>
<xsl:variable name="EndComment">^&amp;X{</xsl:variable>

<xsl:variable name="BegMarg">^@A </xsl:variable>
<xsl:variable name="EndMarg">^@{ </xsl:variable>

<!-- Fehlerhafte Stellen -->
<xsl:variable name="BegErr">^#4+</xsl:variable>
<xsl:variable name="EndErr">^#4-</xsl:variable>

<xsl:variable name="BegMonth">^$^$^$=^$^$^$</xsl:variable>
<xsl:variable name="EndMonth"></xsl:variable>

<xsl:variable name="BegMonthHead"></xsl:variable>
<xsl:variable name="EndMonthHead"></xsl:variable>

<xsl:variable name="BegEntry"></xsl:variable>
<xsl:variable name="EndEntry"></xsl:variable>

<xsl:variable name="BegEntryHead">^@= </xsl:variable>
<xsl:variable name="EndEntryHead">^@{</xsl:variable>

<xsl:variable name="BegDateLine">^&amp;^&amp; </xsl:variable>
<xsl:variable name="EndDateLine">^&amp;^&amp;{</xsl:variable>

<xsl:variable name="BegP">^$ </xsl:variable>
<xsl:variable name="EndP"></xsl:variable>

<xsl:variable name="BegNoteRem">^$^$ </xsl:variable>
<xsl:variable name="EndNoteRem">^$^${</xsl:variable>

<xsl:variable name="BegNoteCom">^@f+</xsl:variable>
<xsl:variable name="EndNoteCom">^@f-</xsl:variable>

<xsl:variable name="BegNoteRegP">^@f+</xsl:variable>
<xsl:variable name="EndNoteRegP">^@f-</xsl:variable>

<!-- vorlaeufig -->
<xsl:variable name="BegSeg">^[Seg:</xsl:variable>
<xsl:variable name="EndSeg">^]</xsl:variable>

<!-- vorlaeufig -->
<xsl:variable name="BegHi">^#/+</xsl:variable>
<xsl:variable name="EndHi">^#/-</xsl:variable>

<xsl:variable name="BegHiUl1">^#1+</xsl:variable>
<xsl:variable name="EndHiUl1">^#1-</xsl:variable>

<xsl:variable name="BegHiUl2">^#2+</xsl:variable>
<xsl:variable name="EndHiUl2">^#2-</xsl:variable>

<xsl:variable name="BegHiUl3">^#3+</xsl:variable>
<xsl:variable name="EndHiUl3">^#3-</xsl:variable>

<xsl:variable name="BegHiUl4">^#3+</xsl:variable>
<xsl:variable name="EndHiUl4">^#3-</xsl:variable>

<xsl:variable name="BegHiUl5">^#3+</xsl:variable>
<xsl:variable name="EndHiUl5">^#3-</xsl:variable>

<xsl:variable name="BegHiSup">^&amp;!H+</xsl:variable>
<xsl:variable name="EndHiSup">^&amp;!H.</xsl:variable>

<xsl:variable name="BegHiSub">^&amp;!H-</xsl:variable>
<xsl:variable name="EndHiSub">^&amp;!H.</xsl:variable>

<!-- vorlaeufig -->
<xsl:variable name="BegName">^#k+</xsl:variable>
<xsl:variable name="EndName">^#k-</xsl:variable>

<xsl:variable name="BegGap">[</xsl:variable>
<xsl:variable name="EndGap"> ]</xsl:variable>

<xsl:variable name="BegDel">^#0+</xsl:variable>
<xsl:variable name="EndDel">^#0-</xsl:variable>

<xsl:variable name="BegAdd">^#./</xsl:variable>
<xsl:variable name="EndAdd">^#./</xsl:variable>



<!-- Root-Template -->
<xsl:template match="/">
   <!-- dieses Dummy-Top-Level-Element ist notwendig: -->
   <tustep>
   <!-- den Rest packen wir in eine Dummy-Proc.instruction, damit innerhalb
        XML-obskure Konstruktionen moeglich sind (z.B. "&:3") -->
   <xsl:processing-instruction name = "tustep">
   <xsl:value-of select="$BegJob"/>
   <xsl:value-of select="$BegComment"/>
   Generiert durch $Id: hgkdiary-tustep.xsl 1.15 2001/07/13 08:22:40 kramski Exp kramski $.
   In TUSTEP mit "#um,infile,outfile,modus=+1,code=utf8" einlesen.
   <xsl:value-of select="$EndComment"/>
   <xsl:apply-templates/>
   <xsl:value-of select="$EndJob"/>
   </xsl:processing-instruction>
   </tustep>
</xsl:template>


<!-- Default-Template: alles, was kein spezielles Template hat -->
<xsl:template match="*">
   <!-- Name des unbehandelten Elements als Marginalie ausgeben, Inhalt im Text -->
   <xsl:value-of select="$BegMarg"/>
   <xsl:value-of select="$BegErr"/>
   <xsl:value-of select="name(.)"/>!?
   <xsl:value-of select="$EndErr"/>
   <xsl:value-of select="$EndMarg"/>
   <xsl:apply-templates/>
</xsl:template>


<!-- Echte Templates -->
<xsl:template match="TEI.2">
   <xsl:apply-templates/>
</xsl:template>


<!-- TEI-Header -->
<xsl:template match="teiHeader">
   <!-- Header wird vollstaendig unterdrueckt -->
</xsl:template>


<!-- Text etc. -->
<xsl:template match="text">
   <xsl:apply-templates/>
</xsl:template>


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


<xsl:template match="div[@type='month']">
   <xsl:value-of select="$BegMonth"/>
   <xsl:apply-templates/>
   <xsl:value-of select="$EndMonth"/>
</xsl:template>


<xsl:template match="div[@type='month']/head">
   <xsl:value-of select="$BegMonthHead"/><xsl:apply-templates/><xsl:value-of select="$EndMonthHead"/>
</xsl:template>


<xsl:template match="div[@type='entry']">
   <xsl:value-of select="$BegEntry"/>
   <xsl:apply-templates/>
   <xsl:value-of select="$EndEntry"/>
</xsl:template>


<xsl:template match="div[@type='entry']/head">
   <xsl:value-of select="$BegEntryHead"/><xsl:apply-templates/><xsl:value-of select="$EndEntryHead"/>
</xsl:template>


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


<xsl:template match="dateline">
   <xsl:value-of select="$BegDateLine"/><xsl:apply-templates/><xsl:value-of select="$EndDateLine"/>
</xsl:template>


<xsl:template match="p">
   <xsl:value-of select="$BegP"/>
   <xsl:apply-templates/>
   <xsl:value-of select="$EndP"/>
</xsl:template>

<xsl:template match="gap">
   <xsl:value-of select="$BegGap"/>
   <xsl:value-of select="$EndGap"/>
</xsl:template>

<xsl:template match="del">
   <xsl:value-of select="$BegDel"/>
   <xsl:apply-templates/>
   <xsl:value-of select="$EndDel"/>
</xsl:template>

<xsl:template match="add">
   <xsl:value-of select="$BegAdd"/>
   <xsl:apply-templates/>
   <xsl:value-of select="$EndAdd"/>
</xsl:template>

<xsl:template match="note">
   <xsl:choose>
      <xsl:when test="@type[.='rem']">
         <!-- Herausgeberkommentar als Block -->
         <xsl:value-of disable-output-escaping="yes" select="$BegNoteRem"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndNoteRem"/>
      </xsl:when>
      <xsl:when test="@type[.='reg.p']">
         <!-- Registerbemerkung, die gedruckt werden soll -->
         <xsl:value-of select="$BegNoteRegP"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndNoteRegP"/>
      </xsl:when>
      <xsl:when test="@type[.='reg']">
         <!-- Registerbemerkung, die nicht gedruckt werden soll -->
         <xsl:value-of select="$BegComment"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndComment"/>
      </xsl:when>
      <xsl:otherwise>
         <!-- alle anderen Kommentare als Fussnote -->
         <xsl:value-of select="$BegNoteCom"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndNoteCom"/>
      </xsl:otherwise>
   </xsl:choose>
</xsl:template>


<xsl:template match="seg">
   <xsl:value-of select="$BegSeg"/>
   <xsl:apply-templates/>
   <xsl:value-of select="$EndSeg"/>
</xsl:template>


<xsl:template match="hi">
   <xsl:choose>
      <xsl:when test="@rend[.='ul.1']">
         <xsl:value-of select="$BegHiUl1"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHiUl1"/>
      </xsl:when>
      <xsl:when test="@rend[.='ul.2']">
         <xsl:value-of select="$BegHiUl2"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHiUl2"/>
      </xsl:when>
      <xsl:when test="@rend[.='ul.3']">
         <xsl:value-of select="$BegHiUl3"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHiUl3"/>
      </xsl:when>
      <xsl:when test="@rend[.='ul.4']">
         <xsl:value-of select="$BegHiUl4"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHiUl4"/>
      </xsl:when>
      <xsl:when test="@rend[.='ul.5']">
         <xsl:value-of select="$BegHiUl5"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHiUl5"/>
      </xsl:when>
      <xsl:when test="@rend[.='sup']">
         <xsl:value-of select="$BegHiSup"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHiSup"/>
      </xsl:when>
      <xsl:when test="@rend[.='sub']">
         <xsl:value-of select="$BegHiSub"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHiSub"/>
      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="$BegHi"/>
         <xsl:apply-templates/>
         <xsl:value-of select="$EndHi"/>
      </xsl:otherwise>
   </xsl:choose>
</xsl:template>

<xsl:template match="figure">
   <xsl:value-of select="$EndP"/>
   <xsl:value-of select="$BegP"/>
   [Abbildung
   <xsl:if test="@n">
      <xsl:value-of select="@n"/>
   </xsl:if>
   <xsl:if test="@entity">
      <!-- vorlaeufig -->
      (../../images/preview/<xsl:value-of select="@entity"/>.jpg)]
   </xsl:if>
   <xsl:value-of select="$EndP"/>
   <xsl:value-of select="$BegP"/>
</xsl:template>

<!-- Namen -->
<xsl:template match="rs[@type] | name[@type]">
   <xsl:value-of select="$BegName"/><xsl:apply-templates/><xsl:value-of select="$EndName"/>
   <!-- Key (sicherheitshalber) als verborgenen Registereintrag ausgeben: -->
   <xsl:if test="@key">
      <xsl:value-of select="$BegComment"/>((<xsl:value-of select="@key"/>))<xsl:value-of select="$EndComment"/>
   </xsl:if>
</xsl:template>

<!-- Namen in verborgenem Text (key nicht nochmals verbergen) -->
<!-- Die Reihenfolge ist wichtig: dies nicht vor 'Namen' stellen! -->
<xsl:template match="note[@type='reg']//rs[@type] | note[@type='reg']//name[@type]">
   <xsl:value-of select="$BegName"/><xsl:apply-templates/><xsl:value-of select="$EndName"/>
   <!-- Key (sicherheitshalber) als Registereintrag ausgeben: -->
   <xsl:if test="@key">
      ((<xsl:value-of select="@key"/>))
   </xsl:if>
</xsl:template>

<!-- einfacher Text ohne Tags -->
<xsl:template match="text()">
   <xsl:value-of select="."/>
</xsl:template>


</xsl:stylesheet>