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

14 Расширения

XSLT допускает два типа расширений: элементы расширения и функции расширения.

Данная версия XSLT не дает механизм для создания расширений. Поэтому стиль XSLT, который должен быть переносим между различными реализациями XSLT процессора, не должен быть завязан на доступность определенных расширений. XSLT дает механизмы, позволяющие стилю XSLT определить, доступна ли реализация конкретных расширений в XSLT процессоре, осуществляющем обработку этого стиля, и что должно происходить если указанные расширения недоступны. Если авторы стиля XSLT позаботились об использовании таких механизмов, то можно совместить преимущества расширений и работоспособность с любыми реализациями XSLT.

14.1 Элементы расширения

Механизм элементов расширения позволяет строить пространства имён как пространства имён расширений. Если пространство имён построено как пространство имён расширений и в шаблоне обнаружен элемент с именем из этого пространства, то тогда этот элемент обрабатывается как инструкция, а не как фиксированный конечный элемент. Указанное пространство имён определяет семантику этой инструкции.

Замечание:Поскольку элемент, являющийся непосредственным потомком элемента xsl:stylesheet, в шаблон не попадает, то не-XSLT элементы верхнего уровня не относятся к описываемым здесь элементам расширения, не применяется к ним и ни одно из указаний, данных в этой главе.

Пространство имён объявляется пространством имён расширения с помощью атрибута extension-element-prefixes в элементе xsl:stylesheet, либо атрибута xsl:extension-element-prefixes в фиксированном конечном элементе или элементе расширения. Значением обоих этих атрибутов является перечень (через пробельный символ) префиксов пространства имён. Пространство имён, связанное с каждым из представленных префиксов, рассматривается как пространство имён расширения. Если пространство имён, привязанное к префиксу в элементе, имеющем атрибут extension-element-prefixes или xsl:extension-element-prefixes, отсутствует, фиксируется ошибка. Пространство имён по умолчанию (декларируемое с помощью xmlns) также может быть объявлено как пространство имён расширений если в описываемый перечень префиксов пространства имён включить #default. Объявление пространства имён в качестве пространства имён расширений действительно в стиле в пределах поддерева, начинающегося с того элемента, которому принадлежит атрибут extension-element-prefixes или xsl:extension- element-prefixes. Поддерево, начинающееся с элемента xsl:stylesheet, не включает каких-либо стилей, импортированных или включенных непосредственными потомками этого элемента xsl:stylesheet.

Если XSLT процессору недоступна реализация определенного элемента расширения, функция element-available в ответ на имя этого элемента должна возвращать false. Когда подобный элемент расширения обрабатывается, XSLT процессор должен выполнить для этого элемента откат, как описано в главе [15 Откат]. При этом XSLT процессор не должен

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату