В XSLT к пробельным символам относятся:
- пробел (
#x20); - горизонтальная табуляция (
#x9); - перевод строки (
#xA); - возврат каретки (
#xD).
Особенность обработки этих символов заключается в том, что после загрузки и построения дерева исходного документа или документа стиля, но перед какой-либо его обработкой XSLT процессором, выполняется очистка (удаление) текстовых узлов, содержащих только пробельные символы.
Особо стоит отметить два момента:
- очистке подвергаются только текстовые узлы;
- очистке подвергается как исходное дерево, так и дерево самого стиля.
При этом на этапе очистки текстовые узлы сохраняются в следующих случаях:
- Текстовый узел содержит хотя бы один не пробельный символ.
- Атрибут
xml:spaceпозволяет средствами XML управлять обработкой пробельных символов. Если произвольному элементу задать атрибутxml:space="preserve", то у этого элемента и всех его потомков будут сохранены пробельные символы. Если же задать атрибутxml:space="default", то у элемента и всех его потомков будут удаляться узлы, содержащие только пробельные символы. Данный атрибут допустимо использовать как в исходном xml-документе, так и в документе стиля (xsl). - Пробельные символы не удаляются, если имя родительского элемента текстового узла принадлежит к так называемому сохраняющему множеству – множеству имен элементов, для которых следует сохранять пробельные символы. По умолчанию для документа стиля к этому множеству принадлежит один элемент –
xsl:text, а для исходного документа – все элементы. При этом сохраняющее множество исходного документа можно изменять (сохраняющее множество документа стиля менять нельзя). Для этого используются элементы верхнего уровняxsl:preserve-spaceиxsl:strip-space.
Элемент xsl:preserve-space добавляет имена элементов в сохраняющее множество, а элемент xsl:strip-space удаляет.
Синтаксис:
1 2 | <xsl:strip-space elements = "элементы" /> |
1 2 | <xsl:preserve-space elements = "элементы" /> |
Атрибуты:
elements– обязательный (и единственный) атрибут обоих элементов. Он указывает имена элементов исходного документа, к которым будет применяться соответствующее правило. Элементы указываются поименно через пробел, либо с помощью символа звездочка (*), распространяющего действие правила на все элементы исходного дерева.

