В 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
– обязательный (и единственный) атрибут обоих элементов. Он указывает имена элементов исходного документа, к которым будет применяться соответствующее правило. Элементы указываются поименно через пробел, либо с помощью символа звездочка (*
), распространяющего действие правила на все элементы исходного дерева.