<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output method="html" encoding="ISO-8859-1"/>

	<xsl:variable name="maxcols">7</xsl:variable>
	<xsl:variable name="fontsize">+1</xsl:variable>

	<xsl:template match="/">
		<html>
			<body>
				<xsl:for-each select="bahnhof">
					<table border="1" cellpadding="3">
						<tr>
							<td align="left" colspan="{$maxcols -2}">Betriebsstelle: <b><font size="+2"><xsl:value-of select="name"/></font></b></td>
							<td align="left" colspan="2"><xsl:text disable-output-escaping="yes">K&amp;uuml;rzel: </xsl:text><b><font size="+2"><xsl:value-of select="kuerzel"/></font></b></td>
						</tr>
						<xsl:apply-templates select="plan"/>
						<xsl:call-template name="leerzeile"/>
						<xsl:apply-templates select="gleise"/>
						<xsl:call-template name="leerzeile"/>
						<xsl:apply-templates select="pv"/>
						<xsl:call-template name="leerzeile"/>
						<xsl:apply-templates select="gv"/>
						<xsl:call-template name="leerzeile"/>
						<xsl:apply-templates select="bemerkung"/>
					</table>
				</xsl:for-each>
			</body>				
		</html>
	</xsl:template>
	

	<xsl:template name="leerzeile">
		<tr><td colspan="{$maxcols}"><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></td></tr>
	</xsl:template>


	<xsl:template match="plan">
		<tr>
			<td align="center" colspan="{$maxcols}"><img src="{@src}"></img></td>
		</tr>
	</xsl:template>


	<xsl:template match="gleise">
		<tr>
			<td><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></td>
			<td align="right"><xsl:text disable-output-escaping="yes">Nutzl&amp;auml;nge</xsl:text></td>
			<td colspan="{$maxcols -2}"><xsl:text disable-output-escaping="yes">&amp;nbsp;Bemerkung</xsl:text></td>
		</tr>
		<xsl:apply-templates select="gleis"/>
	</xsl:template>


	<xsl:template match="laenge">
		<xsl:value-of select="."/>
        <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
        <xsl:choose>
			<xsl:when test="@einheit">
				<xsl:choose>
					<xsl:when test="@einheit='achsen'">Achsen</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="@einheit"/>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:when>
			<xsl:otherwise>mm</xsl:otherwise>
		</xsl:choose>
	</xsl:template>


	<xsl:template match="gleis">
		<tr>
			<td>Gleis <b><font size="{$fontsize}"><xsl:value-of select="name"/></font></b></td>
			<td align="right">
				<b><font size="{$fontsize}">
					<xsl:apply-templates select="laenge"/>
				</font></b>
			</td>
			<td colspan="{$maxcols -2}"><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><xsl:value-of select="bemerkung"/></td>
		</tr>
	</xsl:template>


	<xsl:template match="pv">
		<tr>
			<td><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></td>
			<td align="center">Gleis</td>
			<td align="right"><xsl:text disable-output-escaping="yes">L&amp;auml;nge</xsl:text></td>
			<td colspan="{$maxcols -3}" rowspan="{count(bahnsteig)+1}" align="center" valign="top">
				Bemerkungen zum Personenverkehr:<xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>
				<b><font size="{$fontsize}"><xsl:value-of select="bemerkung"/></font></b>
			</td>
		</tr>
		<xsl:apply-templates select="bahnsteig"/>
	</xsl:template>


	<xsl:template match="bahnsteig">
		<tr>
			<td>Bahnsteig <b><font size="{$fontsize}"><xsl:value-of select="name"/></font></b></td>
			<td align="center">
				<b><font size="{$fontsize}">
					<xsl:call-template name="recurse_id">
						<xsl:with-param name="key" select="'gleise'"/>
						<xsl:with-param name="idlist" select="@gleis"/>
					</xsl:call-template>
				</font></b>
			</td>
			<td align="right"><b><font size="{$fontsize}"><xsl:apply-templates select="laenge"/></font></b></td>
		</tr>
	</xsl:template>
	
	
	<xsl:key name="gleise" match="gleis" use="@id"/>
	<xsl:key name="ladestellen" match="ladestelle" use="@id"/>
	
	<xsl:template name="recurse_id">
		<xsl:param name="key"/>
		<xsl:param name="idlist"/>
		<xsl:variable name="normidlist" select="concat(normalize-space($idlist),' ')"/>
		<xsl:variable name="firstid" select="substring-before($normidlist,' ')"/>
		<xsl:variable name="restidlist" select="substring-after($normidlist,' ')"/>
		<xsl:if test="$firstid != ''">
			<xsl:value-of select="key($key,$firstid)/name"/>
			<xsl:if test="$restidlist != ''">
				<xsl:text disable-output-escaping="yes">, </xsl:text>
				<xsl:call-template name="recurse_id">
					<xsl:with-param name="key" select="$key"/>
					<xsl:with-param name="idlist" select="$restidlist"/>
				</xsl:call-template>
			</xsl:if>
		</xsl:if>
	</xsl:template>


	<xsl:template match="gv">
		<tr>
			<td>Ladestelle</td>
			<td align="center">Gleis</td>
			<td align="right"><xsl:text disable-output-escaping="yes">L&amp;auml;nge</xsl:text></td>
			<td colspan="{$maxcols -3}" rowspan="{count(ladestelle)+1}" align="center" valign="top">
				<xsl:text disable-output-escaping="yes">Bemerkungen zum G&amp;uuml;terverkehr:&lt;br&gt;</xsl:text>
				<b><font size="{$fontsize}"><xsl:value-of select="bemerkung"/></font></b>
			</td>
		</tr>
		<xsl:apply-templates select="ladestelle"/>
		<xsl:call-template name="leerzeile"/>
		<tr>
			<td colspan="2"><xsl:text disable-output-escaping="yes">Versender/Empf&amp;auml;nger</xsl:text></td>
			<td align="center">Ladestelle</td>
			<td align="center">Versand/Empfang</td>
			<td>Ladegut</td>
			<td align="center">Wagengattung</td>
			<td>Wagenmenge</td>
		</tr>
		<xsl:apply-templates select="verlader"/>
	</xsl:template>


	<xsl:template match="ladestelle">
		<tr>
			<td><b><font size="{$fontsize}"><xsl:value-of select="name"/></font></b></td>
			<td align="center">
				<b><font size="{$fontsize}">
					<xsl:call-template name="recurse_id">
						<xsl:with-param name="key" select="'gleise'"/>
						<xsl:with-param name="idlist" select="@gleis"/>
					</xsl:call-template>
				</font></b>
			</td>
			<td align="right"><b><font size="{$fontsize}"><xsl:apply-templates select="laenge"/></font></b></td>
		</tr>
	</xsl:template>


	<xsl:template match="verlader">
		<tr>
			<td rowspan="{count(versand/ladegut)+count(empfang/ladegut)+1}" colspan="2"><b><font size="{$fontsize}"><xsl:value-of select="name"/></font></b></td>
			<td rowspan="{count(versand/ladegut)+count(empfang/ladegut)+1}" align="center">
				<b><font size="{$fontsize}">
					<xsl:call-template name="recurse_id">
						<xsl:with-param name="key" select="'ladestellen'"/>
						<xsl:with-param name="idlist" select="@ladestelle"/>
					</xsl:call-template>
				</font></b>
			</td>
		</tr>
		<xsl:apply-templates select="versand|empfang"/>
	</xsl:template>


	<xsl:template match="versand|empfang">
		<xsl:for-each select="ladegut">
			<tr>
				<td align="center">
					<b><font size="{$fontsize}">
						<xsl:choose>
							<xsl:when test="local-name(..)='empfang'">E</xsl:when>
							<xsl:otherwise>V</xsl:otherwise>
						</xsl:choose>
					</font></b>
				</td>
				<td><b><font size="{$fontsize}"><xsl:value-of select="name"/></font></b></td>
				<td align="center"><b><font size="{$fontsize}"><xsl:value-of select="gattung"/></font></b></td>
				<td nowrap="nowrap"><b><font size="{$fontsize}"><xsl:apply-templates select="wagen"/></font></b></td>
			</tr>
		</xsl:for-each>
	</xsl:template>


	<xsl:template match="wagen">
		<xsl:value-of select="."/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>/<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><xsl:choose>
			<xsl:when test="@zeitraum">
				<xsl:choose>
					<xsl:when test="@zeitraum='tag'">
						Tag
					</xsl:when>
					<xsl:when test="@zeitraum='woche'">
						Woche
					</xsl:when>
				</xsl:choose>
			</xsl:when>
			<xsl:otherwise>Woche</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<xsl:template match="bemerkung">
		<tr>
			<td colspan="{$maxcols}">
				Allgemeine Bemerkungen zur Betriebsstelle:<xsl:text disable-output-escaping="yes">&lt;br&gt;&lt;br&gt;</xsl:text>
				<b><font size="{$fontsize}"><xsl:value-of select="."/></font></b>
			</td>
		</tr>
	</xsl:template>

</xsl:stylesheet>

