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

5.3.6.5. Метод вывода "text"

При значении атрибута method, равном"text", результатом преобразования будет строковое сложение всех текстовых узлов исходного документа.

Атрибуты encoding, normalization-form, byte-order-mark и use-character-maps действуют также, как и для метода "xml".

Атрибут media-type

По умолчанию в качестве значения атрибута media-type, используемого для простого текста, указывается"text/plain". Значение атрибутаmedia-typeможет быть использовано сервером, преобразующим документ в качестве MIME-типа.

Примеры вывода для различных значений атрибута methodбудут приведены далее.

5.3.7. Правила шаблона вXslt

5.3.7.1. Образцы и шаблоны

Основными компонентами документа XSLT являются правила шаблона. Правило шаблона состоит из двух частей: этообразец(pattern), который сопоставляется с узлами в исходном дереве, ишаблон(template), который содержит конструктор последовательности, используемой для создания фрагментов результирующей иерархической структуры.

Преобразование в XSLTсостоит не из последовательности действий, как в языках программирования, а изнабора правил шаблона, каждое из которых обрабатывает свою часть документа XML.

Чтобы получить фрагмент результирующей структуры, шаблон обрабатывается для определенного элемента в исходной структуре. Шаблон может содержать элементы, определяющие фиксированную структуру элемента в результирующей структуре (аналог прямого конструктора в XQuery), а также элементы из пространства имен XSLT, содержащие инструкции по формированию фрагментов результирующей структуры (аналог вычисляемого конструктора в XQuery).

При поиске соответствующего правила шаблона может возникнуть ситуация, когда обрабатываемому элементу соответствует не одно, а несколько правил. В этом случае выбирается правило с самым большим приоритетом (если правил с одинаковым приоритетом окажется несколько, генерируется ошибка).

В правиле шаблона образец задает перечень условий для обрабатываемого узла. Узел, который отвечает этим условиям, шаблону соответствует, а узел, который условиям не отвечает, шаблону не соответствует. Синтаксис шаблонов является подмножеством синтаксиса выражений XPath. В частности, в качестве шаблонов могут использоваться пути адресации, которые отвечают определенным ограничениям.

Образец для пути адресации – это некоторый путь адресации, на всех шагах которого используются лишь оси childилиattribute. Хотя образцы и не должны использовать осьdescendant-or-self, в образцах могут использоваться как оператор "//", так и оператор "/". Образцы путей адресации могут начинаться также с вызова функцийidилиkeyс фиксированным аргументом. В предикатах образца могут использоваться произвольные выражения.

Примеры образцов:

  1. Образец "/" соответствует корневому узлу.

  2. Образец "*" соответствует любому элементу.

  3. Образец "document-node()" соответствует узлу документа.

  4. Образец "schema-element(book:publisher)" соответствует любому элементу в документе, определенному как реализация элементаbook:publisherв схеме документа.

  5. Образец "attribute(*, xs:gYear)" соответствует любому атрибуту документа, имеющему типxs:gYear.

  6. Образец "chapter" соответствует любому элементуchapter.

  7. Образец "chapter|appendix" соответствует любому элементуchapterи любому элементуappendix.

  8. Образец "list/item" соответствует любому элементуitemс родителемlist.

  9. Образец "partition//paragraph" соответствует любому элементуparagraph, предком которого является элементpartition.

  10. Образец "paragraph[1]" соответствует любому первому дочернему элементуparagraph.

  11. Образец "text()" соответствует любому текстовому узлу.

  12. Образец "node()" соответствует любому узлу за исключением узла атрибута и корневого узла.

  13. Образец "div[@class="chapter"]//p" соответствует любому элементуp, предком которого является элементdiv, имеющий атрибутclassсо значениемchapter.

  14. Образец "@class" соответствует любому атрибутуclass(но не любому элементу, имеющему атрибутclass).

  15. Образец "@*" соответствует любому атрибуту.

  16. Образец "id('p1')" соответствует элементу с уникальным ID p1.

В шаблонах атрибутов могут присутствовать фиксированные и вычисляемые компоненты. Вычисляемые компоненты, как и в конструкторах XQuery заключаются в фигурные скобки "{" и "}". При преобразовании эти компоненты будут вычислены и заменены своим результатом.

Если символы "{" и "}" используются в шаблонах атрибутов как обычные символы, они должны быть удвоены, т.е. заменены символами "{{" и "}}".

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