• NCName
. Буква или символ подчеркивания, за которым (не обязательно) следуют данные типа NCNameChars
. То есть это имя XML, не содержащее двоеточий (определение имен XML приводится в главе 1);
• QName
. Полностью определенное (qualified) имя. Оно формируется из префикса (должен принадлежать к типу NCName
), за которым следуют двоеточие и локальная часть (которая также должна быть типа NCName
);
• NameTest
. Имя (например, «book») или обобщенное имя с символами подстановки (как, например, «book*» или «*»).
Теперь можно начать создавать таблицы стилей XSLT. Первым элементом будет элемент для связывания таблиц стилей с документами XML <?xsl:stylesheet?>
.
Инструкция обработки <?xsl:stylesheet?>
Когда у нас есть таблица стилей 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
:
<?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 — это элемент