Для входящих документов сохраняющее множество состоит из имен всех элементов. То есть по умолчанию преобразования сохраняют все пробельные текстовые узлы. Для изменения сохраняющего множества элементов входящего документа используются элементы
xsl:preserve-space
и
xsl:strip-space
.
Элементы xsl:preserve-space и xsl:strip-space
Синтаксические конструкции этих элементов очень похожи:
<xsl:preserve-space
elements="токены"/>
<xsl:strip-space
elements="токены"/>
Элемент
xsl:preserve-space
добавляет, a
xsl:strip-space
удаляет имя элемента из сохраняющего множества входящего документа.
Пример
Предположим, нам нужно сохранять пробельные символы во всех элементах
d
и удалять их в элементах
с
. Тогда в преобразовании достаточно указать
<xsl:preserve-space elements="d"/>
<xsl:strip-space elements="c"/>
Вообще, обязательные атрибуты elements элементов
xsl:strip-space
и
xsl:preserve-space
содержат не сами имена элементов, а так называемые проверки имен. Проверка имени имеет три варианта синтаксиса.
□ Синтаксис
"*"
используется для выбора произвольных имен. Ей будут соответствовать любые имена элементов.
□ Синтаксис
"имя"
используется для выбора элементов с заданным именем. К примеру, проверке имени
"d"
будут соответствовать все элементы с именем "
d
".
□ Синтаксис
"префикс:*"
используется для выбора всех элементов в данном пространстве имен. К примеру, если в документе определен префикс пространства имен
upr
в виде атрибута
xmlns:upr="http://www.upr.com"
, проверке имени
"upr:*"
будут соответствовать все элементы пространства имен, определяемого идентификатором
"http://www.upr.com"
.
Пример
Предположим, что нам необходимо сохранить пробельные символы в элементе с именем
с
и удалить их в элементе
e
и элементах, принадлежащих пространству имен, определяемому идентификатором "
По большому счету, мы не можем контролировать процесс преобразования. Процессор может сам выбирать, как и в какой последовательности он будет выполнять те или иные шаблоны — таковы особенности декларативного программирования. Вместе с тем мы все-таки можем получить кое-какую информацию о ходе преобразования, используя механизм, называемый в XSLT сообщениями.
Элемент xsl:message
Синтаксис этого элемента дан ниже:
<xsl:message
terminate="yes" | "no">
<!-- Содержимое: шаблон -->
</xsl:message>
Элемент
xsl:message
указывает процессору на то, что он должен вывести сообщение, которое является результатом обработки шаблона, содержащегося в этом элементе. Механизм вывода сообщения зависит от реализации того или иного процессора и может быть различным — от вывода текста сообщения на экран до вызова внешнего модуля для обработки сообщения.
Пример
Иногда в процессе отладки преобразования бывает полезно выводить сообщения о том, какой элемент обрабатывается в данный момент.