insilmaril@219: <?xml version="1.0" encoding="UTF-8"?> insilmaril@38: <!DOCTYPE xsl:stylesheet insilmaril@38: [ insilmaril@38: <!-- Namespace for XHTML --> insilmaril@38: <!ENTITY xhtmlns "http://www.w3.org/1999/xhtml"> insilmaril@38: ]> insilmaril@38: insilmaril@38: <!-- insilmaril@38: Document : vym2xhtml.xsl insilmaril@38: Created : 20040818 insilmaril@601: Changed : 20051123 insilmaril@38: License : GPL insilmaril@179: Version : 0.4.0 insilmaril@179: VYM version : 1.7.5 insilmaril@38: Author : Thomas Schraitle <tom_schr@web.de> insilmaril@601: modified by Clemens Kraus (http://www.clemens-kraus.de) insilmaril@38: Description : transforms vym-files into XHTML. insilmaril@38: Bugs : Many. ;) Produces at the moment not valid XHTML insilmaril@38: Needs to checked. insilmaril@179: - li/ul structure not ok insilmaril@179: Changes : - <br>s in headings removed insilmaril@179: - error fixed in "alt" and "title" insilmaril@38: --> insilmaril@38: insilmaril@38: <xsl:stylesheet version="1.0" insilmaril@38: xmlns:xsl="http://www.w3.org/1999/XSL/Transform" insilmaril@38: xmlns:date="http://exslt.org/dates-and-times" insilmaril@38: extension-element-prefixes="date" insilmaril@38: xmlns="&xhtmlns;"> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:output method="xml" insilmaril@38: doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" insilmaril@38: doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" insilmaril@38: encoding="UTF-8" insilmaril@38: indent="yes" insilmaril@38: media-type="application/xhtml+xml"/> insilmaril@38: insilmaril@38: insilmaril@38: insilmaril@38: <!-- ====================================================================== --> insilmaril@38: <!-- 1 = true, 0 = false --> insilmaril@38: insilmaril@38: <!-- URL to CSS stylesheet --> insilmaril@38: <xsl:param name="css.stylesheet" select="'vym.css'"/> insilmaril@38: insilmaril@38: <!-- Should a default CSS stylesheet be used? --> insilmaril@38: <xsl:param name="use.default.css.stylesheet" select="1"/> insilmaril@38: insilmaril@38: <!-- Should textcolors be used? --> insilmaril@38: <xsl:param name="use.textcolor" select="0"/> insilmaril@38: insilmaril@38: <!-- Should an imagemap be generated? --> insilmaril@38: <xsl:param name="use.imagemap" select="1"/> insilmaril@38: insilmaril@38: <!-- URL to image for imagemap --> insilmaril@38: <xsl:param name="imagemap" select="''"/> insilmaril@38: insilmaril@38: <!-- This stylesheet is able to process the following VYM version --> insilmaril@245: <xsl:param name="vym.version" select="'1.7.10'"/> insilmaril@38: insilmaril@38: <!-- Should the VYM XML format be checked --> insilmaril@38: <xsl:param name="checkvym.version" select="1"/> insilmaril@38: insilmaril@38: <!-- Which is the image extension? --> insilmaril@38: <xsl:param name="image.extension" select="'.png'"/> insilmaril@38: insilmaril@38: <!-- Where are the flags? --> insilmaril@38: <xsl:param name="image.flags.path" select="'flags/'"/> insilmaril@38: insilmaril@38: <!-- Filename of the XML document --> insilmaril@38: <xsl:param name="mapname" /> insilmaril@38: insilmaril@38: <!-- Should a footer be generated? --> insilmaril@38: <xsl:param name="use.footer" select="1"/> insilmaril@38: insilmaril@38: <!-- How should Links generated: insilmaril@38: name : Use only the name of the branch (default) insilmaril@38: url : Use only the URL of the branch insilmaril@38: both : Use both insilmaril@38: --> insilmaril@38: <xsl:param name="link.style" select="'name'"/> insilmaril@38: insilmaril@179: <!-- Accept different html-notes? insilmaril@179: Only for imported MindManager maps! --> insilmaril@179: <xsl:param name="use.diffnotes" select="0"/> insilmaril@38: insilmaril@38: <!-- Debuggin on/off? --> insilmaril@38: <xsl:param name="debug" select="0"/> insilmaril@179: insilmaril@179: insilmaril@38: <xsl:template name="generate.footer"> insilmaril@38: <xsl:if test="$use.footer"> insilmaril@38: <hr/> insilmaril@38: <table class="vym-footer"> insilmaril@38: <tr > insilmaril@38: <td class="vym-footerL"><xsl:value-of select="$mapname"/></td> insilmaril@38: <td class="vym-footerC"><xsl:value-of select="vymmap/@date"/> </td> insilmaril@38: <!--<td class="vym-footerC"><xsl:value-of select="date:date()"/></td>--> insilmaril@38: <td class="vym-footerR">vym <xsl:value-of select="vymmap/@version"/></td> insilmaril@38: </tr> insilmaril@38: </table> insilmaril@38: </xsl:if> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: insilmaril@38: insilmaril@38: insilmaril@38: <!-- ====================================================================== --> insilmaril@38: <xsl:variable name="head.title"> insilmaril@38: <xsl:choose> insilmaril@38: <xsl:when test="/vymmap/mapcenter/heading"> insilmaril@179: insilmaril@179: <xsl:variable name="title"> insilmaril@179: <xsl:call-template name="gettitle" > insilmaril@179: <xsl:with-param name="txt" select="/vymmap/mapcenter/heading" /> insilmaril@179: </xsl:call-template> insilmaril@179: </xsl:variable> insilmaril@179: insilmaril@179: <xsl:value-of select="$title"/> insilmaril@38: </xsl:when> insilmaril@38: <xsl:otherwise></xsl:otherwise> insilmaril@38: </xsl:choose> insilmaril@38: </xsl:variable> insilmaril@38: insilmaril@38: <xsl:variable name="default.css.stylesheet"> insilmaril@38: <xsl:text> insilmaril@38: h1 {border-width: 1; border: solid; text-align: center} insilmaril@38: div.imagemap { align: center; border: 0; } insilmaril@38: </xsl:text> insilmaril@38: </xsl:variable> insilmaril@38: insilmaril@38: insilmaril@38: <!-- ====================================================================== --> insilmaril@38: <xsl:template name="generate.head"> insilmaril@38: <head> insilmaril@38: <title><xsl:value-of select="$head.title"/></title> insilmaril@38: <xsl:if test="$use.default.css.stylesheet"> insilmaril@38: <style type="text/css"> insilmaril@38: <xsl:value-of select="$default.css.stylesheet"/> insilmaril@38: </style> insilmaril@38: </xsl:if> insilmaril@38: <xsl:if test="vymmap/@author!=''"> insilmaril@38: <meta name="author" content="{vymmap/@author}"/> insilmaril@38: </xsl:if> insilmaril@38: <xsl:if test="vymmap/@comment!=''"> insilmaril@38: <meta name="comment" content="{vymmap/@comment}"/> insilmaril@38: </xsl:if> insilmaril@38: <meta name="generator" content="vym"/> insilmaril@38: <xsl:if test="$css.stylesheet!=''"> insilmaril@38: <link rel="stylesheet" id="css.stylesheet" href="{$css.stylesheet}"/> insilmaril@38: </xsl:if> insilmaril@38: </head> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template name="check.vym.version"> insilmaril@38: <xsl:if test="$checkvym.version"> insilmaril@38: <xsl:if test="not(/vymmap/@version=$vym.version)"> insilmaril@38: <xsl:message> insilmaril@38: <xsl:text> </xsl:text> insilmaril@38: <xsl:text> WARNING:</xsl:text> insilmaril@38: <xsl:text> This stylesheet applies to VYM XML format v.</xsl:text> insilmaril@38: <xsl:value-of select="$vym.version"/> insilmaril@38: <xsl:text>. Your XML format has v</xsl:text> insilmaril@38: <xsl:value-of select="/vymmap/@version"/> insilmaril@38: <xsl:text>. Check your HTML output!</xsl:text> insilmaril@38: <xsl:text> </xsl:text> insilmaril@38: </xsl:message> insilmaril@38: </xsl:if> insilmaril@38: </xsl:if> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <!-- ====================================================================== --> insilmaril@38: <xsl:template match="*"> insilmaril@38: <xsl:message> insilmaril@38: <xsl:text>WARNING: Unknown tag "</xsl:text> insilmaril@38: <xsl:value-of select="local-name(.)"/> insilmaril@38: <xsl:text>": </xsl:text> insilmaril@38: <xsl:value-of select="normalize-space(.)"/> insilmaril@38: <xsl:text> </xsl:text> insilmaril@38: </xsl:message> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="/"> insilmaril@38: <xsl:call-template name="check.vym.version"/> insilmaril@38: insilmaril@38: <html xmlns="&xhtmlns;"> insilmaril@38: <xsl:call-template name="generate.head"/> insilmaril@38: <body> insilmaril@38: <xsl:apply-templates/> insilmaril@38: <xsl:call-template name="generate.footer"/> insilmaril@38: </body> insilmaril@38: </html> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="vymmap"> insilmaril@38: <div class="vymmap"> insilmaril@38: <xsl:apply-templates/> insilmaril@38: </div> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="mapcenter"> insilmaril@38: <div class="mapcenter"> insilmaril@38: <xsl:apply-templates/> insilmaril@38: </div> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="mapcenter/heading"> insilmaril@38: <div class="vym-header"> insilmaril@38: <xsl:apply-templates/> insilmaril@38: </div> insilmaril@38: insilmaril@38: <xsl:if test="$use.imagemap=1"> insilmaril@38: <div class="vym-imagemap"> insilmaril@38: <img src="{$imagemap}" insilmaril@38: alt="Imagemap" insilmaril@38: class="imagemap" insilmaril@38: usemap="#vym_imagemap"/> insilmaril@38: </div> insilmaril@38: <map name="vym_imagemap"> insilmaril@38: <xsl:apply-templates select="../branch" mode="imagemap"/> insilmaril@38: </map> insilmaril@38: </xsl:if> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="mapcenter/branch"> insilmaril@38: <hr/> insilmaril@38: <ul class="branch"> insilmaril@38: <xsl:apply-templates/> insilmaril@38: </ul> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="branch"> insilmaril@38: <ul class="branch"> insilmaril@38: <xsl:apply-templates/> insilmaril@38: </ul> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="heading"> insilmaril@38: <li class="heading"> insilmaril@38: <span id="{generate-id(..)}"> insilmaril@38: <xsl:if test="@textColor!='' and $use.textcolor=1"> insilmaril@38: <xsl:attribute name="style" >color: <xsl:value-of select="@textColor" /> insilmaril@38: </xsl:attribute> insilmaril@38: </xsl:if> insilmaril@38: <xsl:choose> insilmaril@38: <xsl:when test="../@url"> insilmaril@38: <xsl:variable name="url" select="../@url"/> insilmaril@38: insilmaril@38: <!-- Check, how links should be generated --> insilmaril@38: <xsl:choose> insilmaril@38: <xsl:when test="$link.style = 'name'"> insilmaril@38: <a href="{$url}"> insilmaril@306: <img src="{concat($image.flags.path,'flag-url-16x16.png')}" border="0" alt="URL"/> insilmaril@179: <xsl:text> </xsl:text> insilmaril@38: <xsl:apply-templates/> insilmaril@38: </a> insilmaril@38: </xsl:when> insilmaril@38: <xsl:when test="$link.style = 'url'"> insilmaril@38: <a href="{$url}"> insilmaril@306: <img src="{concat($image.flags.path,'flag-url-16x16.png')}" border="0" alt="URL"/> insilmaril@179: <xsl:text> </xsl:text> insilmaril@38: <xsl:value-of select="$url"/> insilmaril@38: </a> insilmaril@38: </xsl:when> insilmaril@38: <xsl:when test="$link.style = 'both'"> insilmaril@38: <a href="{$url}"> insilmaril@306: <img src="{concat($image.flags.path,'flag-url-16x16.png')}" border="0" alt="URL"/> insilmaril@179: <xsl:text> </xsl:text> insilmaril@179: <xsl:apply-templates/> (<xsl:value-of select="$url"/>) insilmaril@38: </a> insilmaril@38: </xsl:when> insilmaril@38: <xsl:otherwise> insilmaril@38: <xsl:message> insilmaril@38: <xsl:text>WARNING: Parameter link.style doesn't contain the correct</xsl:text> insilmaril@38: <xsl:text> value (name|url|both)</xsl:text> insilmaril@38: <xsl:text> was "</xsl:text> insilmaril@38: <xsl:value-of select="$link.style"/> insilmaril@38: <xsl:text>"</xsl:text> insilmaril@38: </xsl:message> insilmaril@38: <a href="{$url}"><xsl:apply-templates/></a> insilmaril@38: </xsl:otherwise> insilmaril@38: </xsl:choose> insilmaril@38: insilmaril@38: </xsl:when> insilmaril@38: <xsl:otherwise> insilmaril@179: <xsl:call-template name="gettitle" > insilmaril@179: <xsl:with-param name="txt" select="." /> insilmaril@179: </xsl:call-template> insilmaril@179: insilmaril@38: </xsl:otherwise> insilmaril@38: </xsl:choose> insilmaril@38: insilmaril@38: <xsl:for-each select="following-sibling::standardflag"> insilmaril@179: <xsl:apply-templates select="current()" mode="standardflag"/><xsl:text> </xsl:text> insilmaril@38: </xsl:for-each> insilmaril@38: </span> insilmaril@38: </li> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="floatimage"> insilmaril@38: <xsl:variable name="filename"> insilmaril@38: <xsl:choose> insilmaril@38: <xsl:when test="contains(@href,':')"> insilmaril@38: <xsl:value-of select="substring-after(@href,':')"/> insilmaril@38: </xsl:when> insilmaril@38: <xsl:otherwise> insilmaril@38: <xsl:value-of select="@href"/> insilmaril@38: </xsl:otherwise> insilmaril@38: </xsl:choose> insilmaril@38: </xsl:variable> insilmaril@38: insilmaril@38: <xsl:if test="@floatExport='true'"> insilmaril@38: <span><img src="{$filename}" alt="{$filename}"/></span> insilmaril@38: </xsl:if> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="standardflag"/><!-- Do nothing in normal mode --> insilmaril@38: insilmaril@38: <xsl:template match="standardflag" mode="standardflag"> insilmaril@38: <span class="standardflag"> insilmaril@38: <xsl:element name="img"> insilmaril@38: <xsl:variable name="_srcimg"> insilmaril@38: <xsl:choose> insilmaril@38: <xsl:when test="$image.flags.path"> insilmaril@38: <xsl:value-of select="concat($image.flags.path, insilmaril@38: ., insilmaril@38: $image.extension)"/> insilmaril@38: </xsl:when> insilmaril@38: <xsl:otherwise> insilmaril@38: <xsl:value-of select="concat(., $image.extension)"/> insilmaril@38: </xsl:otherwise> insilmaril@38: </xsl:choose> insilmaril@38: </xsl:variable> insilmaril@38: <xsl:attribute name="src"> insilmaril@38: <xsl:value-of select="$_srcimg"/> insilmaril@38: </xsl:attribute> insilmaril@38: <xsl:attribute name="alt"> insilmaril@38: <xsl:value-of select="$_srcimg"/> insilmaril@38: </xsl:attribute> insilmaril@38: </xsl:element> insilmaril@38: </span> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: <!-- Do nothing! --> insilmaril@38: <xsl:template match="select"/> insilmaril@38: <xsl:template match="setting"/> insilmaril@38: insilmaril@38: insilmaril@38: <xsl:template match="htmlnote"> insilmaril@179: <div class="vym-htmlnote"> insilmaril@179: <xsl:choose> insilmaril@179: <xsl:when test="$use.diffnotes=1"> insilmaril@179: <xsl:copy-of select="."/> insilmaril@179: </xsl:when> insilmaril@179: <xsl:otherwise> insilmaril@179: <xsl:apply-templates select=".//body/*"/><!-- Select only body elements --> insilmaril@179: </xsl:otherwise> insilmaril@179: </xsl:choose> insilmaril@38: </div> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: <!-- Do nothing! We don't need some informational elements --> insilmaril@38: <xsl:template match="htmlnote/html/*"/> insilmaril@38: insilmaril@38: <xsl:template match="htmlnote/html/body"> insilmaril@38: <xsl:copy-of select="."/> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: <xsl:template match="htmlnote/html/body/*"> insilmaril@38: <xsl:copy-of select="."/> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@38: <!-- ====================================================================== --> insilmaril@38: <xsl:template match="branch" mode="imagemap"> insilmaril@38: <xsl:param name="node"/> insilmaril@38: <xsl:variable name="title"> insilmaril@38: <xsl:apply-templates mode="imagemap"/> insilmaril@38: </xsl:variable> insilmaril@38: insilmaril@38: <xsl:if test="$debug=1"> insilmaril@38: <xsl:message> insilmaril@38: branch/heading = "<xsl:value-of select="normalize-space($title)"/>" insilmaril@38: </xsl:message> insilmaril@38: </xsl:if> insilmaril@38: insilmaril@38: <area shape="rect"> insilmaril@38: <xsl:attribute name="href"> insilmaril@38: <xsl:choose><!-- Fix begin (!) --> insilmaril@38: <xsl:when test="$imagemap != ''"> insilmaril@38: <xsl:value-of select="concat('#', generate-id(.))"/> insilmaril@38: </xsl:when> insilmaril@38: <xsl:when test="$imagemap and @url"> insilmaril@38: <xsl:value-of select="@url"/> insilmaril@38: </xsl:when> insilmaril@38: <xsl:when test="$imagemap and @vymLink"> insilmaril@38: <xsl:value-of select="concat( substring-before(@vymLink, insilmaril@38: '.vym'), '.html')"/> insilmaril@38: </xsl:when> insilmaril@38: </xsl:choose><!-- Fix end --> insilmaril@38: </xsl:attribute> insilmaril@38: <xsl:attribute name="alt"> insilmaril@179: <xsl:call-template name="gettitle" > insilmaril@179: <xsl:with-param name="txt" select="heading" /> insilmaril@179: </xsl:call-template> insilmaril@38: </xsl:attribute> insilmaril@38: <xsl:attribute name="title"> insilmaril@179: <xsl:call-template name="gettitle" > insilmaril@179: <xsl:with-param name="txt" select="heading" /> insilmaril@179: </xsl:call-template> insilmaril@38: </xsl:attribute> insilmaril@38: <xsl:attribute name="coords"> insilmaril@38: <xsl:choose> insilmaril@38: <xsl:when test="@x1!='' and @x2!='' and @y1!='' and @y2!=''"> insilmaril@38: <xsl:value-of select="@x1"/> insilmaril@38: <xsl:text>,</xsl:text> insilmaril@38: <xsl:value-of select="@y1"/> insilmaril@38: <xsl:text>,</xsl:text> insilmaril@38: <xsl:value-of select="@x2"/> insilmaril@38: <xsl:text>,</xsl:text> insilmaril@38: <xsl:value-of select="@y2"/> insilmaril@38: </xsl:when> insilmaril@38: <xsl:otherwise> insilmaril@38: <!-- insilmaril@38: <xsl:message> insilmaril@38: <xsl:text>ERROR: Some coordinates in branch are insilmaril@38: missing! </xsl:text> insilmaril@38: <xsl:text> See branch with </xsl:text> insilmaril@38: <xsl:value-of select="normalize-space($title)"/> insilmaril@179: </xsl:message> insilmaril@38: //--> insilmaril@38: </xsl:otherwise> insilmaril@38: </xsl:choose> insilmaril@38: </xsl:attribute> insilmaril@38: </area> insilmaril@38: <xsl:apply-templates select="./branch" mode="imagemap"/> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@179: <xsl:template match="heading" mode="imagemap"> insilmaril@179: <xsl:call-template name="gettitle" > insilmaril@179: <xsl:with-param name="txt" select="." /> insilmaril@179: </xsl:call-template> insilmaril@179: <!--<xsl:message>title2: <xsl:value-of select="$title" /></xsl:message>--> insilmaril@38: insilmaril@179: <xsl:apply-templates mode="imagemap"/> insilmaril@38: </xsl:template> insilmaril@38: insilmaril@38: insilmaril@179: <xsl:template match="xlink"> insilmaril@179: <xsl:element name="a"> insilmaril@179: <xsl:attribute name="name"> insilmaril@179: <xsl:value-of select="translate(@beginBranch, ':,', '')"/> insilmaril@179: </xsl:attribute> insilmaril@179: </xsl:element> insilmaril@179: insilmaril@179: <div class="xlink"> insilmaril@179: <xsl:text>See: </xsl:text> insilmaril@179: <xsl:element name="a"> insilmaril@179: <xsl:attribute name="href"> insilmaril@179: <xsl:text>#</xsl:text><!--<xsl:value-of select="translate(@endBranch, ':,', '')"/>--> insilmaril@179: </xsl:attribute> insilmaril@179: <!--<xsl:value-of select="translate(@endBranch, ':,', '')"/>-->reference insilmaril@179: </xsl:element> insilmaril@179: <!--<xsl:apply-templates/>--> insilmaril@179: <!--<xsl:message>->xlink: <xsl:value-of select="concat(@endBranch, ' ', position())" /></xsl:message>--> insilmaril@179: </div> insilmaril@179: </xsl:template> insilmaril@179: insilmaril@179: insilmaril@179: <xsl:template name="gettitle"> insilmaril@179: <xsl:param name="txt" select="." /> insilmaril@179: insilmaril@179: <xsl:variable name="br"> insilmaril@179: <xsl:text disable-output-escaping="yes"><br></xsl:text> insilmaril@179: </xsl:variable> insilmaril@179: insilmaril@179: <xsl:choose> insilmaril@179: <xsl:when test="contains($txt, $br)" > insilmaril@179: <xsl:variable name="right" select="substring-after($txt, $br)" /> insilmaril@179: <xsl:variable name="left" select="substring-before($txt, $br)" /> insilmaril@179: <xsl:variable name="txt" select="concat( $left, ' ', $right )" /> insilmaril@179: <xsl:call-template name="gettitle" > insilmaril@179: <xsl:with-param name="txt" select="$txt" /> insilmaril@179: </xsl:call-template> insilmaril@179: </xsl:when> insilmaril@179: <xsl:otherwise> insilmaril@179: <xsl:value-of select="$txt" /> insilmaril@179: </xsl:otherwise> insilmaril@179: </xsl:choose> insilmaril@179: </xsl:template> insilmaril@179: insilmaril@179: insilmaril@179: </xsl:stylesheet>