Speak.Me Учить иностранные слова

XSL: обработка пробельных символов (xsl:strip-space и xsl:preserve-space)

В 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 удаляет.

Синтаксис:

Атрибуты:

  • elements – обязательный (и единственный) атрибут обоих элементов. Он указывает имена элементов исходного документа, к которым будет применяться соответствующее правило. Элементы указываются поименно через пробел, либо с помощью символа звездочка (*), распространяющего действие правила на все элементы исходного дерева.