Шрифт:
•
Содержимое этого элемента может содержать любой из следующих элементов XSL высокого уровня:
Заметьте, что атрибут
Атрибут задания версии обязателен, в данный момент его можно установить в «1.0». Можно также установить его в «1.1», определяя рабочий проект XSLT 1.1; однако, так как XSLT 1.1 не собирается выходить из стадии рабочего проекта, значение «1.1», скорее всего, не будет считаться корректным значением этого атрибута в долгосрочной перспективе. Везде в книге я буду устанавливать этот атрибут в значение «1.0», поскольку это текущая рекомендация XSLT W3C, а версия 1.1, видимо, останется только на стадии рабочего проекта. Как говорилось в главе 1, W3C также выпустил требования для XSLT 2.0, которая и будет следующей версией.
ПРОЦЕССОРЫ XSLT И СОВМЕСТИМОСТЬ ВПЕРЕД
Если процессор XSLT не распознает версию XSLT, то, в соответствии с утверждениями W3C, процессор должен считать, что все новые элементы входят в новую версию XSLT, и не завершать работу, — это W3C называет совместимостью вперед (forward compatibility). Все нераспознанные элементы не должны отвергаться процессором, если только таблица стилей не попытается создать экземпляр этого элемента и не найдет дочернего элемента <xsl:fallback> (см. главу 5). Таким образом, вы можете установить версию XSLT в 2.0 даже в процессорах XSLT, написанных для XSLT 1.0, и это не приведет к проблемам, если вы не будете использовать возможности, существующие только в XSLT 2.0. (Исключением является MSXML3, который в данный момент генерирует ошибки, если установить значение версии, отличное от 1.0.)
Пространство имен XSL
Заметьте, что элементы XSLT, такие как
Таблицы стилей XSL используют свое собственное пространство имен, чтобы избежать конфликта с другими используемыми в таблице элементами. Например, вам может потребоваться указать, какая таблица стилей использовалась для преобразования документа; в таком случае вы можете создать свой собственный элемент
В таблицах стилей для элементов XSLT обычно используется префикс пространства имен
На практике это означает, что все элементы XSLT, с которыми мы станем работать, будут начинаться с префикса пространства имен xsl, как в
Как и любое другое приложение XML, XSLT имеет хорошо разработанный набор правил допустимости таблицы стилей XSLT. W3C даже определил для XSLT псевдо-DTD, где перечислены все правила синтаксиса, — эти объявления DTD приведены в приложении А, которое послужит вам хорошим справочником в случае затруднений с синтаксисом XSLT. Как показано в приложении А, элемент
ОБРАБОТКА ПРОСТРАНСТВ ИМЕН ПО УМОЛЧАНИЮ
Работа с пространствами имен может оказаться не слишком простой. Например, иногда присваивают пространство имен по умолчанию всему элементу <xsl:stylesheet>, как в <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="mydefault">, ожидая, что <xsl:template match="mysymbol"> выберет mysymbol в пространстве имен "mydefault" исходного документа. Однако это не будет работать. Обработка пространств имен по умолчанию, как в таком случае, — одна из проблем, которую призван решить XSLT 2.0.
Элементы таблиц стилей высокого уровня
В XSL определен ряд элементов высокого уровня, которые могут быть прямыми дочерними элементами
•
•
•
•
•
•
•