Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
<?xml version="1.0" encoding="UTF-8"?>
<\!-\- SEE LICENSE INFORMATION AT END OF FILE \-->

<\!DOCTYPE xsl:stylesheet\[<\!ENTITY nbsp "&#160;" >\]>
<xsl:stylesheet xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]" version="2.0"
&nbsp; xmlns:xs="[http://www.w3.org/2001/XMLSchema|http://www.w3.org/2001/XMLSchema]" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance|http://www.w3.org/2001/XMLSchema-instance]"
&nbsp; xmlns:oe="[http://schemas.openehr.org/v1|http://schemas.openehr.org/v1]" xmlns:msxsl="urn:schemas-microsoft-com:xslt" >

&nbsp; <\!-\- Specify output, create matches for unwanted top-level elements \-->
&nbsp; <xsl:output encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
&nbsp;&nbsp;&nbsp; doctype-system="[http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd|http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd]" indent="yes"/>

&nbsp; <\!-\- templates to deal with rendering versions (ignored for locatable rendering) \-->
&nbsp; <xsl:template match="oe:contribution"/>
&nbsp; <xsl:template match="oe:commit_audit"/>
&nbsp; <xsl:template match="oe:uid"/>
&nbsp; <xsl:template match="oe:preceding_version_uid"/>
&nbsp; <xsl:template match="oe:lifecycle_state"/>
&nbsp; <xsl:template match="oe:is_merged"/>
&nbsp; <xsl:template match="oe:version">
&nbsp;&nbsp;&nbsp; <\!-\- top-level match for version \-->
&nbsp;&nbsp;&nbsp; <xsl:apply-templates select="oe:data"/>
&nbsp; </xsl:template>

&nbsp; <\!-\- .............. Start helper templates .................
&nbsp;&nbsp;&nbsp; These are for element names commonly in
&nbsp;&nbsp;&nbsp; XML instances with consistent semantic meaning
&nbsp;&nbsp;&nbsp; or simply special-purpose templates for common
&nbsp;&nbsp;&nbsp; operations on particular types of nodes.&nbsp; \-->

&nbsp; <\!-\- Generic name
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Uses generic-dv-text \-->
&nbsp; <xsl:template name="generic-name">
&nbsp;&nbsp;&nbsp; <xsl:param name="namenode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="namecat"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$namenode/oe:value \!= ''">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode" select="$namenode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise> Unnamed <xsl:value-of select="$namecat"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic date
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (in format is '2006-05-05T10:44:46'; out format is '05/05/2006') \-->
&nbsp; <xsl:template name="generic-date">
&nbsp;&nbsp;&nbsp; <xsl:param name="datetimestring"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- datetime format 1 \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="not(substring($datetimestring, 5,1) = '-')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not(substring($datetimestring, 5,2) = '')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not(substring($datetimestring, 7,2) = '')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($datetimestring, 7,2)"/>/</xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($datetimestring, 5,2)"/>/</xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($datetimestring, 1,4)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- datetime format 2 \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not(substring($datetimestring, 6,2) = '')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not(substring($datetimestring, 9,2) = '')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($datetimestring, 9,2)"/>/</xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($datetimestring, 6,2)"/>/</xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($datetimestring, 1,4)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic time
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (in format is '2006-05-05T10:44:46'; out format is '10:44 AM \+9:30') \-->
&nbsp; <xsl:template name="generic-time">
&nbsp;&nbsp;&nbsp; <xsl:param name="datetimestring"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="display-as-24-hour"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="show-seconds"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="show-timezone"/>

&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- datetime format 1 \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="not(substring($datetimestring, 5,1) = '-')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 9,1) = 'T'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not($display-as-24-hour)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 10,2) &lt; '01'">12</xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 10,2) &gt; '12'"><xsl:value-of select="number(substring($datetimestring, 10,2))-12"/></xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise><xsl:value-of select="substring($datetimestring, 10,2)"/></xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="substring($datetimestring, 12,2)">:<xsl:value-of select="substring($datetimestring, 12,2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="substring($datetimestring, 14,2) and $show-seconds='yes'">:<xsl:value-of select="substring($datetimestring, 14,2)"/></xsl:if>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="not($display-as-24-hour)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 9,2) = '00'">12</xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 9,2) &gt; '12' or substring($datetimestring, 9,2) &lt; '01'"><xsl:value-of select="number(substring($datetimestring, 9,2))-12"/></xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise><xsl:value-of select="substring($datetimestring, 9,2)"/></xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise><xsl:value-of select="substring($datetimestring, 9,2)"/></xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="substring($datetimestring, 11,2)">:<xsl:value-of select="substring($datetimestring, 11,2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="substring($datetimestring, 13,2) and $show-seconds='yes'">:<xsl:value-of select="substring($datetimestring, 13,2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not($display-as-24-hour)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 10,2) &gt;= '12'">&nbsp;PM</xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>&nbsp;AM</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- datetime format 2 \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="not($display-as-24-hour)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 12,2) = '00'">12</xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 12,2) &gt; '12' "><xsl:value-of select="number(substring($datetimestring, 12,2))-12"/></xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise><xsl:value-of select="substring($datetimestring, 12,2)"/></xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise><xsl:value-of select="substring($datetimestring, 12,2)"/></xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose><xsl:if test="substring($datetimestring, 15,2)">:<xsl:value-of select="substring($datetimestring, 15,2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="substring($datetimestring, 18,2) and $show-seconds='yes'">:<xsl:value-of select="substring($datetimestring, 18,2)"/></xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not($display-as-24-hour)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="substring($datetimestring, 12,2) &gt;= '12'">&nbsp;PM</xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>&nbsp;AM</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; <\!-\- display timezone \-->
&nbsp;&nbsp;&nbsp; <xsl:if test="$show-timezone='yes'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:variable select="substring($datetimestring, 11)" name="tz-substring"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="(contains($tz-substring, '+') or contains($tz-substring, '-')) and not(substring($tz-substring, string-length($tz-substring)-4) = '00:00') and not(substring($tz-substring, string-length($tz-substring)-2) = '+00') and not(substring($tz-substring, string-length($tz-substring)-2) = '-00')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="contains($tz-substring, '+')">&nbsp;+<xsl:variable select="substring-after($tz-substring, '+')" name="tz-string"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($tz-string, 1, 2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="string-length($tz-string) > 3">:<xsl:choose>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="contains($tz-string, ':')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($tz-string, 4, 2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($tz-string, 3, 2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>&nbsp;-<xsl:variable select="substring-after($tz-substring, '-')" name="tz-string"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($tz-string, 1, 2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="string-length($tz-string) > 3">:<xsl:choose>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="contains($tz-string, ':')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($tz-string, 4, 2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring($tz-string, 3, 2)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic COMPOSITION header \-->
&nbsp; <xsl:template name="composition-header">
&nbsp;&nbsp;&nbsp; <xsl:param name="compositionnode"/>

&nbsp;&nbsp;&nbsp; <\!-\- Output the composition heading \-->
&nbsp;&nbsp;&nbsp; <div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <table width="100%" cellpadding="1" cellspacing="0">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="middle" rowspan="2">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <h1>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$compositionnode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">clinical record</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </h1>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="right" valign="bottom">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- healthcare facility \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="oe:context/oe:health_care_facility"> Facility: <xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="oe:context/oe:health_care_facility/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="right" valign="top">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$compositionnode/oe:composer\[@xsi:type='PARTY_IDENTIFIED'\]"> Reported
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; by: <xsl:value-of select="$compositionnode/oe:composer/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$compositionnode/oe:composer\[@xsi:type='PARTY_RELATED'\]"> Reported by:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$compositionnode/oe:composer/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$compositionnode/oe:composer\[@xsi:type='PARTY_SELF'\]"> Reported by:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subject </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </table>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- add context if present \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$compositionnode/oe:context">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="composition-header-context">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="contextnode" select="$compositionnode/oe:context"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; </div>
&nbsp; </xsl:template>

&nbsp; <xsl:template name="composition-header-context">
&nbsp;&nbsp;&nbsp; <xsl:param name="contextnode"/>
&nbsp;&nbsp;&nbsp; <table width="100%" cellpadding="1" cellspacing="0">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- report identifier \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="top">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$contextnode/oe:other_context/oe:items/oe:items\[starts-with(@archetype_node_id,'at0007')\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$contextnode/oe:other_context/oe:items/oe:items\[starts-with(@archetype_node_id,'at0007')\]/oe:name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$contextnode/oe:other_context/oe:items/oe:items\[starts-with(@archetype_node_id,'at0007')\]/oe:name"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>: </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>Report ID:</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$contextnode/oe:other_context/oe:items/oe:items\[starts-with(@archetype_node_id,'at0007')\]/oe:value"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise> &nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- report start time \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="right" valign="top"> On: <xsl:call-template name="generic-date">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="$contextnode/oe:start_time/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>&nbsp; <xsl:call-template name="generic-time">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="$contextnode/oe:start_time/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>
&nbsp;&nbsp;&nbsp; </table>
&nbsp;&nbsp;&nbsp; <\!-\- ignore location and setting-->
&nbsp;&nbsp;&nbsp; <\!-\- * participations ignored \-->
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic ENTRY header \-->
&nbsp; <xsl:template name="generic-entry-header">
&nbsp;&nbsp;&nbsp; <xsl:param name="entrynode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="entrytype"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="nameoverride"/>
&nbsp;&nbsp;&nbsp; <\!-\- name \-->
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$nameoverride and $nameoverride='yes'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$entrytype"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$entrynode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat" select="$entrytype"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp; <\!-\- protocol \-->
&nbsp;&nbsp;&nbsp; <\!--<xsl:if test="$entrynode/protocol"><br/>Protocol<xsl:call-template
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$entrynode/protocol"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template></xsl:if>-->
&nbsp; </xsl:template>

&nbsp; <\!-\- Replace new line template \-->
&nbsp; <xsl:template name="replaceNL">
&nbsp;&nbsp;&nbsp; <xsl:param name="string"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="contains($string,'&#10;')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring-before($string,'&#10;')"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="replaceNL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="string" select="substring-after($string,'&#10;')"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$string"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>
&nbsp; <\!-\- .............. End helper templates ................. \-->

&nbsp; <\!-\- .............. Start openEHR class templates .............
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Every one of these templates corresponds to a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class in openEHR reference model (openEHR v1.1 used). \-->

&nbsp; <\!--Generic EVENT_CONTEXT-->
&nbsp; <xsl:template name="generic-EVENT_CONTEXT">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>

&nbsp;&nbsp;&nbsp; <p style="margin:0px;">

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- start and end times \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$targetnode/oe:end_time/oe:value"> Start time: <xsl:call-template
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="generic-DV_DATE_TIME">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datenode" select="$targetnode/oe:start_time"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>End time: <xsl:call-template name="generic-DV_DATE_TIME">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datenode" select="$targetnode/oe:end_time"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise> Date: <xsl:call-template name="generic-date">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="$targetnode/oe:start_time/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Time: <xsl:call-template name="generic-time">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="$targetnode/oe:start_time/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- healthcare facility \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:health_care_facility">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Facility: <xsl:value-of select="$targetnode/oe:health_care_facility/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- location and setting-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:location">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Location: <xsl:value-of select="$targetnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:setting">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Setting: <xsl:call-template name="generic-DV_CODED_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$targetnode/oe:setting"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- * participations ignored \-->

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- other context \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:other_context">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$targetnode/oe:other_context"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; </p>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic HISTORY \-->
&nbsp; <xsl:template name="generic-HISTORY">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>

&nbsp;&nbsp;&nbsp; <br/>Origin: <xsl:call-template name="generic-DV_DATE_TIME">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datenode" select="$targetnode/oe:origin"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:period">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><xsl:value-of select="$targetnode/oe:period/name/value"/>:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_DURATION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="durationnode" select="$targetnode/oe:period"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:duration">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><xsl:value-of select="$targetnode/oe:duration/name/value"/>:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_DURATION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="durationnode" select="$targetnode/oe:duration"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$targetnode/oe:summary">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$targetnode/oe:events">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><xsl:call-template name="generic-EVENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="eventnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic ITEM_STRUCTURE \-->
&nbsp; <xsl:template name="generic-ITEM_STRUCTURE" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance|http://www.w3.org/2001/XMLSchema-instance]">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- known item tree \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode\[@xsi:type = 'ITEM_TREE'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_TREE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$itemsnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- known item list \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode\[@xsi:type = 'ITEM_LIST'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_LIST">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$itemsnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- known item table \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode\[@xsi:type = 'ITEM_TABLE'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_TABLE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$itemsnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- else we just assume single item \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode\[@xsi:type = 'ITEM_SINGLE'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_SINGLE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$itemsnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise><span color="#f00;">Error displaying item structure: Could not detect concrete type.</span></xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic ITEM_SINGLE \-->
&nbsp; <xsl:template name="generic-ITEM_SINGLE">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <br/><xsl:call-template name="generic-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="$itemsnode/oe:item"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>
&nbsp;
&nbsp; <\!-\- Generic ITEM_TREE \-->
&nbsp; <xsl:template name="generic-ITEM_TREE">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic ITEM_LIST \-->
&nbsp; <xsl:template name="generic-ITEM_LIST">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- in theory should be able to call generic-ELEMENT directly
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; but not 100% sure this will work, depending on XML instance \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic ITEM_TABLE \-->
&nbsp; <xsl:template name="generic-ITEM_TABLE">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:columns">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-CLUSTER">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="clusternode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic ITEM
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If we have child "items" not null of xsi:type equal to cluster then calls
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; generic cluster template, otherwise calls generic element template \-->
&nbsp; <xsl:template name="generic-ITEM">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemnode/oe:items or $itemnode\[@xsi:type = 'CLUSTER'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-CLUSTER">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="clusternode" select="$itemnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="$itemnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic CLUSTER \-->
&nbsp; <xsl:template name="generic-CLUSTER">
&nbsp;&nbsp;&nbsp; <xsl:param name="clusternode"/>
&nbsp;&nbsp;&nbsp; <blockquote style="margin-top:0px;margin-bottom:0px;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$clusternode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">data cluster</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="$clusternode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp; </blockquote>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic ELEMENT \-->
&nbsp; <xsl:template name="generic-ELEMENT">
&nbsp;&nbsp;&nbsp; <xsl:param name="elementnode"/>
&nbsp;&nbsp;&nbsp; <blockquote style="margin-top:0px;margin-bottom:0px;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$elementnode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">data item</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>: <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$elementnode/oe:value">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DATA_VALUE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="dvnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/> ? </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp; </blockquote>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DATA_VALUE \-->
&nbsp; <xsl:template name="generic-DATA_VALUE" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance|http://www.w3.org/2001/XMLSchema-instance]">
&nbsp;&nbsp;&nbsp; <xsl:param name="dvnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type = 'DV_BOOLEAN'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_BOOLEAN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="boolnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_CODED_TEXT'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_CODED_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_COUNT'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_COUNT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_DATE_TIME'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_DATE_TIME">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datenode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_DURATION'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_DURATION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="durationnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_INTERVAL'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_INTERVAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_MULTIMEDIA'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_MULTIMEDIA">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_MULTI_MEDIA'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_MULTIMEDIA">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_ORDERED'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_ORDERED">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="orderednode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_ORDINAL'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_ORDINAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type = 'DV_PARAGRAPH'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_PARAGRAPH">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="paragraphnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type = 'DV_PROPORTION'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_PROPORTION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_QUANTITY'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_QUANTITY">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_QUANTITY_RATIO'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_QUANTITY_RATIO">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type = 'DV_STATE'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_STATE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="statenode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type = 'DV_TEXT'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='DV_URI'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_URI">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$dvnode/attribute::xsi:type='REFERENCE_RANGE'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-REFERENCE_RANGE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$dvnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size:80%">UNSUPPORTED DATA TYPE ENCOUNTERED: <xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$dvnode/attribute::xsi:type"/></span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_BOOLEAN \-->
&nbsp; <xsl:template name="generic-DV_BOOLEAN">
&nbsp;&nbsp;&nbsp; <xsl:param name="boolnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$boolnode/oe:value='true'"> Yes </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise> No </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_CODED_TEXT \-->
&nbsp; <xsl:template name="generic-DV_CODED_TEXT">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode" select="$targetnode"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_COUNT \-->
&nbsp; <xsl:template name="generic-DV_COUNT">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:value-of select="$targetnode/oe:magnitude"/>
&nbsp; </xsl:template>

&nbsp;
&nbsp; <\!-\-
&nbsp; <xsl:variable name="datetimeregex" v>^(?<format1>(?<year1>\d{4})(?\:(?<month1>0\[1-9\]\|1\[0-2\])(?\:(?<day1>0\[1-9\]\|\[12\]\d\|3\[01\]))(?<timestring1>T?(?<hour1>\[01\]\d\|2\[0-3\])(?\:(?<minute1>\[0-5\]\d)(?\:(?<second1>\[0-5\]\d)(?:\[,.\](?<secondfraction1>\d+))?)?)?(?<timezone1>Z\|(?\:(?<eastwest1>\[+\-\])(?\:(?<tzhours1>0\d)\|(1\[0-2\]))(?<tzminutes1>00\|30)?))?)?)?)?\|(?<format2>(?<year2>\d{4})(?:\-(?<month2>0\[1-9\]\|1\[0-2\])(?:\-(?<day2>0\[1-9\]\|\[12\]\d\|3\[01\])(?<timestring2>T(?<hour2>\[01\]\d\|2\[0-3\])(?:\\:(?<minute2>\[0-5\]\d)(?:\\:(?<second2>\[0-5\]\d)(\[,.\](?<secondfraction2>\d+))?)?)?(?<timezone2>Z\|(?\:(?<eastwest2>)\[+\-\](?\:(?<tzhours2>0\d)\|(?<tzminutes2>1\[0-2\]))(\:(00\|30))?))?)?)?)?)$</xsl:variable>
&nbsp; \-->
&nbsp; <\!-\- Generic DV_DATE_TIME
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (in format is '2006-05-05T10:44:46'; out format is '10:44')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uses generic-date; assumes XML instance will use standard date "value" element
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uses generic-time; assumes XML instance will use standard date "value" element&nbsp; \-->
&nbsp; <xsl:template name="generic-DV_DATE_TIME">
&nbsp;&nbsp;&nbsp; <xsl:param name="datenode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="show-seconds"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="show-timezone"></xsl:param>
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-date">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="$datenode/oe:value"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>&nbsp;<xsl:call-template name="generic-time">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="$datenode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="show-seconds" select="$show-seconds"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="show-timezone" select="$show-timezone"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_DURATION
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at present just prints the value \-->
&nbsp; <xsl:template name="generic-DV_DURATION">
&nbsp;&nbsp;&nbsp; <xsl:param name="durationnode"/>
&nbsp;&nbsp;&nbsp; <xsl:value-of select="$durationnode/oe:value"/>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_INTERVAL \-->
&nbsp; <xsl:template name="generic-DV_INTERVAL">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_ORDERED">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="orderednode" select="$targetnode/oe:lower"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template> - <xsl:call-template name="generic-DV_ORDERED">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="orderednode" select="$targetnode/oe:upper"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_MULTIMEDIA \-->
&nbsp; <xsl:template name="generic-DV_MULTIMEDIA">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- if there is no data, just link the URI value \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="not($targetnode/oe:data)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_URI">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$targetnode/oe:uri"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="linktext" select="parent::node()/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- otherwise we do somethign more fancy \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size:80%">CAN'T DISPLAY MULTIMEDIA CONTAINING DATA YET</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_ORDERED \-->
&nbsp; <xsl:template name="generic-DV_ORDERED">
&nbsp;&nbsp;&nbsp; <xsl:param name="orderednode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$orderednode\[@xsi:type='DV_COUNT'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_COUNT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$orderednode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$orderednode\[@xsi:type='DV_ORDINAL'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_ORDINAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$orderednode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$orderednode\[@xsi:type='DV_PROPORTION'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_PROPORTION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$orderednode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$orderednode\[@xsi:type='DV_QUANTITY'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_QUANTITY">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$orderednode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size:80%">UNSUPPORTED DV_ORDERED CHILD TYPE ENCOUNTERED: <xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$orderednode/attribute::xsi:type"/></span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_ORDINAL \-->
&nbsp; <xsl:template name="generic-DV_ORDINAL">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="show-value"/>
&nbsp;&nbsp;&nbsp; <xsl:if test="$show-value='yes'"><span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$targetnode/oe:value"/>
&nbsp;&nbsp;&nbsp; </span>:</xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:value-of select="$targetnode/oe:symbol/oe:value"/>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_PARAGRAPH \-->
&nbsp; <xsl:template name="generic-DV_PARAGRAPH">
&nbsp;&nbsp;&nbsp; <xsl:param name="paragraphnode"/>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$paragraphnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_PROPORTION \-->
&nbsp; <xsl:template name="generic-DV_PROPORTION">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:value-of select="$targetnode/oe:numerator"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- ratio \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$targetnode/oe:type = '0'"> :: <xsl:value-of select="$targetnode/oe:denominator"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- unitary \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$targetnode/oe:type='1'"> per <xsl:value-of select="$targetnode/oe:denominator"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- percent \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$targetnode/oe:type='2'">%
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="not($targetnode/oe:denominator = '100')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; of <xsl:value-of select="$targetnode/oe:denominator"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- fraction or integer fraction \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$targetnode/oe:type='3' or $targetnode/oe:type='4'"> / <xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$targetnode/oe:denominator"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_QUANTITY \-->
&nbsp; <xsl:template name="generic-DV_QUANTITY">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>

&nbsp;&nbsp;&nbsp; <xsl:variable name="val" select="number($targetnode/oe:magnitude)"/>
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; <\!-\- get all reference ranges into printable string \-->
&nbsp;&nbsp;&nbsp; <xsl:variable name="ranges-text">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:normal_range">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$val &gt;= number($targetnode/oe:normal_range/oe:lower/oe:magnitude) and $val &lt;= number($targetnode/oe:normal_range/oe:upper/oe:magnitude)"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; >Value is within normal range</xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>Value is outside normal range</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>(<xsl:call-template name="generic-DV_INTERVAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="oe:range"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>).</xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:other_reference_ranges">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="$targetnode/oe:other_reference_ranges"><xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$val &gt;= number(oe:range/oe:lower/oe:magnitude) and $val &lt;= number(oe:range/oe:upper/oe:magnitude)"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; >Within range</xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>Outside range</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>'<xsl:value-of select="oe:meaning/oe:value"/>' (<xsl:call-template
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="generic-DV_INTERVAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="oe:range"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>).</xsl:for-each>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; </xsl:variable>

&nbsp;&nbsp;&nbsp; <\!-\- display quantity \-->
&nbsp;&nbsp;&nbsp; <xsl:choose>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- when has normal range \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$targetnode/oe:normal_range">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$val &gt;= number($targetnode/oe:normal_range/oe:lower/oe:magnitude) and $val &lt;= number($targetnode/oe:normal_range/oe:upper/oe:magnitude)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#0a0;" title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$val"/>&nbsp;<xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$targetnode/oe:units"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#c00;" title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$val"/>&nbsp;<xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$targetnode/oe:units"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- when does not have normal range \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$val"/>&nbsp;<xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="$targetnode/oe:units"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>

&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_QUANTITY_RATIO \-->
&nbsp; <xsl:template name="generic-DV_QUANTITY_RATIO">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <span style="font-size:80%">CAN'T DISPLAY RATIOS YET</span>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_STATE-->
&nbsp; <xsl:template name="generic-DV_STATE">
&nbsp;&nbsp;&nbsp; <xsl:param name="statenode"/>
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_CODED_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$statenode/oe:value"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_TEXT
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hyperlinks the text if hyperlink is present
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ignores formatiing, mapping, language, encoding \-->
&nbsp; <xsl:template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp; <xsl:param name="textnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$textnode/oe:hyperlink">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_URI">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$textnode/oe:hyperlink"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="linktext" select="$textnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="replaceNL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="string" select="$textnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic DV_URI \-->
&nbsp; <xsl:template name="generic-DV_URI">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="linktext"/>
&nbsp;&nbsp;&nbsp; <xsl:variable name="linkhref" select="$targetnode/oe:value"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$linktext">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="{$linkhref}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$linktext"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$linkhref"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic REFERENCE_RANGE \-->
&nbsp; <xsl:template name="generic-REFERENCE_RANGE">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode" select="$targetnode/oe:meaning"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>: <xsl:call-template name="generic-DV_INTERVAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$targetnode/oe:range"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- Generic EVENT \-->
&nbsp; <xsl:template name="generic-EVENT">
&nbsp;&nbsp;&nbsp; <xsl:param name="eventnode"/>
&nbsp;&nbsp;&nbsp; <xsl:value-of select="$eventnode/oe:name/oe:value"/>&nbsp;
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-time">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="$eventnode/oe:time/oe:value"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; <xsl:if test="$eventnode/oe:state">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>State: <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$eventnode/oe:state"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:if test="$eventnode/oe:offset">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Offset: <xsl:call-template name="generic-DV_DURATION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="durationnode" select="$eventnode/oe:offset"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$eventnode/oe:data"/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- .............. end openEHR class templates .............. \-->

&nbsp; <\!-\- .............. summary openEHR class templates ....... \-->
&nbsp; <\!-\- Summary Histology HISTORY \-->
&nbsp; <xsl:template name="summary-histology-HISTORY">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:summary">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$targetnode/oe:summary"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$targetnode/oe:events/oe:data/descendant-or-self::*/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="@xsi:type='ELEMENT'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Summary Problem Diagnosis Histological ITEM_TREE \-->
&nbsp; <xsl:template name="summary-histological-ITEM_TREE">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="descendant-or-self::*/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="@xsi:type='ELEMENT'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Summary ELEMENT \-->
&nbsp; <xsl:template name="summary-ELEMENT">
&nbsp;&nbsp;&nbsp; <xsl:param name="elementnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$elementnode/oe:value">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DATA_VALUE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="dvnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise> ? </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>
&nbsp; <\!-\- ........... end summary openEHR class templates .... \-->

&nbsp; <\!-\- ........... Alternate openEHR class templates .... \-->
&nbsp; <\!-\- Alternate ITEM_TREE \-->
&nbsp; <xsl:template name="alt-ITEM_TREE">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Alternate ITEM_LIST \-->
&nbsp; <xsl:template name="alt-ITEM_LIST">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="$itemsnode/oe:items"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Alternate ITEM \-->
&nbsp; <xsl:template name="alt-ITEM">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemnode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="displayboldname"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemnode/oe:items or $itemnode\[@xsi:type = 'CLUSTER'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-CLUSTER">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="clusternode" select="$itemnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="$itemnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="displayboldname" select="$displayboldname"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- Alternate CLUSTER \-->
&nbsp; <xsl:template name="alt-CLUSTER">
&nbsp;&nbsp;&nbsp; <xsl:param name="clusternode"/><b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$clusternode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">data cluster</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </b>: <xsl:for-each select="$clusternode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="displayboldname">no</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <\!-\- Alternate ELEMENT \-->
&nbsp; <xsl:template name="alt-ELEMENT">
&nbsp;&nbsp;&nbsp; <xsl:param name="elementnode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="displayboldname"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$displayboldname='yes'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$elementnode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">data item</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </b>: </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$elementnode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">data item</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>: </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$elementnode/oe:value">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DATA_VALUE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="dvnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/> ? </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>
&nbsp; <\!-\- ........... end Alternate openEHR class templates .... \-->

&nbsp; <\!-\- ........... ocean openEHR class templates ............ \-->
&nbsp; <\!--Ocean observation HISTORY \-->
&nbsp; <xsl:template name="ocean-observation-HISTORY" xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <\!-\- this IF is only to stop instance error since RM says it MUST exist \-->
&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:duration">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Temporal duration: <xsl:call-template name="generic-DV_DURATION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="durationnode" select="$targetnode/oe:duration"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:if test="$targetnode/oe:period">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Temporal period: <xsl:call-template name="generic-DV_DURATION">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="durationnode" select="$targetnode/oe:period"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$targetnode/oe:summary">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp; <xsl:for-each select="$targetnode/oe:events">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="not($targetnode/oe:events/oe:data/oe:item or $targetnode/oe:events/oe:data/oe:item\[xsi:type='ITEM_SINGLE'\])">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="count(./parent::node()/events) > 1"><br/>Specimen collected: <xsl:call-template name="generic-DV_DATE_TIME">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datenode" select="./oe:time"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template></xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="ocean-observation-event-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="oe:data"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="oe:data/oe:item/oe:value\[@xsi:type='DV_QUANTITY'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="oe:data/oe:item/oe:value/oe:magnitude"/>&nbsp;<xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="oe:data/oe:item/oe:value/oe:units"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DATA_VALUE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="dvnode" select="oe:data/oe:item/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp; </xsl:template>

&nbsp; <xsl:template name="ocean-observation-event-ITEM_STRUCTURE"
&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode/oe:item or $itemsnode/oe:item\[@xsi:type='ITEM_SINGLE'\]">&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><xsl:call-template name="generic-DATA_VALUE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="dvnode" select="$itemsnode/oe:item/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template></b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode/oe:item or $itemsnode/oe:item\[@xsi:type='ITEM_TABLE'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <table cellpadding="1" cellspacing="0" style="font-size:12px;border-top:solid 1px#ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="ocean-observation-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </table>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <xsl:template name="ocean-observation-ITEM" xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemnode"/>
&nbsp;&nbsp;&nbsp; <xsl:param name="show-name"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemnode/oe:items or $itemnode\[@xsi:type = 'CLUSTER'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$show-name='true'">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr ><td colspan="4" align="left" valign="top" style="border-bottom:solid 1px #ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$itemnode/oe:name/oe:value"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td></tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="ocean-observation-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="show-name" select="$show-name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="ocean-observation-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="$itemnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <xsl:template name="ocean-observation-ELEMENT" xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:param name="elementnode"/>
&nbsp;&nbsp;&nbsp; <tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- for data values that are text \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$elementnode/oe:value\[@xsi:type='DV_TEXT' or
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @xsi:type='DV_CODED_TEXT'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td colspan="4" align="left" valign="top" style="border-bottom:solid 1px #ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$elementnode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">laboratory item</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>: <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$elementnode/oe:value">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DATA_VALUE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="dvnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>&nbsp;?&nbsp;</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- for data values that are quantities \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$elementnode/oe:value\[@xsi:type='DV_QUANTITY'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:variable name="val" select="number($elementnode/oe:value/oe:magnitude)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:variable name="ranges-text">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$elementnode/oe:value/oe:normal_range">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:variable name="norm-val-low" select="number($elementnode/oe:value/oe:normal_range/oe:lower/oe:magnitude)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:variable name="norm-val-high" select="number($elementnode/oe:value/oe:normal_range/oe:upper/oe:magnitude)"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$val &gt;= $norm-val-low and $val &lt;= $norm-val-high">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Value is within normal range
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Value is outside normal range
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<xsl:call-template name="generic-DV_INTERVAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="oe:range"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>).
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$elementnode/oe:value/oe:other_reference_ranges">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="$elementnode/oe:value/oe:other_reference_ranges">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$val &gt;= number(oe:range/oe:lower/oe:magnitude) and $val &lt;= number(oe:range/oe:upper/oe:magnitude)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Within range
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>Outside range</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '<xsl:value-of select="oe:meaning/oe:value"/>'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<xsl:call-template
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="generic-DV_INTERVAL">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="oe:range"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>).
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:variable>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="top" style="border-bottom:solid 1px #ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$elementnode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>: </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="right" valign="top" style="border-bottom:solid 1px #ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- get all reference ranges into printable string \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$elementnode/oe:value/oe:normal_range">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$val &gt;= number($elementnode/oe:value/oe:normal_range/oe:lower/oe:magnitude) and $val &lt;= number($elementnode/oe:value/oe:normal_range/oe:upper/oe:magnitude)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#0a0;" title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="ocean-DV_QUANTITY-magnitude-normal_range">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#c00;" title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="ocean-DV_QUANTITY-magnitude-normal_range">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="ocean-DV_QUANTITY-magnitude-normal_range">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="top" style="border-bottom:solid 1px #ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test="$val &gt;= number($elementnode/oe:value/oe:normal_range/oe:lower/oe:magnitude) and $val &lt;= number($elementnode/oe:value/oe:normal_range/oe:upper/oe:magnitude)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#0a0;" title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="contains($elementnode/oe:value/oe:magnitude, '.')"> .<xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="substring-after($elementnode/oe:value/oe:magnitude, '.')"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>&nbsp;</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#c00;" title="{$ranges-text}">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="contains($elementnode/oe:value/oe:magnitude, '.')"> .<xsl:value-of
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select="substring-after($elementnode/oe:value/oe:magnitude, '.')"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>&nbsp;</xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="top" style="border-bottom:solid 1px #ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<xsl:value-of select="$elementnode/oe:value/oe:units"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="top" style="border-bottom:solid 1px #ddd;"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- for all other data values (treated as simple name value pairs) \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="top" style="border-bottom:solid 1px #ddd;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="$elementnode/oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">laboratory item</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>: </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td align="left" valign="top" style="border-bottom:solid 1px #ddd;" colspan="3">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$elementnode/oe:value">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DATA_VALUE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="dvnode" select="$elementnode/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>? </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp;&nbsp;&nbsp; </tr>
&nbsp; </xsl:template>

&nbsp; <xsl:template name="ocean-DV_QUANTITY-magnitude-normal_range">
&nbsp;&nbsp;&nbsp; <xsl:param name="targetnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="contains($targetnode/oe:magnitude, '.')">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="substring-before($targetnode/oe:magnitude, '.')"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="$targetnode/oe:magnitude"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>

&nbsp; </xsl:template>
&nbsp; <\!-\- ........... end ocean openEHR class templates ........ \-->

&nbsp; <\!-\- match templates for commonly-archetyped openEHR RM clases \-->
&nbsp; <\!-\- DEFAULT COMPOSITION TEMPLATE \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-COMPOSITION')\]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <div id="composition-wrapper">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <div>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- do generic composition header \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="composition-header">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="compositionnode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:apply-templates select="oe:content"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>
&nbsp;&nbsp;&nbsp; </div>
&nbsp; </xsl:template>
&nbsp;
&nbsp; <\!-\- DEFAULT SECTION \-->
&nbsp; <xsl:template match="*\[@xsi:type='SECTION'\]" xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <h2 style="font-weight:bold;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-name">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namenode" select="oe:name"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="namecat">section</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </h2>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:apply-templates select="oe:items"/>
&nbsp;&nbsp;&nbsp; </div>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT OBSERVATION TEMPLATE \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-OBSERVATION')\]" xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:if test="oe:data/oe:events/oe:data/oe:items or oe:data/oe:events/oe:data/oe:item or oe:data/oe:events/oe:data/oe:columns">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- header \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-entry-header">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrynode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrytype">clinical observation</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- data \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-HISTORY">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="oe:data"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- state of subject \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="oe:state">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:value-of select="oe:state/oe:name/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </b>:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-HISTORY">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="targetnode" select="oe:state"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- protocol \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="oe:protocol">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <div style="color:#aaa;margin-left:-30px;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="oe:protocol"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>
&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT EVALUATION \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id,'openEHR-EHR-EVALUATION')\]"
&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <div>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- header \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-entry-header">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrynode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrytype">clinical evaluation</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- data \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="oe:data"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
&nbsp;&nbsp;&nbsp; </div>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT INSTRUCTION \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-INSTRUCTION')\]"
&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <div>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- header \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-entry-header">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrynode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrytype">clinical instruction</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- supports misspelt schema element for an INSTRUCTION \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_TEXT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="textnode" select="oe:narrative"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="oe:expiry_time">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Instruction expires:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-DV_DATE_TIME">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datenode" select="oe:expiry_time"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><b>Activities</b>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="oe:activities">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <blockquote style="border-bottom:solid 1px #ddd;padding:4px;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:apply-templates select="oe:description"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;
&nbsp;&nbsp;&nbsp; </div>
&nbsp; </xsl:template>

&nbsp; <\!-\- default ACTION TEMPLATE \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-ACTION')\]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <div>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- header \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-entry-header">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrynode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrytype">action</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <table cellspacing="0" cellpadding="2" width="100%">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td valign="top" align="left">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-time">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="datetimestring" select="oe:time/oe:value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="action-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="oe:description"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </table>
&nbsp;&nbsp;&nbsp; </div>
&nbsp; </xsl:template>
&nbsp; <xsl:template name="action-ITEM_STRUCTURE" xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:param name="itemsnode"/>
&nbsp;&nbsp;&nbsp; <xsl:choose>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- known item tree \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode\[@xsi:type = 'ITEM_TREE'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ITEM_TREE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$itemsnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- known item list \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode\[@xsi:type = 'ITEM_LIST'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ITEM_LIST">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$itemsnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- known item table \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:when test="$itemsnode\[@xsi:type = 'ITEM_TABLE'\]">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_TABLE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="$itemsnode"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:when>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- else we just assume single item or item tree \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:otherwise>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:item">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- meaning it's single \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ELEMENT">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="elementnode" select="$itemsnode/oe:item"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:if test="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- assuming it's a tree (includes list)-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:for-each select="$itemsnode/oe:items">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="alt-ITEM">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemnode" select="$itemsnode/oe:items"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:for-each>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:if>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:otherwise>
&nbsp;&nbsp;&nbsp; </xsl:choose>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT ITEM_TREE \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-ITEM_TREE')\]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_TREE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="."/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT ITEM_TABLE \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-ITEM_TABLE')\]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_TABLE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="."/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT ITEM_SINGLE \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-ITEM_SINGLE')\]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_SINGLE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="."/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT ITEM_LIST \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-ITEM_LIST')\]"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_LIST">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="."/>
&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp; </xsl:template>

&nbsp; <\!-\- DEFAULT ADMIN_ENTRY TEMPLATE \-->
&nbsp; <xsl:template match="*\[starts-with(@archetype_node_id, 'openEHR-EHR-ADMIN_ENTRY')\]"
&nbsp;&nbsp;&nbsp; xmlns:xsl="[http://www.w3.org/1999/XSL/Transform|http://www.w3.org/1999/XSL/Transform]">
&nbsp;&nbsp;&nbsp; <div>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- header \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-entry-header">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrynode" select="."/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="entrytype">administrative entry</xsl:with-param>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:call-template name="generic-ITEM_STRUCTURE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <xsl:with-param name="itemsnode" select="oe:data"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </xsl:call-template>
&nbsp;&nbsp;&nbsp; </div>
&nbsp; </xsl:template>
&nbsp;
</xsl:stylesheet>

<\!-\- \****\* BEGIN LICENSE BLOCK \****\*
&nbsp;&nbsp; - Version: MPL 1.1/GPL 2.0/LGPL 2.1
&nbsp;&nbsp; -
&nbsp;&nbsp; - The contents of this file are subject to the Mozilla Public License Version
&nbsp;&nbsp; - 1.1 (the "License"); you may not use this file except in compliance with
&nbsp;&nbsp; - the License. You may obtain a copy of the License at
&nbsp;&nbsp; - [http://www.mozilla.org/MPL/|http://www.mozilla.org/MPL/]
&nbsp;&nbsp; -
&nbsp;&nbsp; - Software distributed under the License is distributed on an "AS IS" basis,
&nbsp;&nbsp; - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
&nbsp;&nbsp; - for the specific language governing rights and limitations under the
&nbsp;&nbsp; - License.
&nbsp;&nbsp; -
&nbsp;&nbsp; - The Original Code is
&nbsp;&nbsp; \-&nbsp;&nbsp; EhrView openEHR RM generic html transform (base.xslt).
&nbsp;&nbsp; -
&nbsp;&nbsp; - The Initial Developer of the Original Code is
&nbsp;&nbsp; \-&nbsp;&nbsp; Ocean Informatics Pty Ltd.
&nbsp;&nbsp; - Portions created by the Initial Developer are Copyright (C) 2006-2008
&nbsp;&nbsp; - the Initial Developer. All Rights Reserved.
&nbsp;&nbsp; -
&nbsp;&nbsp; - Contributor(s):
&nbsp;&nbsp; \-&nbsp;&nbsp; Lisa Thurston
&nbsp;&nbsp; \-&nbsp;&nbsp; Heath Frankel
&nbsp;&nbsp; -
&nbsp;&nbsp; - Alternatively, the contents of this file may be used under the terms of
&nbsp;&nbsp; - either the GNU General Public License Version 2 or later (the "GPL"), or
&nbsp;&nbsp; - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
&nbsp;&nbsp; - in which case the provisions of the GPL or the LGPL are applicable instead
&nbsp;&nbsp; - of those above. If you wish to allow use of your version of this file only
&nbsp;&nbsp; - under the terms of either the GPL or the LGPL, and not to allow others to
&nbsp;&nbsp; - use your version of this file under the terms of the MPL, indicate your
&nbsp;&nbsp; - decision by deleting the provisions above and replace them with the notice
&nbsp;&nbsp; - and other provisions required by the LGPL or the GPL. If you do not delete
&nbsp;&nbsp; - the provisions above, a recipient may use your version of this file under
&nbsp;&nbsp; - the terms of any one of the MPL, the GPL or the LGPL.
&nbsp;&nbsp; -
&nbsp;&nbsp; - \****\* END LICENSE BLOCK \****\* \-->