insilmaril@37: <?xml version="1.0" encoding="UTF-8" ?> insilmaril@37: insilmaril@37: <!-- insilmaril@37: Document : vym2html.xsl insilmaril@37: Created on : 20040313 insilmaril@37: Modified : 20040512,20040622 Uwe Drechsel insilmaril@37: Version : 0.7 insilmaril@37: Author : Clemens Kraus (http://www.clemens-kraus.de) insilmaril@37: Description: transforms vym-files into html format. insilmaril@37: insilmaril@37: Hint: insilmaril@37: tm.xsl and cm.xsl were taken from Alexander Johannesen's insilmaril@37: beautiful xSiteable content management system: insilmaril@37: http://xsiteable.org insilmaril@37: and are used with kind permission insilmaril@37: --> insilmaril@37: insilmaril@37: insilmaril@37: insilmaril@37: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> insilmaril@37: insilmaril@37: <!-- Include external stylesheets --> insilmaril@37: <xsl:include href="tm.xsl" /> insilmaril@37: <xsl:include href="cm.xsl" /> insilmaril@37: insilmaril@37: <!-- Settings and parameters --> insilmaril@37: <xsl:output method="html" indent="no" encoding="UTF-8"/> insilmaril@37: <xsl:param name="filenamep" /> insilmaril@37: <xsl:param name="wikistylep" /> insilmaril@37: <xsl:param name="genimagep" /> insilmaril@37: <xsl:param name="imageonlyp" /> insilmaril@37: <xsl:param name="stylesheetp" /> insilmaril@37: <xsl:param name="urlHeadingp" /> insilmaril@37: <xsl:param name="urlImagep" /> insilmaril@37: <xsl:variable name="filename" select="$filenamep"/> insilmaril@37: <xsl:variable name="wikistyle" select="$wikistylep"/> insilmaril@37: <xsl:variable name="genimage" select="$genimagep"/> insilmaril@37: <xsl:variable name="imageonly" select="$imageonlyp"/> insilmaril@37: <xsl:variable name="stylesheet" select="$stylesheetp"/> insilmaril@37: <xsl:variable name="topics" select="//item" /> insilmaril@37: <xsl:variable name="urlHeading" select="$urlHeadingp"/> insilmaril@37: <xsl:variable name="urlImage" select="$urlImagep"/> insilmaril@37: insilmaril@37: <xsl:variable name="level" select="'0'"/> insilmaril@37: <xsl:variable name="contentlist" select="false()"/> insilmaril@37: insilmaril@37: insilmaril@37: <xsl:variable name="fn" > insilmaril@37: <xsl:call-template name="getfn" > insilmaril@37: <xsl:with-param name="txt" select="$filename" /> insilmaril@37: </xsl:call-template> insilmaril@37: </xsl:variable> insilmaril@37: insilmaril@37: <xsl:variable name="path" > insilmaril@37: <xsl:value-of select="normalize-space( substring($filename, 1, number(string-length($filename)-string-length($fn))) )" /> insilmaril@37: </xsl:variable> insilmaril@37: insilmaril@37: <xsl:variable name="stylesheetn" > insilmaril@37: <xsl:call-template name="getfn" > insilmaril@37: <xsl:with-param name="txt" select="$stylesheet" /> insilmaril@37: </xsl:call-template> insilmaril@37: </xsl:variable><!-- path --> insilmaril@37: insilmaril@37: insilmaril@37: insilmaril@37: <!-- Beginning of transformation here --> insilmaril@37: <xsl:template match="/"> insilmaril@37: <xsl:variable name="mapversion" select="vymmap/@version"/> insilmaril@37: <xsl:variable name="header" > insilmaril@37: <xsl:call-template name="getheading" > insilmaril@37: <xsl:with-param name="txt" select="vymmap/mapcenter/heading" /> insilmaril@37: </xsl:call-template> insilmaril@37: </xsl:variable><!-- header --> insilmaril@37: insilmaril@37: <!-- Write head of HTML document --> insilmaril@37: <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]>
</xsl:text> insilmaril@37: <html><xsl:text>
</xsl:text> insilmaril@37: <head><xsl:text>
</xsl:text> insilmaril@37: <title><xsl:value-of select="$header"/></title> insilmaril@37: <xsl:text disable-output-escaping="yes">
<![CDATA[<link href="]]></xsl:text> insilmaril@37: <xsl:value-of select="$stylesheetn"/> insilmaril@37: <xsl:text disable-output-escaping="yes"><![CDATA[" rel="stylesheet" id="]]></xsl:text> insilmaril@37: <xsl:value-of select="$stylesheetn"/> insilmaril@37: <xsl:text disable-output-escaping="yes"><![CDATA[">]]>
</xsl:text> insilmaril@37: <meta name="generator" content="vym (http://www.insilmaril.de/vym/) and vym2html.xsl (http://www.clemens-kraus.de)"/><xsl:text>
</xsl:text> insilmaril@37: </head> insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: insilmaril@37: <!-- Write body of HTML document --> insilmaril@37: <body> insilmaril@37: <!-- vym title box at top of page --> insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: <div class="vymTitleBox"> insilmaril@37: <xsl:value-of select="$header"/> insilmaril@37: </div> insilmaril@37: insilmaril@37: <!-- Include image of map, if wanted --> insilmaril@37: <xsl:if test="$genimage != ''"> insilmaril@37: <xsl:variable name="image" select="concat($fn, '.png')" /> insilmaril@37: insilmaril@37: <div class="vymImageMap"> insilmaril@37: <img src="images/{$image}" insilmaril@37: border="0" insilmaril@37: usemap="#vymmap" insilmaril@37: alt="vymmap"> insilmaril@37: </img> insilmaril@37: </div> insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: insilmaril@37: <!-- Generate image map by a first walk through all branches --> insilmaril@37: <map name="vymmap"> insilmaril@37: <xsl:apply-templates select="vymmap/mapcenter/branch"> insilmaril@37: <xsl:with-param name="genarea" select="true()"/> insilmaril@37: <xsl:with-param name="imageonly" select="$imageonly"/> insilmaril@37: </xsl:apply-templates> insilmaril@37: </map> insilmaril@37: insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: </xsl:if> insilmaril@37: insilmaril@37: <!-- Include note of mapcenter here --> insilmaril@37: <xsl:apply-templates select="vymmap/mapcenter/note/@href"/> insilmaril@37: insilmaril@37: insilmaril@37: <!-- Include all the branches, if not only image is wanted--> insilmaril@37: <xsl:if test="$imageonly = ''"> insilmaril@37: <xsl:apply-templates select="vymmap/mapcenter/branch"> insilmaril@37: <xsl:with-param name="genarea" select="false()"/> insilmaril@37: <xsl:with-param name="imageonly" select="$imageonly"/> insilmaril@37: <xsl:with-param name="depth" select="0"/> insilmaril@37: </xsl:apply-templates> insilmaril@37: </xsl:if> insilmaril@37: insilmaril@37: <!-- Box at bottom of page, containing comment and author --> insilmaril@37: <div class="vymBoxBottom"> insilmaril@37: <xsl:value-of select="vymmap/@comment"/> insilmaril@37: <div class="vymBoxBottomR"> insilmaril@37: <xsl:value-of select="vymmap/@author"/> insilmaril@37: </div> insilmaril@37: </div> insilmaril@37: insilmaril@37: <!-- Footer containing filename, date, selfpromotion --> insilmaril@37: <table class="vymFooter"> insilmaril@37: <tr> insilmaril@37: <td class="vymFooterL"> insilmaril@37: <xsl:value-of select="$fn"/>.vym insilmaril@37: </td> insilmaril@37: <td class="vymFooterC"> insilmaril@37: <xsl:value-of select="vymmap/@date"/> insilmaril@37: </td> insilmaril@37: <td class="vymFooterR"> insilmaril@37: vym <xsl:value-of select="$mapversion"/> insilmaril@37: </td> insilmaril@37: </tr> insilmaril@37: </table> insilmaril@37: insilmaril@37: </body>
 insilmaril@37: </html>
 insilmaril@37: </xsl:template><!-- Beginning of tranformation, "/" template --> insilmaril@37: insilmaril@37: insilmaril@37: <!-- Main Function generating a branch --> insilmaril@37: <xsl:template match="branch"> insilmaril@37: <!-- Work a branch twice: a) make id for anchors, b) make output --> insilmaril@37: <xsl:param name="genarea"/> insilmaril@37: <xsl:param name="imageonly"/> insilmaril@37: <xsl:param name="depth"/> insilmaril@37: <xsl:if test="$genarea"> insilmaril@37: <!-- Generate id's and anchors, no output yet --> insilmaril@37: <xsl:if test="(@x1 != '' and @y1 != '' and @x2 != '' and @y2 != '') and not(../@scrolled = 'yes')"> insilmaril@37: <!-- Heading is used in ALT field of anchor --> insilmaril@37: <xsl:variable name="header"> insilmaril@37: <xsl:call-template name="getheading" > insilmaril@37: <xsl:with-param name="txt" select="heading" /> insilmaril@37: </xsl:call-template> insilmaril@37: </xsl:variable> insilmaril@37: insilmaril@37: <xsl:if test="($imageonly and @url) or ($imageonly and @vymLink) or $imageonly=''"> insilmaril@37: <area> insilmaril@37: <xsl:attribute name="shape"> insilmaril@37: <xsl:text>rect</xsl:text> insilmaril@37: </xsl:attribute> insilmaril@37: <xsl:attribute name="coords"> insilmaril@37: <xsl:value-of select="@x1"/> insilmaril@37: <xsl:text>,</xsl:text> insilmaril@37: <xsl:value-of select="@y1"/> insilmaril@37: <xsl:text>,</xsl:text> insilmaril@37: <xsl:value-of select="@x2"/> insilmaril@37: <xsl:text>,</xsl:text> insilmaril@37: <xsl:value-of select="@y2"/> insilmaril@37: </xsl:attribute> insilmaril@37: <xsl:attribute name="href"> insilmaril@37: <xsl:if test="$imageonly = ''"> insilmaril@37: <xsl:text>#</xsl:text> insilmaril@37: <xsl:value-of select="generate-id(.)"/> insilmaril@37: </xsl:if> insilmaril@37: <xsl:if test="$imageonly and @url"> insilmaril@37: <xsl:value-of select="@url"/> insilmaril@37: </xsl:if> insilmaril@37: <xsl:if test="$imageonly and @vymLink"> insilmaril@37: <xsl:value-of select="concat( substring-before(@vymLink, '.vym'), '.html')"/> insilmaril@37: </xsl:if> insilmaril@37: </xsl:attribute> insilmaril@37: <xsl:attribute name="alt"> insilmaril@37: <xsl:value-of select="$header"/> insilmaril@37: </xsl:attribute> insilmaril@37: <xsl:attribute name="title"> insilmaril@37: <xsl:value-of select="$header"/> insilmaril@37: </xsl:attribute> insilmaril@37: </area> insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: </xsl:if> insilmaril@37: </xsl:if> <!--generating id's and anchors --> insilmaril@37: insilmaril@37: <xsl:apply-templates select="branch"> insilmaril@37: <xsl:with-param name="genarea" select="true()"/> insilmaril@37: <xsl:with-param name="imageonly" select="$imageonly"/> insilmaril@37: <xsl:with-param name="depth" select="$depth +1"/> insilmaril@37: </xsl:apply-templates> insilmaril@37: </xsl:if><!--genarea--> insilmaril@37: insilmaril@37: insilmaril@37: <xsl:if test="$imageonly = ''"> insilmaril@37: <xsl:if test="not($genarea)"> insilmaril@37: <xsl:call-template name="anchor"> insilmaril@37: <xsl:with-param name="depth" select="$depth"/> insilmaril@37: </xsl:call-template> insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: </xsl:if> insilmaril@37: </xsl:if> insilmaril@37: </xsl:template><!--branch--> insilmaril@37: insilmaril@37: insilmaril@37: insilmaril@37: <xsl:template name="anchor"> insilmaril@37: <xsl:param name="depth"/> insilmaril@37: <xsl:if test="$depth=0"> insilmaril@37: <hr /> insilmaril@37: <xsl:call-template name="gen-anchor-tag"> insilmaril@37: <xsl:with-param name="depth" select="$depth"/> insilmaril@37: </xsl:call-template> insilmaril@37: <xsl:if test="count(descendant::branch)"> insilmaril@37: <ul> insilmaril@37: <xsl:apply-templates select="branch"> insilmaril@37: <xsl:with-param name="genarea" select="false()"/> insilmaril@37: <xsl:with-param name="depth" select="$depth+1"/> insilmaril@37: </xsl:apply-templates> insilmaril@37: </ul> insilmaril@37: </xsl:if> insilmaril@37: </xsl:if> insilmaril@37: insilmaril@37: <xsl:if test="$depth > 0"> insilmaril@37: <li> insilmaril@37: <xsl:call-template name="gen-anchor-tag"> insilmaril@37: <xsl:with-param name="depth" select="$depth"/> insilmaril@37: </xsl:call-template> insilmaril@37: <xsl:if test="count(descendant::branch)"> insilmaril@37: <ul> insilmaril@37: <xsl:apply-templates select="branch"> insilmaril@37: <xsl:with-param name="genarea" select="false()"/> insilmaril@37: <xsl:with-param name="depth" select="$depth+1"/> insilmaril@37: </xsl:apply-templates> insilmaril@37: </ul> insilmaril@37: </xsl:if> insilmaril@37: </li> insilmaril@37: </xsl:if> insilmaril@37: </xsl:template><!--anchor--> insilmaril@37: insilmaril@37: insilmaril@37: <xsl:template name="gen-anchor-tag"> insilmaril@37: <xsl:param name="depth"/> insilmaril@37: insilmaril@37: <xsl:variable name="header"> insilmaril@37: <xsl:call-template name="getheading" > insilmaril@37: <xsl:with-param name="txt" select="heading" /> insilmaril@37: </xsl:call-template> insilmaril@37: </xsl:variable><!--header--> insilmaril@37: insilmaril@37: <div class="vymBranch{$depth}"> insilmaril@37: <xsl:if test="not($genimage = '')"> insilmaril@37: <a name="{generate-id(.)}"></a> insilmaril@37: </xsl:if> insilmaril@37: insilmaril@37: <!-- start header --> insilmaril@37: <xsl:value-of select="$header"/> insilmaril@37: insilmaril@37: <!-- Include flags --> insilmaril@37: <xsl:apply-templates select="./standardFlag" /> insilmaril@37: insilmaril@37: <!-- URL to external document --> insilmaril@37: <xsl:if test="@url != ''"> insilmaril@37: <p class="vymURL"> insilmaril@37: <xsl:element name="a"> insilmaril@37: <xsl:attribute name="href"> insilmaril@37: <xsl:value-of select="@url"/> insilmaril@37: </xsl:attribute> insilmaril@37: <xsl:if test="$urlImage= 'yes'"> insilmaril@37: <img src="flags/url.png" insilmaril@37: border="0" insilmaril@37: valign="middle" insilmaril@37: alt="URL"> insilmaril@37: </img> insilmaril@37: </xsl:if> insilmaril@37: <xsl:if test="$urlImage!= 'yes'"> insilmaril@37: <xsl:text>> </xsl:text> insilmaril@37: </xsl:if> insilmaril@37: <xsl:if test="$urlHeading = 'yes'"> insilmaril@37: <xsl:value-of select="$header"/> insilmaril@37: </xsl:if> insilmaril@37: <xsl:if test="$urlHeading != 'yes'"> insilmaril@37: <xsl:value-of select="@url"/> insilmaril@37: </xsl:if> insilmaril@37: </xsl:element> insilmaril@37: </p> insilmaril@37: </xsl:if><!-- URL to ext. doc --> insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: </div> insilmaril@37: insilmaril@37: <xsl:apply-templates select="note/@href"/> insilmaril@37: insilmaril@37: <xsl:text>
</xsl:text> insilmaril@37: </xsl:template><!--gen-anchor-tag--> insilmaril@37: insilmaril@37: insilmaril@37: <xsl:template match="standardFlag"> insilmaril@37: <xsl:variable name="flag" select="concat(., '.png')" /> insilmaril@37: <img src="flags/{$flag}" valign="middle" border="0" alt="{$flag}"> insilmaril@37: </img> insilmaril@37: insilmaril@37: </xsl:template><!--standardFlag--> insilmaril@37: insilmaril@37: insilmaril@37: <xsl:template match="note/@href"> insilmaril@37: <div class="vymNote"> insilmaril@37: <xsl:variable name="actualnotename"> insilmaril@37: <xsl:value-of select="substring-after(current(),':')"/> insilmaril@37: </xsl:variable> insilmaril@37: insilmaril@37: <xsl:variable name="note-name"> insilmaril@37: <xsl:if test="$path = ''"> insilmaril@37: <xsl:value-of select="$actualnotename"/> insilmaril@37: </xsl:if> insilmaril@37: <xsl:if test="not($path = '')"> insilmaril@37: <xsl:value-of select="concat($path, '/', $actualnotename)"/> insilmaril@37: </xsl:if> insilmaril@37: </xsl:variable><!--note-name--> insilmaril@37: insilmaril@37: insilmaril@37: <xsl:if test="../@fonthint = 'fixed'"> insilmaril@37: <xsl:text disable-output-escaping="yes"><pre></xsl:text> insilmaril@37: </xsl:if> insilmaril@37: insilmaril@37: <xsl:variable name="currentID" select="@id" /> insilmaril@37: insilmaril@37: <xsl:apply-templates select="document($note-name)/note"> insilmaril@37: <xsl:with-param name="currentID" select="$currentID" /> insilmaril@37: </xsl:apply-templates> insilmaril@37: insilmaril@37: <xsl:if test="../@fonthint = 'fixed'"> insilmaril@37: <xsl:text disable-output-escaping="yes"></pre></xsl:text> insilmaril@37: </xsl:if> insilmaril@37: insilmaril@37: </div> insilmaril@37: </xsl:template><!--note/@href--> insilmaril@37: insilmaril@37: insilmaril@37: insilmaril@37: <!-- Wiki-style notation overview: insilmaril@37: Lines: insilmaril@37: + Big headlines start with the '+' character. insilmaril@37: - Small headlines start with the '-' character. insilmaril@37: Normal text doesn't have any starting notation. insilmaril@37: ! Notes start with an exclamation. insilmaril@37: . Indented text starts with a dot. insilmaril@37: ? Questions start with a question-mark, and insilmaril@37: = Answers starts with the equal-sign. insilmaril@37: * Points for a item-list insilmaril@37: # clues insilmaril@37: insilmaril@37: Links: insilmaril@37: use "{...}" or {(Clemens homepage) http://www.clemens-kraus.de/} for external links. insilmaril@37: insilmaril@37: Markup: insilmaril@37: |This is bold| text, while |/this text is italic|, |*this is pre-formatted|, and |!this is a note| insilmaril@37: --> insilmaril@37: insilmaril@37: <xsl:template match="note"> insilmaril@37: <xsl:param name="currentID"/> insilmaril@37: insilmaril@37: insilmaril@37: <xsl:call-template name="doLine"> insilmaril@37: <xsl:with-param name="content" select="concat(translate(.,$crlf,$controlCharacter), $controlCharacter)"/> insilmaril@37: <xsl:with-param name="currentID" select="$currentID"/> insilmaril@37: </xsl:call-template> insilmaril@37: </xsl:template><!--note--> insilmaril@37: insilmaril@37: insilmaril@37: insilmaril@37: insilmaril@37: insilmaril@37: <xsl:template name="getfn"> insilmaril@37: <xsl:param name="txt" select="." /> insilmaril@37: insilmaril@37: <xsl:choose> insilmaril@37: <xsl:when test="contains($txt, '/')" > insilmaril@37: <xsl:variable name="right" select="substring-after($txt, '/')" /> insilmaril@37: <xsl:if test="string-length($right)>1" > insilmaril@37: <xsl:call-template name="getfn" > insilmaril@37: <xsl:with-param name="txt" select="$right" /> insilmaril@37: </xsl:call-template> insilmaril@37: </xsl:if> insilmaril@37: </xsl:when> insilmaril@37: <xsl:otherwise> insilmaril@37: <xsl:value-of select="$txt" /> insilmaril@37: </xsl:otherwise> insilmaril@37: </xsl:choose> insilmaril@37: </xsl:template><!--getfn--> insilmaril@37: insilmaril@37: insilmaril@37: <!-- Take care of br's (WHY?) --> insilmaril@37: <xsl:template name="getheading"> insilmaril@37: <xsl:param name="txt" select="." /> insilmaril@37: <xsl:variable name="br"> insilmaril@37: <xsl:text disable-output-escaping="yes"><br></xsl:text> insilmaril@37: </xsl:variable> insilmaril@37: <xsl:choose> insilmaril@37: <xsl:when test="contains($txt, $br)" > insilmaril@37: <xsl:variable name="right" select="substring-after($txt, $br)" /> insilmaril@37: <xsl:variable name="left" select="substring-before($txt, $br)" /> insilmaril@37: <xsl:value-of select="concat( $left, ' ', $right )" /> insilmaril@37: </xsl:when> insilmaril@37: <xsl:otherwise> insilmaril@37: <xsl:value-of select="$txt" /> insilmaril@37: </xsl:otherwise> insilmaril@37: </xsl:choose> insilmaril@37: </xsl:template><!--getheading--> insilmaril@37: insilmaril@37: </xsl:stylesheet> insilmaril@37: