Язык преобразований XSL


Сообщения


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



Содержание раздела