Сообщения
<!-- Category: instruction -->
<xsl:message
terminate = "yes" | "no">
<!-- Content: template -->
</xsl:message>
Инструкция xsl:message посылает сообщение, причем способ отправки зависит от XSLT процессора. Содержимое инструкции xsl:message является шаблоном. xsl:message обрабатывается путем подстановки его содержимого в создаваемый XML фрагмент. Этот XML фрагмент является содержимым посылаемого сообщения.
Замечание: XSLT процессор может реализовывать элемент xsl:message, открывая окно с предупреждением, либо делая запись в log-файле.
Если атрибут terminate имеет значение yes, то после посылки сообщения XSLT процессор должен завершить обработку. Значением по умолчанию является no.
Одним из удобных способов локализации состоит в том, чтобы поместить локализованную информацию (текст сообщения и прочего) в некий XML документ, который станет для стиля дополнительным входным файлом. Предположим к примеру что сообщение для языка L помещено в XML-файл resources/L.xml в следующем формате:
<messages> <message name="problem">A problem was detected.</message> <message name="error">An error was detected.</message> </messages>
В этом случае для локализации сообщений стиль может использовать следующий прием:
<xsl:param name="lang" select="en"/> <xsl:variable name="messages"
select="document(concat('resources/', $lang, '.xml'))/messages"/>
<xsl:template name="localized-message">
<xsl:param name="name"/> <xsl:message> <xsl:value-of select="$messages/message[@name=$name]"/> </xsl:message> </xsl:template>
<xsl:template name="problem"> <xsl:call-template name="localized-message"/> <xsl:with-param name="name">problem</xsl:with-param> </xsl:call-template> </xsl:template>