</xsl:message>
Инструкция
Замечание: xslt процессор может реализовывать элемент
Если атрибут
Одним из удобных способов локализации состоит в том, чтобы поместить локализованную информацию (текст сообщения и прочего) в некий 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>
14 Расширения
XSLT допускает два типа расширений: элементы расширения и функции расширения.
Данная версия XSLT не дает механизм для создания расширений. Поэтому стиль XSLT, который должен быть переносим между различными реализациями XSLT процессора, не должен быть завязан на доступность определенных расширений. XSLT дает механизмы, позволяющие стилю XSLT определить, доступна ли реализация конкретных расширений в XSLT процессоре, осуществляющем обработку этого стиля, и что должно происходить если указанные расширения недоступны. Если авторы стиля XSLT позаботились об использовании таких механизмов, то можно совместить преимущества расширений и работоспособность с любыми реализациями XSLT.
14.1 Элементы расширения
Механизм элементов расширения позволяет строить пространства имён как пространства имён расширений. Если пространство имён построено как пространство имён расширений и в шаблоне обнаружен элемент с именем из этого пространства, то тогда этот элемент обрабатывается как инструкция, а не как фиксированный конечный элемент. Указанное пространство имён определяет семантику этой инструкции.
Замечание:Поскольку элемент, являющийся непосредственным потомком элемента
Пространство имён объявляется пространством имён расширения с помощью атрибута
Если XSLT процессору недоступна реализация определенного элемента расширения, функция element-available в ответ на имя этого элемента должна возвращать false. Когда подобный элемент расширения обрабатывается, XSLT процессор должен выполнить для этого элемента откат, как описано в главе [15 Откат]. При этом XSLT процессор не должен