Чтение онлайн

ЖАНРЫ

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

Шрифт:

<TITLE>

Planets

</TITLE>

</HEAD>

<BODY>

<xsl:apply-templates select="PLANET"/>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

<xsl:comment>This was the <xsl:value-of select="NAME"/> element</xsl:comment>

 </xsl:template>

</xsl:stylesheet>

Вот

результат:

<HTML>

 <HEAD>

<TITLE>

Planets

</TITLE>

 </HEAD>

 <BODY>

<!--This was the Mercury element-->

<!--This was the Venus element-->

<!--This was the Earth element-->

 </BODY>

</HTML>

Элемент <xsl:processing-instruction>: создание инструкций обработки

При помощи элемента

<xsl:processing-instruction>
можно создавать новые инструкции обработки. У этого элемента один атрибут:

• 

name
(обязательный). Задает имя инструкции обработки. Принимает значение шаблона значений атрибута, возвращающего NCName.

В следующем примере я удалил инструкцию

<?xml-stylesheet?>
из начала
planets.xml
:

<?xml version="1.0"?>

<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>

 .

 .

 .

Для того чтобы снова добавить эту инструкцию обработки, можно применить элемент

<xsl:processing-instruction>
(листинг 6.9). Пункты
type
и
href
в инструкции обработки, например
<?xml-stylesheettype="text/xml" href="#"?>
,
в действительности не являются атрибутами, поэтому их значения нужно устанавливать не при помощи
<xsl:attribute>
, а используя простой текст.

Листинг 6.9. Применение <xsl:processing-instruction>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="/">

<xsl:processing-instruction name="xml-stylesheet">

<xsl:text>type="text/xml" href="#"</xsl:text>

</xsl:processing-instruction>

<xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="@*|node">

<xsl:copy>

<xsl:apply-templates select="@*|node"/>

</xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Вот результат, где инструкция обработки

<?xml-stylesheet?>
снова на месте:

<?xml version="1.0" encoding="UTF-8?>

<?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><!--At perihelion-->

 </PLANET>

 .

 .

 .

Элемент <xsl:document>: создание нескольких выходных документов

В рабочем проекте XSLT 1.1 был представлен новым элемент,

<xsl:document>
, предназначенный для поддержки нескольких выходных документов, — и, скорее всего, этот элемент будет добавлен в XSLT 2.0. Он имеет следующие атрибуты:

Поделиться с друзьями: