=> Главная База Знаний Xslt Элемент <xsl:processing-instruction>: создание инструкций обработки


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

Элемент <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="/planets.xsl"?>
, в действительности не являются атрибутами, поэтому их значения нужно устанавливать не при помощи
<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="/planets.xsl"</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.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><!--At perihelion-->

 </PLANET>

 .

 .

 .