<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stylesheet [
<!ENTITY tab "<xsl:text>&#9;</xsl:text>">
<!ENTITY cr "<xsl:text>
</xsl:text>">
]>
<xsl:stylesheet xmlns:tdl="http://www.nema.org/1997/C1219TDLSchema"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>

<xsl:template match="tdl:tdl">
	<?rtf?> <xsl:text>{\rtf1\ansi\ansicpg1252\deff0\deflang1033</xsl:text>
	<?rtf?> <xsl:text>{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}</xsl:text>
	<?rtf?> <xsl:text>{\f1\fmodern\fprq1\fcharset0 Courier New;}</xsl:text>
	<?rtf?> <xsl:text>}</xsl:text>
	<?rtf?> <xsl:text>{\colortbl ;\red0\green0\blue128;}</xsl:text>
	&cr;
	<xsl:if test="@title">
		<?rtf?> <xsl:text>\pard\f0\b\fs40 </xsl:text> 
		<xsl:value-of select="@title" />
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
	<?rtf?> <xsl:text>\pard\f0\b0\fs20 </xsl:text>
	<xsl:if test="@version">
		<xsl:text>Version: </xsl:text>
		<xsl:value-of select="@version" />
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
	<xsl:if test="tdl:description">
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<xsl:value-of select="tdl:description"/>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;

	<?For each global ENUMERATOR, BIT FIELD or PACKED RECORD?>
	<xsl:for-each select="tdl:enumerator | tdl:bitField | tdl:packedRecord">
		<xsl:call-template name="typeTitle"/>
	</xsl:for-each>

	<?For each global  TABLE?>
	<xsl:for-each select="tdl:table">
		<xsl:apply-templates select="." />
	</xsl:for-each>

	<?For each global  PROCEDURE ?>
	<xsl:for-each select="tdl:procedure">
		<xsl:apply-templates select="." />
	</xsl:for-each>

	<?For each decade?>
	<xsl:for-each select="tdl:decade">
		<?rtf?> <xsl:text>\pard\f0\b\fs24 </xsl:text>
		<xsl:number format="1. " level="multiple" count="tdl:enumerator|tdl:bitField | tdl:packedRecord|tdl:table|tdl:procedure|tdl:decade"/>
		<xsl:text>Decade: </xsl:text>
		<xsl:value-of select="@number"/>
		 <xsl:if test="@label">
			<xsl:text> : </xsl:text>
			 <xsl:value-of select="@label"/>
		 </xsl:if>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<?rtf?> <xsl:text>\pard\b0\cf0\f0\fs20 </xsl:text>
		<xsl:if test="tdl:description">
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
			<xsl:value-of select="tdl:description"/>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:if>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		
		<?For each global ENUMERATOR, BIT FIELD or PACKED RECORD?>
		<xsl:for-each select="tdl:enumerator | tdl:bitField | tdl:packedRecord">
			<xsl:call-template name="typeTitle"/>
		</xsl:for-each>
		
		<?For each TABLE within this decade ?>
		<xsl:for-each select="tdl:table">
			<xsl:apply-templates select="." />
		</xsl:for-each>
		
		<?For each global  PROCEDURE ?>
		<xsl:for-each select="tdl:procedure">
			<xsl:apply-templates select="." />
		</xsl:for-each>

	</xsl:for-each>
	<?rtf?> <xsl:text>}</xsl:text>
</xsl:template>

<?Title used when a type is defined in the global or decade scope?>
<xsl:template name="typeTitle">
	<?rtf?> <xsl:text>\pard\f0\b\fs24 </xsl:text>
	<xsl:number format="1. " level="multiple" count="tdl:enumerator|tdl:bitField | tdl:packedRecord|tdl:table|tdl:procedure|tdl:decade"/>
	<xsl:text>Definition of </xsl:text>
	<xsl:value-of select="@name"/>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<?rtf?> <xsl:text>\pard\f0\b0\fs20 </xsl:text>
	<xsl:if test="tdl:description">
		<xsl:value-of select="tdl:description"/>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:apply-templates mode="definition" select="."/>
	<xsl:if test="name() != 'enumerator' ">
		<xsl:if test="descendant::tdl:*/tdl:description | descendant::tdl:*/tdl:enumerator">
			<xsl:call-template name="descriptionHeader"/>
			<xsl:apply-templates mode="description" select="."/>
		</xsl:if>
	</xsl:if>
</xsl:template>

<?TABLE definition and description?>
<xsl:template match="tdl:table">
	<?rtf?> <xsl:text>\pard\f0\b\fs24 </xsl:text>
	<xsl:number format="1. " level="multiple" count="tdl:enumerator|tdl:bitField | tdl:packedRecord|tdl:table|tdl:procedure|tdl:decade"/>
	<xsl:text>Table </xsl:text>
	 <xsl:value-of select="@number"/>
	 <xsl:if test="@label">
		<xsl:text> : </xsl:text>
		 <xsl:value-of select="@label"/>
	 </xsl:if>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<?rtf?> <xsl:text>\pard\b0\cf0\f0\fs20 </xsl:text>
	<xsl:if test="tdl:description">
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<xsl:text>Table description:\par</xsl:text>
		&cr;
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<xsl:value-of select="tdl:description"/>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:text>Table syntax:\par</xsl:text>
	&cr;
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	
	<?For each global named ENUMERATOR within this table ?>
	<xsl:for-each select="tdl:enumerator">
		<xsl:apply-templates select="." mode="definition" />
	</xsl:for-each>

	<?For each PACKED RECORD or BIT FIELD within this table ?>
	<xsl:for-each select="tdl:bitField | tdl:packedRecord">
		<xsl:apply-templates mode="definition" select="."/>
	</xsl:for-each>
	
	<?rtf?> <xsl:text>\pard\b0\cf1\f1\fs18 </xsl:text>
	<xsl:text>TABLE </xsl:text>
	<xsl:value-of select="@name"/>
	<xsl:text> : </xsl:text>
	<xsl:value-of select="@type"/>
	<?rtf?> <xsl:text>;\par</xsl:text>
	&cr;
	<?rtf?> <xsl:text>\pard\b0\cf0\f0\fs20\par </xsl:text>
	&cr;

	<xsl:if test="tdl:bitField | tdl:packedRecord">
		<xsl:if test="descendant::tdl:*/tdl:description | descendant::tdl:*/tdl:enumerator">
			<xsl:call-template name="descriptionHeader"/>
			<xsl:for-each select="tdl:bitField | tdl:packedRecord">
				<xsl:if test="descendant::tdl:description | descendant::tdl:enumerator">
					<xsl:apply-templates mode="description" select="."/>
				</xsl:if>
			</xsl:for-each>
		</xsl:if>
	</xsl:if>
</xsl:template>

<?Procedure definition and description?>
<xsl:template match="tdl:procedure">
	<?rtf?> <xsl:text>\pard\f0\b\fs24 </xsl:text>
	<xsl:number format="1. " level="multiple" count="tdl:enumerator|tdl:bitField | tdl:packedRecord|tdl:table|tdl:procedure|tdl:decade"/>
	<xsl:text>Procedure </xsl:text>
	 <xsl:value-of select="@number"/>
	 <xsl:if test="@label">
		<xsl:text> : </xsl:text>
		 <xsl:value-of select="@label"/>
	 </xsl:if>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<?rtf?> <xsl:text>\pard\b0\cf0\f0\fs20 </xsl:text>
	<xsl:if test="tdl:description">
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<xsl:text>Procedure description:\par</xsl:text>
		&cr;
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<xsl:value-of select="tdl:description"/>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	
	<?Procedure name ?>
	<xsl:text>Procedure name : </xsl:text>
	<?rtf?> <xsl:text>\cf1 </xsl:text>
	 <xsl:value-of select="@name"/>
	<?rtf?> <xsl:text>\cf0\par</xsl:text>
	&cr;
	<xsl:for-each select="tdl:extend">
		<xsl:text>Extend </xsl:text>
		 <xsl:value-of select="@target"/>
		<xsl:text> with: </xsl:text>
		<?rtf?> <xsl:text>\cf1 </xsl:text>
		 <xsl:value-of select="@type"/>
		<?rtf?> <xsl:text>\cf0\par</xsl:text>
		&cr;
	</xsl:for-each>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;

	<xsl:if test="tdl:bitField | tdl:packedRecord">
		<xsl:text>Syntax:\par</xsl:text>
		&cr;
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;

		<?For each global named ENUMERATOR within this table ?>
		<xsl:for-each select="tdl:enumerator">
			<xsl:apply-templates select="." mode="definition" />
		</xsl:for-each>
	
		<?For each PACKED RECORD or BIT FIELD within this table ?>
		<xsl:for-each select="tdl:bitField | tdl:packedRecord">
			<xsl:apply-templates mode="definition" select="."/>
		</xsl:for-each>
		
		<xsl:if test="descendant::tdl:*/tdl:description | descendant::tdl:*/tdl:enumerator">
			<xsl:call-template name="descriptionHeader"/>
			<xsl:for-each select="tdl:bitField | tdl:packedRecord">
				<xsl:if test="descendant::tdl:description | descendant::tdl:enumerator">
					<xsl:apply-templates mode="description" select="."/>
				</xsl:if>
			</xsl:for-each>
		</xsl:if>
	</xsl:if>
</xsl:template>

<?ENUMERATOR definition and description?>
<xsl:template match="tdl:enumerator" mode="definition" >
	<?rtf?> <xsl:text>\pard\b0\cf1\f1\fs18\fi-1440\li1440\tx1080 </xsl:text>
	<xsl:text>ENUMERATOR </xsl:text>
	<xsl:value-of select="@name"/>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:for-each select="tdl:enum">
		<xsl:text>   </xsl:text>
		<xsl:value-of select="@value"/>
		<xsl:text>\tab : "</xsl:text>
		<xsl:value-of select="@text"/>
		<xsl:text>"</xsl:text>
		<?rtf?> <xsl:text>;\par</xsl:text>
		&cr;
	</xsl:for-each>
	<xsl:text>END; </xsl:text>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:call-template name="replaceRedefine"/>
	<?rtf?> <xsl:text>\pard\b0\cf0\f0\fs20\par </xsl:text>
	&cr;
</xsl:template>

<?PACKED RECORD definition?>
<xsl:template match="tdl:packedRecord" mode="definition">
	<?rtf?> <xsl:text>\pard\b0\cf1\f1\fs18\fi-3600\li3600\tx3420 </xsl:text>
	<xsl:text>TYPE </xsl:text>
	<xsl:value-of select="@name"/>
	<xsl:text> = PACKED RECORD</xsl:text>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:for-each select="*">
		<xsl:call-template name="packedRecordElements"/>
	</xsl:for-each>
	<xsl:text>END;</xsl:text>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:call-template name="replaceRedefine"/>
	<?rtf?> <xsl:text>\pard\cf0\b0\f0\fs20\par </xsl:text>
	&cr;
</xsl:template>

<?PACKED RECORD elements?>
<xsl:template name="packedRecordElements">
	<xsl:param name="level">1</xsl:param>
	<xsl:choose>
		<xsl:when test="name() = 'element' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:value-of select="@name"/>
			<xsl:text>\tab : </xsl:text>
			<xsl:value-of select="@type"/>
			<xsl:if test="@size">
				<xsl:text>(</xsl:text>
				<xsl:value-of select="@size"/>
				<xsl:text>)</xsl:text>
			</xsl:if>
			<xsl:text>;</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
		<xsl:when test="name() = 'set' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:value-of select="@name"/>
			<xsl:text>\tab : SET(</xsl:text>
			<xsl:value-of select="@dimension"/>
			<xsl:text>);</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
		<xsl:when test="name() = 'array' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:value-of select="@name"/>
			<xsl:text>\tab : ARRAY[</xsl:text>
			<xsl:value-of select="@dimension"/>
			<xsl:text>] OF </xsl:text>
			<xsl:value-of select="@type"/>
			<xsl:text>;</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
		<xsl:when test="name() = 'if' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>IF </xsl:text>
			<xsl:value-of select="@condition"/>
			<xsl:text> THEN</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
			<xsl:for-each select="tdl:then/*">
				<xsl:call-template name="packedRecordElements">
					<xsl:with-param name="level" select="$level + 1" />
				</xsl:call-template>
			</xsl:for-each>
			<xsl:if test="tdl:else">
				<xsl:call-template name="indent">
					<xsl:with-param name="level" select="$level" />
				</xsl:call-template>
				<xsl:text>ELSE</xsl:text>
				<?rtf?> <xsl:text>\par</xsl:text>
				&cr;
				<xsl:for-each select="tdl:else/*">
					<xsl:call-template name="packedRecordElements">
						<xsl:with-param name="level" select="$level + 1" />
					</xsl:call-template>
				</xsl:for-each>
			</xsl:if>
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>END;</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
		<xsl:when test="name() = 'switch' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>SWITCH </xsl:text>
			<xsl:value-of select="@selection"/>
			<xsl:text> OF</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
			<xsl:for-each select="tdl:case | tdl:default">
				<xsl:call-template name="indent">
					<xsl:with-param name="level" select="$level" />
				</xsl:call-template>
				<xsl:if test="name() = 'case' ">
					<xsl:text>CASE </xsl:text>
					<xsl:value-of select="@value"/>
					<xsl:text> :</xsl:text>
				</xsl:if>
				<xsl:if test="name() = 'default' ">
					<xsl:text>DEFAULT : </xsl:text>
				</xsl:if>
				<?rtf?> <xsl:text>\par</xsl:text>
				&cr;
				<xsl:for-each select="*">
					<xsl:call-template name="packedRecordElements">
						<xsl:with-param name="level" select="$level + 1" />
					</xsl:call-template>
				</xsl:for-each>
			</xsl:for-each>
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>END;</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
	</xsl:choose>
</xsl:template>

<?BIT FIELD definition?>
<xsl:template match="tdl:bitField" mode="definition">
	<?rtf?> <xsl:text>\pard\b0\cf1\f1\fs18\fi-3600\li3600\tx3420 </xsl:text>
	<xsl:text>TYPE </xsl:text>
	<xsl:value-of select="@name"/>
	<xsl:text> = BIT FILED OF </xsl:text>
	<xsl:value-of select="@type"/>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:for-each select="*">
		<xsl:call-template name="bitFieldElements"/>
	</xsl:for-each>
	<xsl:text>END;</xsl:text>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:call-template name="replaceRedefine"/>
	<?rtf?> <xsl:text>\pard\b0\cf0\f0\fs20\par </xsl:text>
	&cr;
</xsl:template>

<?BIT FIELD elements?>
<xsl:template name="bitFieldElements">
	<xsl:param name="level">1</xsl:param>
	<xsl:choose>
		<xsl:when test="name() = 'subElement' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:value-of select="@name"/>
			<xsl:text>\tab : </xsl:text>
			<xsl:value-of select="@type"/>
			<xsl:text>(</xsl:text>
			<xsl:value-of select="@startBitInclusive"/>
			<xsl:if test="@type != 'BOOL'">
				<xsl:choose>
					<xsl:when test="@endBitInclusive">
						<xsl:text>..</xsl:text>
						<xsl:value-of select="@endBitInclusive"/>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>..</xsl:text>
						<xsl:value-of select="@startBitInclusive"/>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:if>
			<xsl:text>);</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
		<xsl:when test="name() = 'if' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>IF </xsl:text>
			<xsl:value-of select="@condition"/>
			<xsl:text> THEN</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
			<xsl:for-each select="tdl:then/*">
				<xsl:call-template name="bitFieldElements">
					<xsl:with-param name="level" select="$level + 1" />
				</xsl:call-template>
			</xsl:for-each>
			<xsl:if test="tdl:else">
				<xsl:call-template name="indent">
					<xsl:with-param name="level" select="$level" />
				</xsl:call-template>
				<xsl:text>ELSE</xsl:text>
				<?rtf?> <xsl:text>\par</xsl:text>
				&cr;
				<xsl:for-each select="tdl:else/*">
					<xsl:call-template name="bitFieldElements">
						<xsl:with-param name="level" select="$level + 1" />
					</xsl:call-template>
				</xsl:for-each>
			</xsl:if>
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>END;</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
		<xsl:when test="name() = 'switch' ">
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>SWITCH </xsl:text>
			<xsl:value-of select="@selection"/>
			<xsl:text> OF</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
			<xsl:for-each select="tdl:case | tdl:default">
				<xsl:call-template name="indent">
					<xsl:with-param name="level" select="$level" />
				</xsl:call-template>
				<xsl:if test="name() = 'case' ">
					<xsl:text>CASE </xsl:text>
					<xsl:value-of select="@value"/>
					<xsl:text> :</xsl:text>
				</xsl:if>
				<xsl:if test="name() = 'default' ">
					<xsl:text>DEFAULT : </xsl:text>
				</xsl:if>
				<?rtf?> <xsl:text>\par</xsl:text>
				&cr;
				<xsl:for-each select="*">
					<xsl:call-template name="bitFieldElements">
						<xsl:with-param name="level" select="$level + 1" />
					</xsl:call-template>
				</xsl:for-each>
			</xsl:for-each>
			<xsl:call-template name="indent">
				<xsl:with-param name="level" select="$level" />
			</xsl:call-template>
			<xsl:text>END;</xsl:text>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
		</xsl:when>
	</xsl:choose>
</xsl:template>

<?Element description?>
<xsl:template match="tdl:bitField | tdl:packedRecord" mode="description">
	<?rtf?> <xsl:text>\pard\b0\f0\fs20\fi-3600\li3600\tx3600 </xsl:text>
	<xsl:value-of select="@name"/>
	<xsl:if test="tdl:description">
		&tab;
		<xsl:value-of select="tdl:description"/>
	</xsl:if>
	<?rtf?> <xsl:text>\par</xsl:text>
	&cr;
	<xsl:for-each select="descendant::tdl:element | descendant::tdl:subElement | descendant::tdl:set | descendant::tdl:array">
		<xsl:if test="tdl:description | tdl:enumerator | @min | @max | @enumerator">
			<?rtf?> <xsl:text>\fi-3240\li3600\tx3600\sb120 </xsl:text>
			<xsl:value-of select="@name"/>
			<xsl:if test="@min | @max">
				<?rtf?> <xsl:text>\par</xsl:text>
				&cr;
				<?rtf?> <xsl:text>\fi-1800\li3600\tx3600\sb0 </xsl:text>
				<xsl:choose>
					<xsl:when test="@min and @max">
						<xsl:value-of select="@min"/>
						<xsl:text>..</xsl:text>
						<xsl:value-of select="@max"/>
					</xsl:when>
					<xsl:when test="@max">
						<xsl:text disable-output-escaping="yes">&lt;= </xsl:text>
						<xsl:value-of select="@max"/>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text disable-output-escaping="yes">&gt;= </xsl:text>
						<xsl:value-of select="@min"/>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:if>
			<xsl:if test="tdl:description">
				&tab;
				<xsl:value-of select="tdl:description"/>
			</xsl:if>
			<xsl:if test="@enumerator">
				<xsl:choose>
					<xsl:when test="tdl:description">
						<?rtf?> <xsl:text>\line </xsl:text>
					</xsl:when>
					<xsl:otherwise>
						&tab;
					</xsl:otherwise>
				</xsl:choose>
				<xsl:text>Associated with enumerator: </xsl:text>
				<xsl:value-of select="@enumerator"/>
			</xsl:if>
			<?rtf?> <xsl:text>\par</xsl:text>
			&cr;
			<xsl:if test="tdl:enumerator">
				<?rtf?> <xsl:text>\fi-1800\li3600\tx3600\sb0 </xsl:text>
				<xsl:if test="tdl:enumerator/@name">
					<?rtf?> <xsl:text>	</xsl:text>
					<xsl:text>Definition of enumerator: </xsl:text>
					<xsl:value-of select="tdl:enumerator/@name"/>
					<?rtf?> <xsl:text>\par</xsl:text>
					&cr;
				</xsl:if>
				<xsl:for-each select="tdl:enumerator/tdl:enum">
					<xsl:value-of select="@value"/>
					&tab;
					<xsl:value-of select="@text"/>
					<?rtf?> <xsl:text>\par</xsl:text>
					&cr;
				</xsl:for-each>
			</xsl:if>
		</xsl:if>
	</xsl:for-each>
	<?rtf?> <xsl:text>\pard\b0\cf0\f0\fs20\par </xsl:text>
	&cr;
</xsl:template>

<xsl:template name="replaceRedefine">
	<xsl:if test="@replace">
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<xsl:text>Note: This type replaces </xsl:text>
		<xsl:value-of select="@name"/>
		<xsl:text> defined in </xsl:text>
		<xsl:value-of select="@replace"/>
		<xsl:text>.</xsl:text>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
	<xsl:if test="@redefine">
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
		<xsl:text>Note: This type redefines </xsl:text>
		<xsl:value-of select="@name"/>
		<xsl:text> defined in </xsl:text>
		<xsl:value-of select="@redefine"/>
		<xsl:text>.</xsl:text>
		<?rtf?> <xsl:text>\par</xsl:text>
		&cr;
	</xsl:if>
</xsl:template>

<xsl:template name="descriptionHeader">
	<?rtf?> <xsl:text>\pard\b0\f0\fs20\tx1800\tx3600\ul </xsl:text>
	<xsl:text>Identifier</xsl:text>
	<?rtf?> <xsl:text>\ulnone\tab\ul </xsl:text>
	<xsl:text>Value</xsl:text>
	<?rtf?> <xsl:text>\ulnone\tab\ul </xsl:text>
	<xsl:text>Definition</xsl:text>
	<?rtf?> <xsl:text>\ulnone\par </xsl:text>
	&cr;
</xsl:template>

<xsl:template name="indent">
	<xsl:param name="level"/>
	<xsl:if test="$level&gt; 0">
		<xsl:text>   </xsl:text>
		<xsl:call-template name="indent">
			<xsl:with-param name="level" select="$level - 1" />
		</xsl:call-template>
	</xsl:if>
</xsl:template>

</xsl:stylesheet>

