<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:bs8723="http://schema.bsi-global.com/BS8723-5/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:dcterms="http://purl.org/dc/terms/">
	<xsl:output method="text" indent="yes" encoding="iso-8859-1"/>
	<xsl:param name="Language"/>
	<xsl:template match="bs8723:Thesaurus">
		<xsl:apply-templates select="bs8723:ThesaurusConcept/bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]|bs8723:ThesaurusConcept/bs8723:NonPreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]|bs8723:CompoundEquivalence/bs8723:CompoundNonPreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]">
			<xsl:sort select="translate(bs8723:LexicalValue, 'ABCDEFGHIJKLMNOPQRST', 'abcdefghijklmnopqrst')"/>
		</xsl:apply-templates>
	</xsl:template>
	<xsl:template match="bs8723:PreferredTerm">
		<xsl:call-template name="LexicalValue"/>
		<xsl:call-template name="LE"/>
		<xsl:call-template name="CID"/>
		<xsl:call-template name="TID"/>
		<xsl:call-template name="CC"/>
		<xsl:call-template name="SN"/>
		<xsl:call-template name="CHN"/>
		<xsl:call-template name="THN"/>
		<xsl:call-template name="UF"/>
		<xsl:call-template name="UFPlus"/>
		<xsl:call-template name="TT"/>
		<xsl:call-template name="BT"/>
		<xsl:call-template name="NT"/>
		<xsl:call-template name="RT"/>
		<xsl:call-template name="DC"/>
		<xsl:call-template name="DTI"/>
		<xsl:call-template name="DTM"/>
		<xsl:text>
</xsl:text>
	</xsl:template>
	<xsl:template match="bs8723:NonPreferredTerm">
		<xsl:call-template name="LexicalValue"/>
		<xsl:call-template name="CID"/>
		<xsl:call-template name="TID"/>
		<xsl:call-template name="USE"/>
		<xsl:call-template name="THN"/>
		<xsl:call-template name="DC"/>
		<xsl:call-template name="DTI"/>
		<xsl:call-template name="DTM"/>
		<xsl:text>
</xsl:text>
	</xsl:template>
	<xsl:template match="bs8723:CompoundNonPreferredTerm">
		<xsl:call-template name="LexicalValue"/>
		<xsl:call-template name="TID"/>
		<xsl:call-template name="USEPlus"/>
		<xsl:call-template name="THN"/>
		<xsl:call-template name="DTI"/>
		<xsl:call-template name="DTM"/>
		<xsl:text>
</xsl:text>
	</xsl:template>
	
	<!--Name-->
	<xsl:template name="LexicalValue">
			<xsl:text>
</xsl:text>
		<xsl:value-of select="bs8723:LexicalValue"/>
	</xsl:template>
	<!--LE - Language equivalent-->
	<xsl:template name="LE">
		<xsl:for-each select="../bs8723:PreferredTerm[@xml:lang != $Language]">
			<xsl:text>
</xsl:text>
			<xsl:text>	</xsl:text>
			<xsl:value-of select="@xml:lang"/>
			<xsl:text>: </xsl:text>
			<xsl:value-of select="bs8723:LexicalValue"/>
		</xsl:for-each>
	</xsl:template>
	<!--CID-->
	<xsl:template name="CID">
		<xsl:for-each select="../@dc:identifier">
			<xsl:text>
</xsl:text>
			<xsl:text>	CID: </xsl:text>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
	<!--TID-->
	<xsl:template name="TID">
		<xsl:text>
</xsl:text>
		<xsl:text>	TID: </xsl:text>
		<xsl:value-of select="@dc:identifier"/>
	</xsl:template>
	<!--CC - Notation-->
	<xsl:template name="CC">
		<xsl:for-each select="../bs8723:Notation">
			<xsl:sort select="."/>
			<xsl:text>
</xsl:text>
			<xsl:choose>
				<xsl:when test="position() = 1">
					<xsl:text>	CC: </xsl:text>
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>	    </xsl:text>
				</xsl:otherwise>
			</xsl:choose>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
	<!--SN - ScopeNote-->
	<xsl:template name="SN">
		<xsl:if test="../bs8723:ScopeNote[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue">
			<xsl:text>
</xsl:text>
			<xsl:text>	SN: </xsl:text>
			<xsl:value-of select="../bs8723:ScopeNote[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
		</xsl:if>
	</xsl:template>
	<!--CHN - Concept history note-->
	<xsl:template name="CHN">
		<xsl:for-each select="../bs8723:HistoryNote[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue">
			<xsl:text>
</xsl:text>
			<xsl:text>	CHN: </xsl:text>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
	<!--THN - Term history note-->
	<xsl:template name="THN">
		<xsl:for-each select="bs8723:HistoryNote[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue">
			<xsl:text>
</xsl:text>
			<xsl:text>	THN: </xsl:text>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
	<!--UF - Use For-->
	<xsl:template name="UF">
		<xsl:for-each select="../bs8723:NonPreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]">
			<xsl:sort select="bs8723:LexicalValue"/>
			<xsl:text>
</xsl:text>
			<xsl:choose>
				<xsl:when test="position() = 1">
					<xsl:text>	UF: </xsl:text>
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>	    </xsl:text>
				</xsl:otherwise>
			</xsl:choose>
			<xsl:value-of select="bs8723:LexicalValue"/>
		</xsl:for-each>
	</xsl:template>
	<!--UF+-->
	<xsl:template name="UFPlus">
		<xsl:for-each select="/bs8723:Thesaurus/bs8723:CompoundEquivalence[bs8723:PreferredTerm = current()/@dc:identifier]/bs8723:CompoundNonPreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]">
			<xsl:sort select="bs8723:LexicalValue"/>
			<xsl:text>
</xsl:text>
			<xsl:choose>
				<xsl:when test="position() = 1">
					<xsl:text>	UF+: </xsl:text>
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>	     </xsl:text>
				</xsl:otherwise>
			</xsl:choose>
			<xsl:value-of select="bs8723:LexicalValue"/>
		</xsl:for-each>
	</xsl:template>
	<!--TT - Top term-->
	<xsl:template name="TT">
		<xsl:if test="../bs8723:HasTopConcept">
			<xsl:for-each select="/bs8723:Thesaurus/bs8723:ThesaurusConcept[@dc:identifier = current()/../bs8723:HasTopConcept]">
				<xsl:sort select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
				<xsl:text>
</xsl:text>
				<xsl:choose>
					<xsl:when test="position() = 1">
						<xsl:text>	TT: </xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>	    </xsl:text>
					</xsl:otherwise>
				</xsl:choose>
				<xsl:value-of select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
			</xsl:for-each>
		</xsl:if>
	</xsl:template>
	<!--BT - Broader term-->
	<xsl:template name="BT">
		<xsl:if test="../bs8723:HasBroaderConcept">
			<xsl:for-each select="/bs8723:Thesaurus/bs8723:ThesaurusConcept[@dc:identifier = current()/../bs8723:HasBroaderConcept]">
				<xsl:sort select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
				<xsl:text>
</xsl:text>
				<xsl:choose>
					<xsl:when test="position() = 1">
						<xsl:text>	BT: </xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>	    </xsl:text>
					</xsl:otherwise>
				</xsl:choose>
				<xsl:value-of select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
			</xsl:for-each>
		</xsl:if>
	</xsl:template>
	<!--NT - Narrower term-->
	<xsl:template name="NT">
		<xsl:if test="../bs8723:HasNarrowerConcept">
			<xsl:for-each select="/bs8723:Thesaurus/bs8723:ThesaurusConcept[@dc:identifier = current()/../bs8723:HasNarrowerConcept]">
				<xsl:sort select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
				<xsl:text>
</xsl:text>
				<xsl:choose>
					<xsl:when test="position() = 1">
						<xsl:text>	NT: </xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>	    </xsl:text>
					</xsl:otherwise>
				</xsl:choose>
				<xsl:value-of select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
			</xsl:for-each>
		</xsl:if>
	</xsl:template>
	<!--RT - Related Term-->
	<xsl:template name="RT">
		<xsl:if test="../bs8723:HasRelatedConcept">
			<xsl:for-each select="/bs8723:Thesaurus/bs8723:ThesaurusConcept[@dc:identifier = current()/../bs8723:HasRelatedConcept]">
				<xsl:sort select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
				<xsl:text>
</xsl:text>
				<xsl:choose>
					<xsl:when test="position() = 1">
						<xsl:text>	RT: </xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<xsl:text>	    </xsl:text>
					</xsl:otherwise>
				</xsl:choose>
				<xsl:value-of select="bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
			</xsl:for-each>
		</xsl:if>
	</xsl:template>
	<!--USE-->
	<xsl:template name="USE">
		<xsl:text>
</xsl:text>
		<xsl:text>	USE: </xsl:text>
		<xsl:value-of select="../bs8723:PreferredTerm[not(@xml:lang) or (@xml:lang = $Language)]/bs8723:LexicalValue"/>
	</xsl:template>
	<!--USE + -->
	<xsl:template name="USEPlus">
		<!--xsl:for-each select="../bs8723:PreferredTerm">
			<xsl:variable name="ID" select="."/>
			<xsl:for-each select="/bs8723:Thesaurus/bs8723:ThesaurusConcept[@dc:identifier = $ID]">
				<xsl:text>
</xsl:text>
				<xsl:text>	HELLO: </xsl:text>
				<xsl:value-of select="@dc:identifier"/>
				<xsl:text>-</xsl:text>
				<xsl:value-of select="$ID"/>
			</xsl:for-each>
		</xsl:for-each-->
		<xsl:for-each select="/bs8723:Thesaurus/bs8723:ThesaurusConcept/bs8723:PreferredTerm[(@dc:identifier = current()/../bs8723:PreferredTerm) and (not(@xml:lang) or (@xml:lang = $Language))]/bs8723:LexicalValue">
			<xsl:sort select="."/>
			<xsl:text>
</xsl:text>
			<xsl:choose>
				<xsl:when test="position() = 1">
					<xsl:text>	USE: </xsl:text>
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>	+  : </xsl:text>
				</xsl:otherwise>
			</xsl:choose>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
	<!--DC - Concept created date-->
	<xsl:template name="DC">
		<xsl:for-each select="../dcterms:created">
			<xsl:text>
</xsl:text>
			<xsl:text>	DC: </xsl:text>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
	<!--DTI - Term created date-->
	<xsl:template name="DTI">
		<xsl:for-each select="dcterms:created">
			<xsl:text>
</xsl:text>
			<xsl:text>	DTI: </xsl:text>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
	<!--DTM - Term modified date-->
	<xsl:template name="DTM">
		<xsl:for-each select="dcterms:modified">
			<xsl:text>
</xsl:text>
			<xsl:text>	DTM: </xsl:text>
			<xsl:value-of select="."/>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>
