<?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>