Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-08.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
422.91 Кб
Скачать

1. Поздравление

2. Напоминание

Сообщение 1

От: ivanov@mail.com

Кому: petrov@mail.com

Тема: Поздравление

Текст: Поздравляю с днем рождения!

Сообщение 2

От: ivanov@mail.com

Кому: sidorov@mail.com

Тема: Напоминание

Текст: Встречаемся в 10.00..

5.3.9.4. Обработка пробельных символов

В XSLTвыделяются четыре пробельных символа, обработка которых не­сколько отличается от обработки других символов. Это следующие символы:

  • пробел (десятичный код: #32, шестнадцатеричный код#x20);

  • перевод строки (десятичный код: #10, шестнадцатеричный код#xA);

  • возврат каретки (десятичный код: #13, шестнадцатеричный код#xD);

  • горизонтальная табуляция (десятичный код: #9, шестнадцатеричный код#x9).

При обработке процессором XSLTтекстовый узел будет сохранен при выполнении хотя бы одного из следующих условий:

  • он содержит хотя бы один непробельный символ;

  • он принадлежит элементу, в котором сохранение пробельных символов задано средствами XML, а именно атрибутом xml:spaceсо значениемpreserve;

  • он принадлежит элементу, имя которого включено во множество имен элементов, для которых нужно сохранять пробельные символы.

Во всех остальных случаях текстовый узел будет удален.

Для преобразований сохраняющее множество состоит из единственного элемента xsl:text, то есть единственный элемент в преобразовании, для которого пробельные текстовые узлы не будут удаляться, – это элементxsl:text. Поэтому его часто используют для вывода в выходящем докумен­те пробельных символов.

Для входящих документов сохраняющее множество состоит из имен всех элементов. То есть по умолчанию преобразования сохраняют все пробель­ные текстовые узлы. Для изменения сохраняющего множества элементов входящего документа используются элементы xsl:preserve-spaceиxsl:strip-space.

Эти элементы имеют следующий синтаксис:

<xsl:preserve-space

elements="имена"

/>

<xsl:strip-space

elements="имена"

/>

Элемент xsl:preserve-spaceдобавляет,axsl:strip-spaceудаляет имя элемента из сохраняющего множества входящего документа.

Обязательные атрибуты elementsэлементовxsl:strip-spaceиxsl:preserve-spaceсодержат либо значение"*", либо список имен, разделенных пробелами.

Значение "*"используется для выбора произвольных имен. Ему будут соответствовать любые имена элементов.

Имя в списке может быть либо именем элемента, либо иметь форму "префикс:*". В первом случае выбор будет производиться для всех элементов с заданным именем, например, для удаления пробельных символов в элементахdиcв преобразовании достаточно указать:

<xsl:strip-space elements="d c"/>.

Во втором случае будет производиться выбор всех элементов в данном пространстве имен. Например, если в документе определен префикс про­странства имен uprв виде атрибутаxmlns:upr="http://www.upr.com", проверке имени"upr:*"будут соответствовать все элементы пространства имен, определяемого идентификатором"http://www.upr.com".

5.3.10. Создание узлов документа, комментариев, инструкций по обработке и пространства имен вXslt

5.3.10.1. Элемент xsl:document

Новый узел документа создается с помощью следующей инструкции:

<xsl:document

type="имя"

validation="strict" | "lax" | "preserve" | "strip"

>

<!--

Содержимое: конструктор последовательности

-->

</xsl:document>

Атрибут typeзадает проверку создаваемого узла документа на соответствие типу, заданному в значении атрибута и определенному в схеме документа.

Атрибут validationопределяет действия по проверке действительности создаваемого атрибута. Значения "preserve" и "strip" не требуют проверки узлов документа, причем в первом случае копируемые в новый документ узлы элементов и атрибутов сохраняют свой тип, а во втором – элементы получают типxs:untyped, а атрибуты – типxs:untypedAtomic. Если же задано значение "strict" или "lax", то в случае, если наследниками узла документа не является один узел элемента, а также, возможно, узлы комментариев и инструкций по обработке, выдается сообщение об ошибке. Затем выполняется проверка дочернего узла элемента в документе. Если проверяемый узел не соответствует своей схеме, также выдается сообщение об ошибке.

Атрибуты typeиvalidationявляются взаимоисключающими, т.е. в элементе может быть задан только один из этих атрибутов.

Соседние файлы в папке Лекции