Книга: Технология XSLT

Элементы 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 и элементах, принадлежащих пространству имен, определяемому идентификатором "urn:d".

Листинг 8.2. Входящий документ

<а xmlns:d="urn:d">¶
??<d:b>¶
????<c>¶
??????</e>¶
????</c>¶
??</d:b>¶
</a>

Листинг 8.3. Преобразование

<xsl:stylesheet
 version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:preserve-space elements="c"/>
 <xsl:strip-space elements="e t:*"
  xmlns:t="urn:d"/>
 <xsl:template match="/">
  <xsl:copy-of select="/"/>
 </xsl:template>
</xsl:stylesheet>

Листинг 8.4. Выходящий документ

<?xml version="1.0" encoding="utf-8"?><a xmlns:d="urn:d">¶
??<d:b><c>¶
??????<e/>¶
????</c></d:b>¶
</a>

Оглавление книги

Оглавление статьи/книги

Генерация: 1.038. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз