Tei2wikisource2.xsl

From TEIWiki
Jump to navigation Jump to search

TEI to Wikisource (Vicifons)

This is the second in the set of three stylesheets which convert TEI Croatiae auctores Latini documents to Wikisource (namely its Latin version, Vicifons) format, inserting wikisource "formulae" at appropriate places.

This is a stylesheet for simple poetry texts.

Cf. Tei2wikisource1.xsl, Tei2wikisource3.xsl.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:tei="http://www.tei-c.org/ns/1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
    exclude-result-prefixes="tei">
<!-- remove the xmlns with exclude-result-prefixes --> 
    
    <!-- tei to wiki 1 -->
    <!-- description: converts poetry texts from Croatiae auctores Latini to wikisource (mediawiki) markup -->
    <!-- author: Neven Jovanović, Croatiae auctores Latini -->
    <!-- filename: 1005wiki-carmen.xsl -->
    <!-- modified: 2011-02-04 -->
    <!-- required input: tei xml file, using a CroALa subset (or similar) -->
    <!-- expected output: text file conforming to vicifons with titulus2, liber, and versus formulae -->
    <!-- expected output: lg element becomes "poem" (change for poetry collection) -->
    <!-- vicifons titulus2: http://la.wikisource.org/wiki/Formula:Titulus2 -->
    <!-- vicifons liber: http://la.wikisource.org/wiki/Formula:Liber -->
    <!-- vicifons versus: http://la.wikisource.org/wiki/Formula:Versus -->
    <!-- known restrictions: requires removal of indent spaces -->
    <!-- known restrictions: versus formula wraps badly -->
    
<xsl:output method="html"/>

    <xsl:template match="//tei:fileDesc/tei:titleStmt">
        
        <xsl:text>
            {{titulus2
            |Scriptor= </xsl:text><xsl:value-of select="normalize-space(tei:author)"/>
        <xsl:text>
            |OperaeTitulus= </xsl:text><xsl:value-of select="normalize-space(tei:title)"/><!-- Operae Titulus (required) -->
        <xsl:text>
        |OperaeWikiPagina= </xsl:text><!-- Latina Vicifontis Pagina -->
    </xsl:template>
    <xsl:template match="//tei:editionStmt|//tei:publicationStmt|//tei:revisionDesc"/>
    <xsl:template match="//tei:sourceDesc">
        
        <xsl:text>
            |Liber= </xsl:text><xsl:value-of select="normalize-space(//tei:biblStruct//tei:title)"/><!-- Liber -->
        <xsl:text>
        |SubTitulus= </xsl:text><!-- SubTitulus -->
    </xsl:template>
    <xsl:template match="//tei:profileDesc">
        <xsl:text>
            |Annus= </xsl:text><xsl:value-of select="normalize-space(//tei:creation/tei:date)"/><!-- Annus/Saeculum -->
        <xsl:text>
            }}
            
        </xsl:text>
    </xsl:template>
    <xsl:template match="//tei:front/tei:div">
        <xsl:text>
        {{Liber
        |Ante= Titulus operis
        |AnteNomen= </xsl:text><xsl:value-of select="normalize-space(//tei:fileDesc/tei:titleStmt/tei:title)"/><xsl:text>
        |Post= </xsl:text><xsl:value-of select="normalize-space(//tei:body/tei:div[1]/@type)"/><xsl:text> 
        |PostNomen= </xsl:text><xsl:value-of select="normalize-space(//tei:body/tei:div/tei:head)"/><xsl:text>
        }}
        </xsl:text>
        <div class="text">
            <xsl:apply-templates/>
            </div>
    </xsl:template>
    <xsl:template match="//tei:body/tei:div[@type eq 'poesis']">
        <xsl:text>
            {{Liber
            |Ante= </xsl:text><xsl:value-of select="normalize-space(//tei:front/tei:div/@type)"/><xsl:text>
            |AnteNomen= </xsl:text><xsl:value-of select="normalize-space(//tei:front/tei:div/tei:head)"/><xsl:text>
            |Post= </xsl:text><xsl:value-of select="normalize-space(following-sibling::tei:div[1]/@type)"/><xsl:text> 
            |PostNomen= </xsl:text><xsl:value-of select="normalize-space(following-sibling::tei:div[1]/tei:head)"/><xsl:text>
            }}
                    </xsl:text>
        <div class="verse">
            
            
            <xsl:apply-templates/>
            </div>
        
    </xsl:template>
    <xsl:template match="//tei:head|//tei:opener">
        <!-- Uses head or opener contents for title -->
<xsl:text>== </xsl:text><xsl:apply-templates/><xsl:text> ==</xsl:text>
    </xsl:template>
    <xsl:template match="//tei:lg">
        <poem>
            <xsl:apply-templates/>
        </poem>
    </xsl:template>
    <xsl:template match="//tei:l">
        <xsl:apply-templates/><xsl:text>{{versus|</xsl:text><xsl:value-of select="normalize-space(@n)"/><xsl:text>}}</xsl:text>
    </xsl:template>
</xsl:stylesheet>