<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="message" select="'plain'"/>
<!-- messaging style: 'silent', 'plain', or 'prefixed' -->
<xsl:template name="message">
<xsl:param name="level" select="'fatal'"/>
<!-- message level: 'warning', 'error', or 'fatal' -->
<xsl:param name="text" select="'no text given'"/>
<xsl:choose>
<xsl:when test="$message = 'silent'"/>
<xsl:when test="$level = 'warning'">
<xsl:call-template name="print_message">
<xsl:with-param name="level" select="'warning'"/>
<xsl:with-param name="terminate" select="'no'"/>
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$level = 'error'">
<xsl:call-template name="print_message">
<xsl:with-param name="level" select="'error'"/>
<xsl:with-param name="terminate" select="'no'"/>
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$level = 'fatal'">
<xsl:call-template name="print_message">
<xsl:with-param name="level" select="'fatal'"/>
<xsl:with-param name="terminate" select="'yes'"/>
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="print_message">
<xsl:with-param name="level" select="'fatal'"/>
<xsl:with-param name="terminate" select="'no'"/>
<xsl:with-param name="text" select="concat('fatal:unknown level for message [', $text, ']')"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="print_message">
<!-- this template should never be called from outside; for printing messages, call the "message" template. -->
<xsl:param name="level"/>
<xsl:param name="terminate"/>
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="$message = 'plain'">
<xsl:message terminate="{$terminate}">
<xsl:value-of select="$text"/>
</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="{$terminate}">
<xsl:value-of select="concat($level, ':', $text)"/>
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>