Шрифт:
Возможно, вас это удивит, но
<?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>
<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
, разделенных символами-разделителями;