<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:output method="html"/>
<xsl:strip-space elements="SECT"/>
<xsl:template match="/">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="/ARTICLE/TITLE">
<h1 align="center"> <xsl:apply-templates/> </h1>
</xsl:template>
<!-- Top Level Heading -->
<xsl:template match="/ARTICLE/SECT">
<h2> <xsl:apply-templates select="text()|B|I|U|DEF|LINK"/> </h2>
<xsl:apply-templates select="SECT|PARA|LIST|NOTE"/>
</xsl:template>
<!-- Second-Level Heading -->
<xsl:template match="/ARTICLE/SECT/SECT">
<h3> <xsl:apply-templates select="text()|B|I|U|DEF|LINK"/> </h3>
<xsl:apply-templates select="SECT|PARA|LIST|NOTE"/>
</xsl:template>
<!-- Third-Level Heading -->
<xsl:template match="/ARTICLE/SECT/SECT/SECT">
<xsl:message terminate="yes">Error: Sections can only be nested 2 deep.</xsl:message>
</xsl:template>
<!-- Paragraph -->
<xsl:template match="PARA">
<p> <xsl:apply-templates select="text()|B|I|U|DEF|LINK"/> </p>
<xsl:apply-templates select="PARA|LIST|NOTE"/>
</xsl:template>
<!-- Text -->
<!--
<xsl:template match="text()">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
-->
<!-- LIST -->
<xsl:template match="LIST">
<xsl:if test="@type='ordered'">
<ol>
<xsl:apply-templates/>
</ol>
</xsl:if>
<xsl:if test="@type='unordered'">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:if>
</xsl:template>
<!-- list ITEM -->
<xsl:template match="ITEM">
<li><xsl:apply-templates/>
</li>
</xsl:template>
<xsl:template match="NOTE">
<blockquote><b>Note:</b><br/>
<xsl:apply-templates/>
</blockquote>
</xsl:template>
<xsl:template match="DEF">
<i> <xsl:apply-templates/> </i>
</xsl:template>
<xsl:template match="B|I|U">
<xsl:element name="{name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="LINK">
<xsl:if test="@target">
<!--Target attribute specified.-->
<xsl:call-template name="htmLink">
<xsl:with-param name="dest" select="@target"/> <!--Destination = attribute value-->
</xsl:call-template>
</xsl:if>
<xsl:if test="not(@target)">
<!--Target attribute not specified.-->
<xsl:call-template name="htmLink">
<xsl:with-param name="dest">
<xsl:apply-templates/> <!--Destination value = text of node-->
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- A named template that constructs an HTML link -->
<xsl:template name="htmLink">
<xsl:param name="dest" select="UNDEFINED"/> <!--default value-->
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="$dest"/> <!--link target-->
</xsl:attribute>
<xsl:apply-templates/> <!--name of the link from text of node-->
</xsl:element>
</xsl:template>
</xsl:stylesheet>