<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:cif="cif">

	<!--
	//ARTC AMT-FM-010A version 2.0
	//Designed for AMT-FM-009 version 2.0 format
	//This has been supplied for ease of generating CurvatureMasters but ARTC does not certify the output will meet ARTC acceptance.  Users of this report shall still validate the output is suitable for ARTC acceptance.
	//Version history:
	//V1.0 - Inital release
	//V1.1 -  Update for new OpenRail format report and included checks.  Also aligns with AMT-FM-009.
	//V1.2 - Update of vertical curve radius not reporting - values for sag.
	//V2.0 - Addition of Corridor
	//Alastair Sharpe 25 August 2026
	-->
    <xsl:param name="xslShowHelp" select="cif:xslShowHelp"/>
    <xsl:param name="xslResourceDirectory" select="cif:xslResourceDirectory"/>

	<xsl:variable name="xslOrdinatePrecision" select="'#0.000'"/>
	<xsl:variable name="xslElevationPrecision" select="'#0.0000'"/>
	<xsl:variable name="xslGradePrecision" select="'#0.0000'"/>
	<xsl:variable name="xslGrade1inXPrecision" select="'#0'"/>
	<xsl:variable name="xslDistancePrecision" select="'#0.000000'"/>
	<xsl:variable name="xslRadiusPrecision" select="'#0.000'"/>
	<xsl:variable name="xsllengthPrecision" select="'#0.000'"/>
	<xsl:variable name="xslCantPrecision" select="'#0'"/>
	<xsl:variable name="xslSpeedPrecision" select="'#0'"/>
				
    <xsl:template match="/">
        <xsl:variable name="gridOut" select="cif:SetGridOut(number(InRoads/@outputGridScaleFactor))"/>
        <html>
            <head>
                <link rel="stylesheet" type="text/css" href="{$xslResourceDirectory}/engtheme.css"/>
                <title lang="en">ARTC Curvature Master Format Report</title>
            </head>
				<style type="text/css">
				td
				{
					font-size: 10pt;
					border-style: solid;
					border-width: 0.1pt;
					border-color: black;
				}
				th
				{
					font-size: 10pt;
					color: #000000;
					font-style: normal;
					font-weight: bold;
					font-family: arial;
					border-style: solid;
					border-width: 0.1pt;
					border-color: black;
					vertical-align:center;
				}
			</style>
            <body style="background-image: none; border-width: 0.1pt; border-color: black; font-weight: normal;">
                <xsl:choose>
                    <xsl:when test="$xslShowHelp = 'true'">
                        <xsl:call-template name="StyleSheetHelp"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:for-each select="InRoads">
                        	<xsl:for-each select="GeometryProject">

								<table cellspacing="1" cellpadding="2" table-layout="fixed" style="table-row-height: 17px;">
								<tr>
									<td style="font-size: 10pt; border-width: 0px; width:730px;" align="left" colspan="7">DATE: <xsl:value-of select="@lastRevisedDate"/></td>
									<td style="font-size: 10pt; border-width: 0px; width:730px;" align="left" colspan="7">ARTC CurvatureMaster</td>
								</tr>
								<tr>
								<td style="font-size: 10pt; border-width: 0px; width:730px;" align="left" colspan="7">&#xa0;</td>
								<td style="font-size: 10pt; border-width: 0px; width:730px;" align="left" colspan="7">AMT-FM-010A version 2.0</td>
								</tr>
								</table>

                        		<xsl:for-each select="HorizontalAlignment[*/*]">
                        			<xsl:sort select="@name" data-type="text" order="ascending"/>

									<table cellspacing="1" cellpadding="2" table-layout="fixed" style="table-row-height: 17px;">
									<tbody>
										<tr><td style="border-width: 0px; width:130px;" align="left">&#xa0;</td></tr>
										<tr>
											<td style="border-width: 0px; width:130px; font-weight: bold;" align="left">Alignment Name:&#xa0;</td>
											<td style="border-width: 0px; width:500px;" align="left" colspan="5"><xsl:value-of select="@name"/></td>
										</tr>
										<tr>
											<td style="border-width: 0px;" colspan="25">&#xa0;</td>
										</tr>
										<tr>
											<td style="border-width: 0px; font-weight: bold;" align="left">CHECKS</td>
										</tr>
										<tr>
											<td style="border-width: 0px; font-weight: bold;" align="right" colspan="3">Report has horizontal data?:</td>
											<xsl:choose>
												<xsl:when test="HorizontalElements">
												<td style="border-width: 0px;">Yes</td>
												</xsl:when>
												<xsl:otherwise><td style="border-width: 0px;">No</td></xsl:otherwise>
											</xsl:choose>
										</tr>
										<tr>
											<td style="border-width: 0px; font-weight: bold;" align="right" colspan="3">Report has vertical data?:</td>
											<xsl:choose>
												<xsl:when test="VerticalAlignment">
												<td style="border-width: 0px;">Yes</td>
												</xsl:when>
												<xsl:otherwise><td style="border-width: 0px;">No</td></xsl:otherwise>
											</xsl:choose>
										</tr>
										<tr>
											<td style="border-width: 0px; font-weight: bold;" align="right" colspan="3">Report has cant data?:</td>
											<xsl:choose>
												<xsl:when test="Superelevation">
												<td style="border-width: 0px;">Yes</td>
												</xsl:when>
												<xsl:otherwise><td style="border-width: 0px;">No</td></xsl:otherwise>
											</xsl:choose>
										</tr>
										<tr>
											<td style="border-width: 0px; font-weight: bold;" align="right" colspan="3">Vertical aligns with horizontal data?:</td>
												<xsl:variable name="verticalStart" select="VerticalAlignment/VerticalElements/*[1]/VerticalStart/station/@externalStation"/>
												<xsl:variable name="verticalEnd" select="VerticalAlignment/VerticalElements/*[position()=last()]/VerticalEnd/station/@externalStation"/>
												<xsl:variable name="hStart" select="HorizontalElements/*[1]/Start/station/@externalStation"/>
												<xsl:variable name="hEnd" select="HorizontalElements/*[position()=last()]/End/station/@externalStation"/>
												<xsl:choose>
													<xsl:when test="$hStart &lt;= $verticalStart and $hEnd &gt;= $verticalEnd">
														<td style="border-width: 0px;">Yes</td>
													</xsl:when>
													<xsl:otherwise><td style="border-width: 0px;">No</td></xsl:otherwise>
												</xsl:choose>
										</tr>
										<tr>
											<td style="border-width: 0px; font-weight: bold;" align="right" colspan="3">Super aligns with horizontal data?:</td>
												<xsl:variable name="cantStart" select="VerticalAlignment/VerticalElements/*[1]/VerticalStart/station/@externalStation"/>
												<xsl:variable name="cantEnd" select="VerticalAlignment/VerticalElements/*[position()=last()]/VerticalEnd/station/@externalStation"/>
												<xsl:variable name="hStart" select="HorizontalElements/*[1]/Start/station/@externalStation"/>
												<xsl:variable name="hEnd" select="HorizontalElements/*[position()=last()]/End/station/@externalStation"/>
												<xsl:choose>
													<xsl:when test="$hStart &lt;= $cantStart and $hEnd &gt;= $cantEnd">
														<td style="border-width: 0px;">Yes</td>
													</xsl:when>
													<xsl:otherwise><td style="border-width: 0px;">No</td></xsl:otherwise>
												</xsl:choose>
										</tr>
										<tr><td style="border-width: 0px; width:500px;">&#xa0;</td></tr>
										<tr><td style="border-width: 0px; width:500px;">&#xa0;</td></tr>
										<tr>
										<td style="border-width: 0px; width:500px; align=center; colspan=23; font-weight: bold;">HorizontalMaster</td>
										</tr>
										<tr>
											<th lang="en" align="center"  style="width:130px;">Corridor</th>
											<th lang="en" align="center"  style="width:130px;">CorridorDescription</th>
											<th lang="en" align="center"  style="width:130px;">BaseCode</th>
											<th lang="en" align="center"  style="width:130px;">BaseCodeDescription</th>
											<th lang="en" align="center"  style="width:130px;">Curve Type</th>
											<th lang="en" align="center"  style="width:130px;">Aspect</th>
											<th lang="en" align="center"  style="width:130px;">StartDescription</th>
											<th lang="en" align="center"  style="width:130px;">KMStart (km)</th>
											<th lang="en" align="center"  style="width:130px;">Radius1</th>
											<th lang="en" align="center"  style="width:130px;">StartSuper</th>
											<th lang="en" align="center"  style="width:130px;">NorthStart</th>
											<th lang="en" align="center"  style="width:130px;">EastStart</th>										
											<th lang="en" align="center"  style="width:130px;">EndDescription</th>
											<th lang="en" align="center"  style="width:130px;">KmEnd (km)</th>
											<th lang="en" align="center"  style="width:130px;">Radius2</th>
											<th lang="en" align="center"  style="width:130px;">EndSuper</th>											
											<th lang="en" align="center"  style="width:130px;">NorthEnd</th>
											<th lang="en" align="center"  style="width:100px;">EastEnd</th>
											<th lang="en" align="center"  style="width:100px;">Length (m)</th>
											<th lang="en" align="center"  style="width:100px;">DesignSpeedFreight [km/h]</th>	
											<th lang="en" align="center"  style="width:100px;">DesignSpeedPassenger [km/h]</th>											
											<th lang="en" align="center"  style="width:100px;">Comment</th>
											<th lang="en" align="center"  style="width:100px;">Quality</th>
											<th lang="en" align="center"  style="width:100px;">Rating</th>
											<th lang="en" align="center"  style="width:100px;">CoordinateSystem</th>	
											<th lang="en" align="center"  style="width:100px;">Zone</th>	
											<th lang="en" align="center"  style="width:100px;">Date Installed</th>										
										</tr>
										<xsl:apply-templates select="HorizontalElements/*" />
										
<tr><td style="border-width: 0px; width:130px;" align="left">&#xa0;</td></tr>
									</tbody>
									</table>

<table cellspacing="1" cellpadding="2" table-layout="fixed" style="table-row-height: 17px;">
										<tr>
										<td style="border-width: 0px; width:500px; align=center; colspan=23; font-weight: bold;">VerticalMaster</td>
										</tr>
									<tbody>
										<tr>
											<th lang="en" align="center"  style="width:130px;">Corridor</th>
											<th lang="en" align="center"  style="width:130px;">CorridorDescription</th>
											<th lang="en" align="center"  style="width:130px;">BaseCode</th>
											<th lang="en" align="center"  style="width:130px;">BaseCodeDescription</th>
											<th lang="en" align="center"  style="width:130px;">Curve Type</th>
											<th lang="en" align="center"  style="width:130px;">StartDescription</th>									
											<th lang="en" align="center"  style="width:130px;">KmStart (km)</th>
											<th lang="en" align="center"  style="width:130px;">NorthStart</th>
											<th lang="en" align="center"  style="width:130px;">EastStart</th>											
											<th lang="en" align="center"  style="width:130px;">Start Elevation (m)</th>											
											<th lang="en" align="center"  style="width:130px;">Start Grade (%)</th>
											<th lang="en" align="center"  style="width:130px;">EndDescription</th>									
											<th lang="en" align="center"  style="width:130px;">KmEnd (km)</th>										
											<th lang="en" align="center"  style="width:130px;">NorthEnd</th>
											<th lang="en" align="center"  style="width:100px;">EastEnd</th>
											<th lang="en" align="center"  style="width:100px;">End Elevation</th>
											<th lang="en" align="center"  style="width:100px;">End Grade (%)</th>
											<th lang="en" align="center"  style="width:100px;">CurvRad (m)</th>	
											<th lang="en" align="center"  style="width:100px;">Grade (1 in x)</th>										
											<th lang="en" align="center"  style="width:100px;">Length (m)</th>
											<th lang="en" align="center"  style="width:100px;">Rise/Fall</th>
											<th lang="en" align="center"  style="width:100px;">Comment</th>
											<th lang="en" align="center"  style="width:100px;">Quality</th>
											<th lang="en" align="center"  style="width:100px;">Rating</th>
											<th lang="en" align="center"  style="width:100px;">CoordinateSystem</th>	
											<th lang="en" align="center"  style="width:100px;">Zone</th>	
											<th lang="en" align="center"  style="width:100px;">Date Installed</th>												
										</tr>
										<xsl:for-each select="VerticalAlignment">
											<xsl:apply-templates select="VerticalElements/VerticalLine | VerticalElements/VerticalSymmetricalParabola | VerticalElements/VerticalCircle"/>
										</xsl:for-each>
											
										<tr><td style="border-width: 0px; width:130px;" align="left">&#xa0;</td></tr>
										<tr><td style="border-width: 0px; width:130px;" align="left">&#xa0;</td></tr>
									</tbody>
									</table>
									
									<div style="text-align: center; font-weight: bold;">EqualityPts</div>
									
									<table cellspacing="1" cellpadding="2" table-layout="fixed" style="table-row-height: 17px;">
									<tbody>
										<tr>
											<th lang="en" align="center"  style="width:130px;">Corridor</th>
											<th lang="en" align="center"  style="width:130px;">CorridorDescription</th>
											<th lang="en" align="center"  style="width:130px;">BaseCode</th>
											<th lang="en" align="center"  style="width:130px;">BaseCodeDescription</th>
											<th lang="en" align="center"  style="width:130px;">Back Station (km)</th>
											<th lang="en" align="center"  style="width:130px;">Ahead Station (km)</th>
											<th lang="en" align="center"  style="width:130px;">Northing</th>
											<th lang="en" align="center"  style="width:130px;">Easting</th>											
											<th lang="en" align="center"  style="width:100px;">Comment</th>
											<th lang="en" align="center"  style="width:100px;">Quality</th>
											<th lang="en" align="center"  style="width:100px;">Rating</th>
											<th lang="en" align="center"  style="width:100px;">CoordinateSystem</th>	
											<th lang="en" align="center"  style="width:100px;">Zone</th>	
											<th lang="en" align="center"  style="width:100px;">Date Installed</th>												
										</tr>
										
										<xsl:for-each select="HorizontalElements/HorizontalLine">	
											<xsl:if test="StationEquation">
												<xsl:for-each select="StationEquation">
													<tr>
													<td align="left" lang="en">&#xa0;</td>
													<td align="left" lang="en">&#xa0;</td>	
													<td align="right" style="white-space:nowrap">
														<xsl:value-of select="format-number(number(@backStation) div 1000, $xslDistancePrecision)"/>
													</td>				  	
													<td align="right" style="white-space:nowrap">
														<xsl:value-of select="format-number(number(@aheadStation) div 1000, $xslDistancePrecision)"/>
													</td>				  			
													  <td align="right">
														<xsl:value-of select="cif:ordinateFormat(number(GeometryPoint/@northing))"/>
													  </td>
													  <td align="right">
														<xsl:value-of select="cif:ordinateFormat(number(GeometryPoint/@easting))"/>
													  </td>
													<td align="left" lang="en">&#xa0;</td>	
													<td align="left" lang="en">&#xa0;</td>
													<td align="left" lang="en">&#xa0;</td>	
													<td align="left" lang="en">&#xa0;</td>
													<td align="left" lang="en">&#xa0;</td>	
													<td align="left" lang="en">&#xa0;</td>														
													</tr>
											</xsl:for-each>
										</xsl:if>
									</xsl:for-each>
											
										<tr><td style="border-width: 0px; width:130px;" align="left">&#xa0;</td></tr>
										<tr><td style="border-width: 0px; width:130px;" align="left">&#xa0;</td></tr>
									</tbody>
									</table>





                           		</xsl:for-each>
                            </xsl:for-each>
                        </xsl:for-each>
                    </xsl:otherwise>
                </xsl:choose>
            </body>
        </html>
    </xsl:template>


   <!-- Vertical Alignment Linear Data -->
    <xsl:template match="VerticalLine">
        <tr>			
		
		<!-- CorridorDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Corridor -->
		<td align="left" lang="en">&#xa0;</td>				
		
		<!-- BaseCodeDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- BaseCode -->
		<td align="left" lang="en">&#xa0;</td>				
						
		<!-- CurveType -->				
        <td align="left" lang="en">Linear</td>

		<!-- StartDescription -->
		<td align="left" lang="en">
			<xsl:choose>
				<xsl:when test="string(VerticalStart/@pointType) = 'POB'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'PVC'">
					SVC
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'PVT'">
					EVC
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'PVI'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'POE'">
					IP
				</xsl:when>
				<xsl:otherwise>
					CHECK
				</xsl:otherwise>
			</xsl:choose>
		</td>			
	
 <!-- Km Start -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(VerticalStart/station/@externalStation) div 1000, $xslDistancePrecision)"/>
		</td>

  <!-- Start Northing -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalStart/@northing )),$xslOrdinatePrecision)"/>
            	</td>
  <!-- Start Easting -->
		<td align="right" style="white-space:nowrap">
                	<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalStart/@easting )),$xslOrdinatePrecision)"/>
            	</td>			
	
<!-- Start Elevation -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(VerticalStart/@elevation),$xslElevationPrecision)"/>
		</td>

<!-- Start Grade-->
			<td class="side" align="center">
				<xsl:value-of select="format-number((number(@grade) * 100),$xslGradePrecision)"/>
			</td>

		<!-- EndDescription -->				
		<td align="left" lang="en">
			<xsl:choose>
				<xsl:when test="string(VerticalEnd/@pointType) = 'POB'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'PVC'">
					SVC
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'PVT'">
					EVC
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'PVI'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'POE'">
					IP
				</xsl:when>
				<xsl:otherwise>
					CHECK
				</xsl:otherwise>
			</xsl:choose>
		</td>	

<!-- KM END -->
			<td class="side" align="right">
				<xsl:value-of select="format-number(number(VerticalEnd/station/@externalStation) div 1000, $xslDistancePrecision)"/>
			</td>

<!-- End Northing -->
			<td align="right" style="white-space:nowrap">
				<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalEnd/@northing)),$xslOrdinatePrecision)"/>
            		</td>

<!-- End Easting -->
			<td align="right" style="white-space:nowrap">
                		<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalEnd/@easting)),$xslOrdinatePrecision)"/>
            		</td>

<!-- End Elevation-->
			<td class="side" align="right">
				<xsl:value-of select="format-number(number(VerticalEnd/@elevation),$xslElevationPrecision)"/>
			</td>

<!-- End Grade-->
			<td class="side" align="center">
				<xsl:value-of select="format-number((number(@grade) * 100),$xslGradePrecision)"/>
			</td>
			
			<!-- CurvRad -->
			<td align="left" lang="en">&#xa0;</td>	
			
<!-- Grade (1 in x) -->
			<td class="side" align="right">
				<xsl:choose>
					<xsl:when test="number(@grade) = 0">
							Level
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="format-number((1 div number(@grade)),$xslGrade1inXPrecision)"/>
					</xsl:otherwise>
				</xsl:choose>
			</td>		
						
<!-- Length-->

			<td align="right">
				<xsl:value-of select="format-number(number(@length),$xsllengthPrecision)"/>
			</td>

 <!-- Rise/Fall-->
 			<xsl:if test="number(@grade) &lt; 0">
           			<td align="left" lang="en">Fall</td>
 			</xsl:if>

 			<xsl:if test="number(@grade) &gt; 0">
           			<td align="left" lang="en">Rise</td>
 			</xsl:if>
 			<xsl:if test="number(@grade) = 0">
           			<td align="left" lang="en">Level</td>
 			</xsl:if>
			
<!-- Comment -->
			<td align="left" lang="en">&#xa0;</td>
<!-- Quality -->
			<td align="left" lang="en">&#xa0;</td>			
<!-- Rating -->
			<td align="left" lang="en">&#xa0;</td>	
<!-- CordinateSystem -->
			<td align="left" lang="en">&#xa0;</td>	
<!-- Zone -->
			<td align="left" lang="en">&#xa0;</td>
<!-- Date Installed -->
			<td align="left" lang="en">&#xa0;</td>				
			
        </tr>			
    </xsl:template>

<!-- Vertical Alignment Symmetrical Parabola Data -->
    <xsl:template match="VerticalSymmetricalParabola">
		<tr>
		    
		<!-- CorridorDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Corridor -->
		<td align="left" lang="en">&#xa0;</td>

		<!-- BaseCodeDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- BaseCode -->
		<td align="left" lang="en">&#xa0;</td>		
			
		<!-- Curve Type -->
		<td align="left" lang="en">Parabola</td>
		
		<!-- StartDescription -->				
        <td align="left" lang="en">
			<xsl:choose>
				<xsl:when test="string(VerticalStart/@pointType) = 'POB'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'PVC'">
					SVC
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'PVT'">
					EVC
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'PVI'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalStart/@pointType) = 'POE'">
					IP
				</xsl:when>
				<xsl:otherwise>
					CHECK
				</xsl:otherwise>
			</xsl:choose>
		</td>
		
		<!-- Start Chainage -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(VerticalStart/station/@externalStation) div 1000, $xslDistancePrecision)"/>
		</td>

		<!-- Start Northing -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalStart/@northing )),$xslOrdinatePrecision)"/>
            	</td>
		<!-- Start Easting -->
		<td align="right" style="white-space:nowrap">
                	<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalStart/@easting )),$xslOrdinatePrecision)"/>
            	</td>

		<!-- Start Elevation -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(VerticalStart/@elevation),$xslElevationPrecision)"/>
		</td>

		<!-- Start Grade-->
		<td class="side" align="center">
			<xsl:value-of select="format-number((number(@startGrade) * 100),$xslGradePrecision)"/>
		</td>

		<!-- EndDescription -->				
		<td align="left" lang="en">
			<xsl:choose>
				<xsl:when test="string(VerticalEnd/@pointType) = 'POB'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'PVC'">
					SVC
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'PVT'">
					EVC
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'PVI'">
					IP
				</xsl:when>
				<xsl:when test="string(VerticalEnd/@pointType) = 'POE'">
					IP
				</xsl:when>
				<xsl:otherwise>
					CHECK
				</xsl:otherwise>
			</xsl:choose>
		</td>		

		<!-- End Chainage-->
			<td class="side" align="right">
				<xsl:value-of select="format-number(number(VerticalEnd/station/@externalStation) div 1000, $xslDistancePrecision)"/>
			</td>

<!-- End Northing -->
			<td align="right" style="white-space:nowrap">
				<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalEnd/@northing)),$xslOrdinatePrecision)"/>
            		</td>

<!-- End Easting -->
			<td align="right" style="white-space:nowrap">
                		<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalEnd/@easting)),$xslOrdinatePrecision)"/>
            		</td>

<!-- End Elevation-->
			<td class="side" align="right">
				<xsl:value-of select="format-number(number(VerticalEnd/@elevation),$xslElevationPrecision)"/>
			</td>

<!-- End Grade-->
			<td class="side" align="right">
				<xsl:value-of select="format-number((number(@endGrade) * 100),$xslGradePrecision)"/>
			</td>
	
	<!-- CurvRad (m) -->
			<td class="side" align="right">
				<xsl:choose>
					<!-- Test if the curve direction attribute is explicitly concave (sag) -->
					<xsl:when test="@type = 'sag'">
						<!-- Force a minus sign -->
						-<xsl:value-of select="format-number(number(@eqvRadius),$xslRadiusPrecision)"/>
					</xsl:when>
					<!-- Standard fallback for crest (convex) curves -->
					<xsl:otherwise>
						<xsl:value-of select="format-number(number(@eqvRadius),$xslRadiusPrecision)"/>>
					</xsl:otherwise>
				</xsl:choose>
			</td>
	
		<!-- Grade (1 in x) -->
		<td align="left" lang="en">&#xa0;</td>			
			
			
<!-- Length-->

			<td align="right">
				<xsl:value-of select="format-number(number(@verticalCurveLength),$xsllengthPrecision)"/>
			</td>

 <!-- Rise/Fall-->
			<td align="left" lang="en">&#xa0;</td>	

<!-- Comment -->
			<td align="left" lang="en">&#xa0;</td>
<!-- Quality -->
			<td align="left" lang="en">&#xa0;</td>			
<!-- Rating -->
			<td align="left" lang="en">&#xa0;</td>	
<!-- CordinateSystem -->
			<td align="left" lang="en">&#xa0;</td>	
<!-- Zone -->
			<td align="left" lang="en">&#xa0;</td>
<!-- Date Installed -->
			<td align="left" lang="en">&#xa0;</td>

        </tr>			


		<!-- VIP point -->
		<tr>    
		
		<!-- CorridorDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Corridor -->
		<td align="left" lang="en">&#xa0;</td>

		<!-- BaseCodeDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- BaseCode -->
		<td align="left" lang="en">&#xa0;</td>		
			
		<!-- Curve Type -->
		<td align="left" lang="en">Parabola</td>
		
		<!-- StartDescription -->				
        <td align="left" lang="en">IP</td>	
		
		<!-- Start Chainage -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(PVI/station/@externalStation) div 1000, $xslDistancePrecision)"/>
		</td>

		<!-- Start Northing -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(cif:ordinateFormat(number(PVI/@northing )),$xslOrdinatePrecision)"/>
		</td>
		<!-- Start Easting -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(cif:ordinateFormat(number(PVI/@easting )),$xslOrdinatePrecision)"/>
		</td>

		<!-- Start Elevation -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(PVI/@elevation),$xslElevationPrecision)"/>
		</td>

		<!-- Start Grade-->
		<td class="side" align="center">&#xa0;</td>

		<!-- EndDescription -->				
        <td align="left" lang="en">&#xa0;</td>		

		<!-- End Chainage-->
			<td class="side" align="right">&#xa0;</td>

		<!-- End Northing -->
			<td align="right" style="white-space:nowrap">&#xa0;</td>

		<!-- End Easting -->
			<td align="right" style="white-space:nowrap">&#xa0;</td>

		<!-- End Elevation-->
		<td class="side" align="right">&#xa0;</td>

		<!-- End Grade-->
			<td class="side" align="center">&#xa0;</td>
		<!-- CurvRad (m) -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(@eqvRadius),$xslRadiusPrecision)"/>
		</td>

		<!-- Grade (1 in x) -->
		<td align="left" lang="en">&#xa0;</td>			
				
		<!-- Length-->
			<td align="right">&#xa0;</td>

		<!-- Rise/Fall-->
			<td align="left" lang="en">&#xa0;</td>	

		<!-- Comment -->
			<td align="left" lang="en">&#xa0;</td>
		<!-- Quality -->
			<td align="left" lang="en">&#xa0;</td>			
		<!-- Rating -->
			<td align="left" lang="en">&#xa0;</td>	
		<!-- CordinateSystem -->
			<td align="left" lang="en">&#xa0;</td>	
		<!-- Zone -->
			<td align="left" lang="en">&#xa0;</td>
		<!-- Date Installed -->
			<td align="left" lang="en">&#xa0;</td>		
		</tr>


		
    </xsl:template>

    <!-- Vertical Alignment Circle Data -->
    <xsl:template match="VerticalCircle">
		<tr>
		    <td align="left" lang="en">VERTICAL ELEMENT</td>
			<td align="left" lang="en">Circular</td>
 <!-- Start Chainage -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(VerticalStart/station/@externalStation) div 1000, $xslDistancePrecision)"/>
		</td>

<!-- Start Northing -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalStart/@northing )),$xslOrdinatePrecision)"/>
            	</td>
<!-- Start Easting -->
		<td align="right" style="white-space:nowrap">
                	<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalStart/@easting )),$xslOrdinatePrecision)"/>
            	</td>

<!-- Start Elevation -->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(VerticalStart/@elevation),$xslElevationPrecision)"/>
		</td>

<!-- Start Grade-->
			<td class="side" align="center">
				<xsl:value-of select="format-number((number(@startGrade) * 100),$xslGradePrecision)"/>
			</td>
	
<!-- End Chainage-->
			<td class="side" align="right">
				<xsl:value-of select="format-number(number(VerticalEnd/station/@externalStation) div 1000, $xslDistancePrecision)"/>
			</td>

<!-- End Northing -->
			<td align="right" style="white-space:nowrap">
				<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalEnd/@northing)),$xslOrdinatePrecision)"/>
            		</td>

<!-- End Easting -->
			<td align="right" style="white-space:nowrap">
                		<xsl:value-of select="format-number(cif:ordinateFormat(number(VerticalEnd/@easting)),$xslOrdinatePrecision)"/>
            		</td>

<!-- End Elevation-->
			<td class="side" align="right">
				<xsl:value-of select="format-number(number(VerticalEnd/@elevation),$xslElevationPrecision)"/>
			</td>

<!-- End Grade-->
			<td class="side" align="center">
				<xsl:value-of select="format-number((number(@endGrade) * 100),$xslGradePrecision)"/>
			</td>
<!-- Length-->

			<td align="right">
				<xsl:value-of select="format-number(number(@length),$xsllengthPrecision)"/>
			</td>

 <!-- Rise/Fall-->
 			<xsl:if test="number(@endGrade) &lt; 0">
           			<td align="left" lang="en">Fall</td>
 			</xsl:if>

 			<xsl:if test="number(@endGrade) &gt; 0">
           			<td align="left" lang="en">Rise</td>
 			</xsl:if>
 			<xsl:if test="number(@endGrade) = 0">
           			<td align="left" lang="en">Level</td>
 			</xsl:if>

        </tr>				
    </xsl:template>

 <xsl:template match="HorizontalLine | HorizontalSpiral | HorizontalCircle">
	 
	<xsl:variable name="startStation" select="Start/station/@externalStation"/>
	<xsl:variable name="EndStation" select="End/station/@externalStation"/>
	<xsl:variable name="PrevstartStation" select="preceding-sibling::*[1]/Start/station/@externalStation"/>
	<xsl:variable name="PrevEndStation" select="preceding-sibling::*[1]/End/station/@externalStation"/>
	
	<!-- Need to check if CANT data aligns with horizontal -->
	<xsl:for-each select="../../Superelevation/CantAlignment/Cant">
		<xsl:choose>
			<xsl:when test="(Start/station/@externalStation = $startStation)">
				<!-- No action needed, CANT aligns with horizontal element -->
			</xsl:when>
			<xsl:otherwise>
				<!-- Check if there is cant data between the end of the previous horizontal element and this start element-->
				<xsl:if test="Start/station/@externalStation &lt;= $startStation and Start/station/@externalStation &gt; $PrevstartStation">
				
					<!-- Check if there is actually any change in the cant data. -->
					<xsl:if test="not(preceding-sibling::*[1]/@appliedCant = @appliedCant)">
						<tr>
							<!-- CorridorDescription -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- Corridor -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- BaseCodeDescription -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- BaseCode -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- Curve Type -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- Aspect -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- Start Description-->					
							<td align="left" lang="en">&#xa0;</td>					
							<!-- KmStart -->
							<td><xsl:value-of select="format-number(number(Start/station/@externalStation) div 1000, $xslDistancePrecision)"/></td>
							<!-- Radius1 -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- StartSuper -->
							<td align="right" lang="en">
								<xsl:value-of select="format-number(number(@appliedCant), $xslCantPrecision)"/>
							</td>
							<!-- NorthStart -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- EastStart -->	
							<td align="left" lang="en">&#xa0;</td>					
							<!-- End Description-->
							<td align="left" lang="en">&#xa0;</td>
							<!-- KmEnd -->							
							<td align="left" lang="en">&#xa0;</td>
							<!-- Radius2 -->							
							<td align="left" lang="en">&#xa0;</td>
							<!-- EndSuper -->							
							<td align="left" lang="en">&#xa0;</td>
							<!-- NorthEnd -->							
							<td align="left" lang="en">&#xa0;</td>
							<!-- EastEnd -->							
							<td align="left" lang="en">&#xa0;</td>
							<!-- Length -->							
							<td align="left" lang="en">&#xa0;</td>							
							<!-- DesignSpeedFreight [km/h] -->
							<td align="right" lang="en">
								<xsl:for-each select="../../Superelevation/CantAlignment/Cant">
									<xsl:choose>
										<xsl:when test="(Start/station/@externalStation &lt;= $EndStation) and (End/station/@externalStation &gt; $EndStation)">
											<xsl:value-of select="format-number(number(@designSpeed), $xslSpeedPrecision)"/>
										</xsl:when>
										<xsl:when test="(position() = last() and (Start/station/@externalStation &lt;= $EndStation))">
											<xsl:value-of select="format-number(number(@designSpeed), $xslSpeedPrecision)"/>
										</xsl:when>
									</xsl:choose>
								</xsl:for-each>
							</td>
							<!-- DesignSpeedPassenger [km/h] -->
							<td align="left" lang="en">&#xa0;</td>
							<!-- Comment -->
							<td align="left" lang="en">Change in cant</td>
							<!-- Quality -->
							<td align="left" lang="en">&#xa0;</td>

							<!-- Rating -->
							<td align="left" lang="en">&#xa0;</td>

							<!-- CoordinateSystem -->
							<td align="left" lang="en">&#xa0;</td>

							<!-- Zone -->
							<td align="left" lang="en">&#xa0;</td>

							<!-- Date LastModified -->
							<td align="left" lang="en">&#xa0;</td>							
						</tr>
					</xsl:if>
				</xsl:if>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:for-each>
	
	<!-- Normal row population -->
	 <tr>
		
		<!-- CorridorDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Corridor -->
		<td align="left" lang="en">&#xa0;</td>

		<!-- BaseCodeDescription -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- BaseCode -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Curve Type -->
		<!-- Aspect -->
		<xsl:choose>
			<xsl:when test="name() = 'HorizontalSpiral'">
				<td align="left" lang="en">Transition</td>
				<xsl:choose>
					<xsl:when test="@rotationDirection = 'ccw'">
						<td align="left" lang="en">LEFT</td>
					</xsl:when>
					<xsl:otherwise>
						<td align="left" lang="en">RIGHT</td>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:when>
			<xsl:when test="name()= 'HorizontalCircle'">
				<td align="left" lang="en">Arc</td>
				<xsl:choose>
					<xsl:when test="@rotationDirection = 'ccw'">
						<td align="left" style="white-space:nowrap">LEFT</td>
					</xsl:when>
					<xsl:otherwise>
						<td align="left" style="white-space:nowrap">RIGHT</td>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:when>
			<xsl:otherwise>
				<td align="left" lang="en">Straight</td>
				<td align="left" lang="en">STRAIGHT</td>
			</xsl:otherwise>
		</xsl:choose>
		
		<!-- Start Description-->	
 		<td align="left">
		<xsl:choose>
			<xsl:when test="string(Start/@pointType) = 'PT'">
				TP
			</xsl:when>
			
			<xsl:when test="string(Start/@pointType) = 'TS'">
				TP
			</xsl:when>
			<xsl:when test="string(Start/@pointType) = 'ST'">
				TP
			</xsl:when>
			<xsl:when test="string(Start/@pointType) = 'POB'">
				TP
			</xsl:when>
			<xsl:when test="string(Start/@pointType) = 'POE'">
				TP
			</xsl:when>
			<xsl:when test="string(Start/@pointType) = 'PI'">
				TP
			</xsl:when>
			<xsl:when test="string(Start/@pointType) = 'PC'">
				TP
			</xsl:when>
			
			<xsl:when test="string(Start/@pointType) = 'SC'">
				TRS
			</xsl:when>
			<xsl:when test="string(Start/@pointType) = 'CS'">
				TRS
			</xsl:when>
			
			<xsl:when test="string(Start/@pointType) = 'PCC'">
				CTP
			</xsl:when>
			
			<xsl:when test="string(Start/@pointType) = 'SS'">
				CTRS
			</xsl:when>
			<xsl:otherwise>
				CHECK
			</xsl:otherwise>
		</xsl:choose>
		</td>
		
		<!-- KmStart -->		
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(number($startStation) div 1000, $xslDistancePrecision)"/>
		</td>

		<!-- Radius1 -->
		<xsl:if test="name()= 'HorizontalCircle'">
			<xsl:choose>
				<xsl:when test="@rotationDirection = 'ccw'">
					<td align="right" style="white-space:nowrap">
						-<xsl:value-of select="format-number(number(@radius), $xslRadiusPrecision)"/>
					</td>
				</xsl:when>
				<xsl:otherwise>
					<td align="right" style="white-space:nowrap">
						<xsl:value-of select="format-number(number(@radius), $xslRadiusPrecision)"/>		 
					</td>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:if>
		<xsl:if test="name() = 'HorizontalLine'">
					<td align="right" lang="en">Straight</td>
		</xsl:if>
		<xsl:if test="name() = 'HorizontalSpiral'">
			<xsl:choose>
				<xsl:when test="number(@startRadius) = 0">
					<td align="right" style="white-space:nowrap">Straight</td>
				</xsl:when>
			<xsl:otherwise>
			<xsl:choose>
				<xsl:when test="@rotationDirection = 'ccw'">
					<td align="right" style="white-space:nowrap">
						-<xsl:value-of select="format-number(number(@startRadius), $xslRadiusPrecision)"/>
					</td>
				</xsl:when>
				<xsl:otherwise>
					<td align="right" style="white-space:nowrap">
						<xsl:value-of select="format-number(number(@startRadius), $xslRadiusPrecision)"/>		 
					</td>
				</xsl:otherwise>
			</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>
		</xsl:if>
		
		<!-- StartSuper -->
		<td align="right" lang="en">
			<xsl:for-each select="../../Superelevation/CantAlignment/Cant">
				<xsl:if test="(Start/station/@externalStation &lt;= $startStation) and (End/station/@externalStation &gt; $startStation)">
					<xsl:value-of select="format-number(number(@appliedCant), $xslCantPrecision)"/>
				</xsl:if>
			</xsl:for-each>
		</td>

		<!-- NorthStart -->
		<td align="right" style="white-space:nowrap">
                	<xsl:value-of select="format-number(cif:ordinateFormat(number(Start/@northing )),$xslOrdinatePrecision)"/>
        </td>

		<!-- EastStart -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(cif:ordinateFormat(number(Start/@easting )),$xslOrdinatePrecision)"/>
        </td>
		
		<!-- End Description-->	
 		<td align="left">
		<xsl:choose>
			<xsl:when test="string(End/@pointType) = 'PT'">
				TP
			</xsl:when>
			
			<xsl:when test="string(End/@pointType) = 'TS'">
				TP
			</xsl:when>
			<xsl:when test="string(End/@pointType) = 'ST'">
				TP
			</xsl:when>
			<xsl:when test="string(End/@pointType) = 'POB'">
				TP
			</xsl:when>
			<xsl:when test="string(End/@pointType) = 'POE'">
				TP
			</xsl:when>
			<xsl:when test="string(End/@pointType) = 'PI'">
				TP
			</xsl:when>
			<xsl:when test="string(End/@pointType) = 'PC'">
				TP
			</xsl:when>
			
			<xsl:when test="string(End/@pointType) = 'SC'">
				TRS
			</xsl:when>
			<xsl:when test="string(End/@pointType) = 'CS'">
				TRS
			</xsl:when>
			
			<xsl:when test="string(End/@pointType) = 'PCC'">
				CTP
			</xsl:when>
			
			<xsl:when test="string(End/@pointType) = 'SS'">
				CTRS
			</xsl:when>
			<xsl:otherwise>
				CHECK
			</xsl:otherwise>
		</xsl:choose>
		</td>
		
		<!-- KmEnd-->
		<td class="side" align="right">
			<xsl:value-of select="format-number(number(End/station/@externalStation) div 1000, $xslDistancePrecision)"/>
		</td>

		<!-- Radius2 -->
				<xsl:if test="name()= 'HorizontalCircle'">
			<xsl:choose>
				<xsl:when test="@rotationDirection = 'ccw'">
					<td align="right" style="white-space:nowrap">
						-<xsl:value-of select="format-number(number(@radius), $xslRadiusPrecision)"/>
					</td>
				</xsl:when>
				<xsl:otherwise>
					<td align="right" style="white-space:nowrap">
						<xsl:value-of select="format-number(number(@radius), $xslRadiusPrecision)"/>		 
					</td>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:if>
		<xsl:if test="name() = 'HorizontalLine'">
					<td align="right" lang="en">Straight</td>
		</xsl:if>
		<xsl:if test="name() = 'HorizontalSpiral'">
			<xsl:choose>
				<xsl:when test="number(@endRadius) = 0">
					<td align="right" style="white-space:nowrap">Straight</td>
				</xsl:when>
				<xsl:otherwise>
					<xsl:choose>
						<xsl:when test="@rotationDirection = 'ccw'">
							<td align="right" style="white-space:nowrap">
								-<xsl:value-of select="format-number(number(@endRadius), $xslRadiusPrecision)"/>
							</td>
						</xsl:when>
					<xsl:otherwise>
						<td align="right" style="white-space:nowrap">
							<xsl:value-of select="format-number(number(@endRadius), $xslRadiusPrecision)"/>		 
						</td>
					</xsl:otherwise>
					</xsl:choose>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:if>	
		
		<!-- EndSuper -->
		<td align="right" lang="en">
			<xsl:for-each select="../../Superelevation/CantAlignment/Cant">
				<xsl:choose>
					<xsl:when test="(Start/station/@externalStation &lt;= $EndStation) and (End/station/@externalStation &gt; $EndStation)">
						<xsl:value-of select="format-number(number(@appliedCant), $xslCantPrecision)"/>
					</xsl:when>
					<xsl:when test="(position() = last() and (Start/station/@externalStation &lt;= $EndStation))">
						<xsl:value-of select="format-number(number(@appliedCant), $xslCantPrecision)"/>
					</xsl:when>
				</xsl:choose>
			</xsl:for-each>
		</td>

		<!-- NorthEnd -->
			<td align="right" style="white-space:nowrap">
				<xsl:value-of select="format-number(cif:ordinateFormat(number(End/@northing)),$xslOrdinatePrecision)"/>
			</td>

		<!-- EastEnd -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(cif:ordinateFormat(number(End/@easting)),$xslOrdinatePrecision)"/>
		</td>
		<!-- Length (m) -->
		<td align="right" style="white-space:nowrap">
			<xsl:value-of select="format-number(number(@length),$xsllengthPrecision)"/>
		</td>
       
		<!-- DesignSpeedFreight [km/h] -->
		<td align="right" lang="en">
			<xsl:for-each select="../../Superelevation/CantAlignment/Cant">
				<xsl:choose>
					<xsl:when test="(Start/station/@externalStation &lt;= $EndStation) and (End/station/@externalStation &gt; $EndStation)">
						<xsl:value-of select="format-number(number(@designSpeed), $xslSpeedPrecision)"/>
					</xsl:when>
					<xsl:when test="(position() = last() and (Start/station/@externalStation &lt;= $EndStation))">
						<xsl:value-of select="format-number(number(@designSpeed), $xslSpeedPrecision)"/>
					</xsl:when>
				</xsl:choose>
			</xsl:for-each>
		</td>
		
		<!-- DesignSpeedPassenger [km/h] -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Comment -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Quality -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Rating -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- CoordinateSystem -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Zone -->
		<td align="left" lang="en">&#xa0;</td>
		
		<!-- Date LastModified -->
		<td align="left" lang="en">&#xa0;</td>
		
	 </tr>
	 
	 <!-- Extra row for CC -->
	 <xsl:if test="name()= 'HorizontalCircle'">
		<tr>
			
			<!-- CorridorDescription -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- Corridor -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- BaseCodeDescription -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- BaseCode -->
			<td align="left" lang="en">&#xa0;</td>
		
			<!-- CurveType -->
			<td align="left" lang="en">&#xa0;</td>

			<!-- Aspect -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- StartDescription-->	
			<td align="left">CC</td>

			<!-- KMStart -->		
			<td align="left" lang="en">&#xa0;</td>

			<!-- Radius1 -->
			<xsl:choose>
				<xsl:when test="@rotationDirection = 'ccw'">
					<td align="right" style="white-space:nowrap">
						-<xsl:value-of select="format-number(number(@radius), $xslRadiusPrecision)"/>
					</td>
				</xsl:when>
				<xsl:otherwise>
					<td align="right" style="white-space:nowrap">
						 <xsl:value-of select="format-number(number(@radius), $xslRadiusPrecision)"/>		 
					</td>
				</xsl:otherwise>
			</xsl:choose>
			
			<!-- StartSuper -->
			<td align="left" lang="en">&#xa0;</td>

			<!-- NorthStart -->
			<td align="right" style="white-space:nowrap">
                <xsl:value-of select="format-number(cif:ordinateFormat(number(Center/@northing)),$xslOrdinatePrecision)"/>
            </td>	
			<!-- EastStart -->
			<td align="right" style="white-space:nowrap">
				<xsl:value-of select="format-number(cif:ordinateFormat(number(Center/@easting)),$xslOrdinatePrecision)"/>
            </td>
				                 
			<!-- EndDescription-->	
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- KmEnd-->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- Radius2 -->
			<td align="left" lang="en">&#xa0;</td>
			
			
			<!-- EndSuper -->
			<td align="left" lang="en">&#xa0;</td>

			<!-- NorthEnd -->
			<td align="left" lang="en">&#xa0;</td>

			<!-- EastEnd -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- Length (m) -->
			<td align="left" lang="en">&#xa0;</td>	
			
			<!-- DesignSpeedFreight [km/h] -->
			<td align="left" lang="en">&#xa0;</td>
		
			<!-- DesignSpeedPassenger [km/h] -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- Comment -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- Quality -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- Rating -->
			<td align="left" lang="en">&#xa0;</td>		
			
			<!-- CoordinateSystem -->
			<td align="left" lang="en">&#xa0;</td>	
			
			<!-- Zone -->
			<td align="left" lang="en">&#xa0;</td>
			
			<!-- DateLastModified -->
			<td align="left" lang="en">&#xa0;</td>
			
        </tr>
	</xsl:if>		
	 
	 </xsl:template>



	<xsl:template name="StyleSheetHelp">
		<div class="section1">
			ARTC CurvatureMaster Report template version 1.2
			<br/>
			<br/>
			This has been supplied for ease of generating ARTC CurvatureMasters but ARTC does not certify the output will meet ARTC acceptance.  Users of this report shall still validate the output is suitable for ARTC acceptance.
			<br/>
			<br/>
			<p class="medium" lang="en">
				<em>Created by Alastair Sharpe - Inland Rail</em>
			</p>
		</div>
	</xsl:template>


</xsl:stylesheet>
