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">]]>&#xA;</xsl:text>
insilmaril@37: 	<html><xsl:text>&#xA;</xsl:text>
insilmaril@37: 		<head><xsl:text>&#xA;</xsl:text>
insilmaril@37: 			<title><xsl:value-of select="$header"/></title>
insilmaril@37: 			<xsl:text disable-output-escaping="yes">&#xA;<![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[">]]>&#xA;</xsl:text>
insilmaril@37: 			<meta name="generator" content="vym (http://www.insilmaril.de/vym/) and vym2html.xsl (http://www.clemens-kraus.de)"/><xsl:text>&#xA;</xsl:text>
insilmaril@37: 		</head>
insilmaril@37: 		<xsl:text>&#xA;</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>&#xA;</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>&#xA;</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>&#xA;</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>&#xA;
insilmaril@37: 	</html>&#xA;
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>&#xA;</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>&#xA;</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>&gt; </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>&#xA;</xsl:text>
insilmaril@37: 		</div>
insilmaril@37: 
insilmaril@37: 		<xsl:apply-templates select="note/@href"/>
insilmaril@37: 
insilmaril@37: 		<xsl:text>&#xA;</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">&lt;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">&lt;/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">&lt;br&gt;</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: