<?xml version="1.0" encoding="UTF-8"?><!-- $Header: /usr/cvs/Sharef/Sharef/bibconvert/xslt/message.xsl,v 1.3 2005/09/05 09:44:42 dret Exp $ --><xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->	<!-- this module implements configurable messaging. using the "message" style sheet parameter and named template, messages can be printed in a configurable way. for command line applications, the message prefix (indicating the message level, one of 'progress', 'warning', 'error', or 'fatal') can be suppressed or set to output progress messages only. when the "message" style sheet parameter is set to 'prefix', the messages will have a prefix, separated with a colon, indicating the message level. this can be used by applications to dispatch or otherwise selectively process messages. -->	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->	<!-- selects output of messaging facility, can be 'plain' (default, output all messages as they are), 'progress' (only progress messages are output), 'prefix' (output all messages with a colon-separated prefix indicating the message level), and 'silent' (do not output any messages). -->	<xsl:param name="message" select="'plain'"/>	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->	<xsl:template name="message">		<xsl:param name="level" select="'fatal'"/>		<!-- message level, can be 'progress', 'warning', 'error', or 'fatal'. -->		<xsl:param name="text" select="'no text given'"/>		<!-- message text, should be int[0..100] for 'progress', free text otherwise. -->		<xsl:choose>			<xsl:when test="$message = 'silent'">				<!-- do nothing if $message has been set to 'silent'. -->			</xsl:when>			<xsl:when test="$level = 'progress'">				<xsl:call-template name="print_message">					<xsl:with-param name="level" select="'progress'"/>					<xsl:with-param name="terminate" select="'no'"/>					<xsl:with-param name="text" select="$text"/>				</xsl:call-template>			</xsl:when>			<xsl:when test="$message = 'progress'">				<!-- do nothing if $message has been set to 'progress' but it is no progress message. -->			</xsl:when>			<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="'yes'"/>					<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', 'progress')">				<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>
