Tei2wikisource1.xsl
TEI to Wikisource (Vicifons)
This is the first in the set of three stylesheets which convert TEI auctores Latini documents to Wikisource (its Latin version, [1]) format, inserting wikisource "formulae" at appropriate places.
This is a stylesheet for simple prose texts.
<?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"> <!-- tei to wiki 2 --> <!-- description: converts prose texts from Croatiae auctores Latini to wikisource (mediawiki) markup --> <!-- description: adds navigatione elements (vicifons formula liber) --> <!-- author: Neven Jovanović, Croatiae auctores Latini --> <!-- filename: 1102wiki-prorsa.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 and liber formulae --> <!-- vicifons titulus2: http://la.wikisource.org/wiki/Formula:Titulus2 --> <!-- vicifons liber: http://la.wikisource.org/wiki/Formula:Liber --> <!-- known restrictions: requires removal of indent spaces --> <!-- known restrictions: formula Titulus2 should be repeated at the beginning of each chapter --> <xsl:output method="html"/> <xsl:template match="//tei:teiHeader"> <!-- content for formula Titulus2 --> <xsl:text> {{titulus2 |Scriptor= </xsl:text><xsl:value-of select="normalize-space(tei:fileDesc/tei:titleStmt/tei:author)"/> <xsl:text> |OperaeTitulus= </xsl:text><xsl:value-of select="normalize-space(tei:fileDesc/tei:titleStmt/tei:title)"/><!-- Operae Titulus (required) --> <xsl:text> |OperaeWikiPagina= </xsl:text><!-- Latina Vicifontis Pagina --> <xsl:text> |Liber= </xsl:text><xsl:value-of select="normalize-space(//tei:sourceDesc//tei:biblStruct)"/><!-- Liber --> <xsl:text> |SubTitulus= </xsl:text><!-- SubTitulus --> <xsl:text> |Annus= </xsl:text><xsl:value-of select="normalize-space(tei:profileDesc//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= Liber |PostNomen= </xsl:text><xsl:value-of select="normalize-space(//tei:body/tei:div[1]/tei:head)"/><xsl:text> }} </xsl:text> <div class="text"> <xsl:apply-templates/> </div> </xsl:template> <xsl:template match="//tei:body/tei:div/tei:div"> <!-- should be corrected for front and ch. 1! --> <xsl:text> {{Liber |Ante= </xsl:text><xsl:value-of select="normalize-space(preceding-sibling::tei:div[1]/tei:head)"/><xsl:text> |AnteNomen= </xsl:text><xsl:value-of select="normalize-space(preceding-sibling::tei:div[1]/tei:head)"/><xsl:text> |Post= </xsl:text><xsl:value-of select="normalize-space(following-sibling::tei:div[1]/tei:head)"/><xsl:text> |PostNomen= </xsl:text><xsl:value-of select="normalize-space(following-sibling::tei:div[1]/tei:head)"/><xsl:text> }}</xsl:text> <div class="text"><xsl:text> ==</xsl:text><xsl:value-of select="normalize-space(tei:head)"/><xsl:text>== </xsl:text> <xsl:apply-templates select="tei:p"/> </div> <xsl:apply-templates select="." mode="back"/> <!-- modes for repeating the Liber formula --> </xsl:template> <xsl:template match="//tei:body/tei:div/tei:div" mode="back"> <xsl:text> {{Liber |Ante= </xsl:text><xsl:value-of select="normalize-space(preceding-sibling::tei:div[1]/tei:head)"/><xsl:text> |AnteNomen= </xsl:text><xsl:value-of select="normalize-space(preceding-sibling::tei:div[1]/tei:head)"/><xsl:text> |Post= </xsl:text><xsl:value-of select="normalize-space(following-sibling::tei:div[1]/tei:head)"/><xsl:text> |PostNomen= </xsl:text><xsl:value-of select="normalize-space(following-sibling::tei:div[1]/tei:head)"/><xsl:text> }}</xsl:text> </xsl:template> <xsl:template match="//tei:back//text()"/> <!-- remove any notes from the back --> </xsl:stylesheet>