Kniga-Online.club

Стивен Холзнер - XSLT

Читать бесплатно Стивен Холзнер - XSLT. Жанр: Интернет издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Когда у нас есть таблица стилей XSL, которую нужно применить к документу XML, требуется каким-то образом связать эту таблицу стилей с документом, — для чего часто используется инструкция обработки <?xsl:stylesheet?>. У этой инструкции есть несколько возможных атрибутов:

• href (обязательный). URI таблицы стилей. Может быть полный URI, либо фрагмент из #new_style. Устанавливается в URI;

• type (обязательный). Тип MIME таблицы стилей. Обычно «text/xml» или «application/xml». Для Internet Explorer используйте «text/xsl». Устанавливается в допустимый тип MIME;

• title (необязательный). Заголовок позволяет различить несколько различных элементов <?xsl:stylesheet?>. Некоторые разборщики XML позволяют задать, какой из них использовать. Устанавливается в строковое значение;

• media (необязательный). Описание средств вывода, например «print» или «aural» (звуковой). Устанавливается в одно из значений, перечисленных в спецификации W3C HTML 4.0;

• charset (необязательный). Устанавливает кодировку символов. Заметьте, что таблицы стилей XSLT устанавливают свои собственные кодировки, поскольку они являются документами XML, так что практической пользы этот атрибут не имеет. Устанавливается в кодировку символов — например в «UTF-8»;

• alternate (необязательный). Принимает либо значение «yes» (да), которое является признаком альтернативной таблицы стилей, либо «no» (нет), означающее предпочитаемую таблицу стилей.

Инструкция обработки <?xsl:stylesheet?> добавляется в документ XML, а не в таблицу стилей, и указывает процессору XSLT, какую таблицу стилей применять к данному документу.

На практике <?xsl:stylesheet?> используется главным образом с браузерами, поскольку для отдельных процессоров таблица стилей, как правило, задается непосредственно — как, например, при использовании процессора XSLT Oracle:

C:planets>java oracle.xml.parser.v2.oraxsl planets.xml planets.xsi planets.html 

Возможно, вас это удивит, но <?xsl:stylesheet?> не является частью рекомендации XSLT. У этой инструкции обработки существует своя собственная рекомендация только для нее одной, которую можно найти по адресу www.w3c.org/TR/xml-stylesheet. Помимо прочего, это означает, что процессоры XSLT не обязаны поддерживать данную инструкцию обработки, и большинство отдельных процессоров не поддерживают ее.

Ниже приведен пример. В главе 1 мы рассмотрели файл planets.xml — хорошо сформированный документ XML, содержащий данные о трех планетах: Меркурии, Венере и Земле. Можно применить инструкцию обработки <?xml-stylesheet?> к planets.xml для задания используемой таблицы стилей XSLT. В инструкции следует установить тип атрибута в «text/xml» (W3C также позволяет «application/xml», a Internet Explorer требует «text/xsl») и атрибут href — в URI таблицы стилей XSLT, например planets.xsl:

Листинг 2.1. planets.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xml" href="planets.xsl"?>

<PLANETS>

 <PLANET>

  <NAME>Mercury</NAME>

  <MASS UNITS="(Earth = 1)">.0553</MASS>

  <DAY UNITS="days">58.65</DAY>

  <RADIUS UNITS="miles">1516</RADIUS>

  <DENSITY UNITS="(Earth = 1)">.983</DENSITY>

  <DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->

 </PLANET>

 <PLANET>

  <NAME>Venus</NAME>

  <MASS UNITS="(Earth = 1)">.815</MASS>

  <DAY UNITS="days">116.75</DAY>

  <RADIUS UNITS="miles">3716</RADIUS>

  <DENSITY UNITS="(Earth = 1)">.943</DENSITY>

  <DISTANCE UNITS="million miles">66.8</DISTANCE><!--B перигелии-->

 </PLANET>

 <PLANET>

  <NAME>Earth</NAME>

  <MASS UNITS="(Earth = 1)">1</MASS>

  <DAY UNITS="days">1</DAY>

  <RADIUS UNITS="miles">2107</RADIUS>

  <DENSITY UNITS="(Earth = 1)">1</DENSITY>

  <DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии-->

 </PLANET>

</PLANETS>

Вот как следует работать с элементом <?xml-stylesheet?>; теперь можно начинать писать саму таблицу стилей. Я сделаю это, создав файл planets.xsl.

Элемент <xsl:stylesheet>

Таблицы стилей XSL начинаются с объявления XML, так как они являются хорошо сформированными документами XML, — поэтому planets.xsl начинается с такого же объявления:

<?xml version="1.0"?>

.

.

.

Однако объявление XML немедленно исключается процессором XSLT, и мы не будем на нем останавливаться в нашем обсуждении XSLT. Первый только XSL-элемент таблицы стилей XSL — это элемент <xsl:stylesheet> (не путайте его с инструкцией обработки <?xml-stylesheet?> из XML документа). Встречались и возражения против такого названия элемента: обычно он используется в преобразованиях XSLT, поэтому W3C позволяет в то же время ссылаться на этот элемент как на <xsl:transform>.

Вот пример использования этого элемента:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 .

 .

 .

В следующем списке перечислены атрибуты элемента <xsl:stylesheet>:

• id (необязательный). Идентифицирует таблицу стилей. Устанавливается в имя XML;

• version (обязательный). Определяет версию XSLT, необходимую для работы с таблицей стилей. Сейчас это значение обычно равно «1.0». Хотя можно установить это значение и в «1.1»; так как XSLT 1.1 не выйдет из стадии рабочего проекта, это значение, вероятно, не будет «корректным» значением с точки зрения W3C;

• extension-element-prefixes (необязательный). Задает расширения в таблице стилей, используемые для идентификации элементов расширения. Принимает значение списка имен NCName, разделенных символами-разделителями;

• exclude-result-prefixes (необязательный). Задает пространства имен таблицы стилей, которые не будут копироваться в выходные данные (если только они явно не используются в выходном документе). Принимает значение списка имен NCName, разделенных символами-разделителями.

Содержимое этого элемента может содержать любой из следующих элементов XSL высокого уровня: <xsl:attribute-set>, <xsl:decimal-format>, <xsl:import>, <xsl:include>, <xsl:key>, <xsl:namespace-alias>, <xsl:output>, <xsl:param>, <xsl:preserve-space>, <xsl:strip-space>, <xsl:template> или <xsl:variable>. XSLT добавляет к списку <xsl:script>.

Заметьте, что атрибут id этого элемента можно использовать в том случае, когда требуется сослаться на определенную таблицу стилей (заметьте также, что в этом случае необходим процессор XSLT, который умеет читать объявления DTD или схемы XML).

Атрибут задания версии обязателен, в данный момент его можно установить в «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:stylesheet>, используют префикс пространства имен (namespace) xsl, который теперь, после стандартизации XSLT, всегда установлен в «http://www.w3.org/1999/XSL/Transform». Это пространство имен обычно устанавливается с атрибутом xmlns (это не атрибут XSL, а, скорее, атрибут любого элемента XML) в корневом элементе таблицы стилей, <xsl:stylesheet>:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 .

 .

 .

Таблицы стилей XSL используют свое собственное пространство имен, чтобы избежать конфликта с другими используемыми в таблице элементами. Например, вам может потребоваться указать, какая таблица стилей использовалась для преобразования документа; в таком случае вы можете создать свой собственный элемент <stylesheet> — это не создает проблемы, поскольку новый элемент не будет конфликтовать с элементом XSL <xsl:stylesheet>.

Перейти на страницу:

Стивен Холзнер читать все книги автора по порядку

Стивен Холзнер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


XSLT отзывы

Отзывы читателей о книге XSLT, автор: Стивен Холзнер. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*