Книга: XSLT

Элемент : создание инструкций обработки

Элемент <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>
 .
 .
 .

Оглавление книги


Генерация: 1.049. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз