Элемент <xsl:processing-instruction>

Формирует узел инструкции по обработке в потоке вывода.

<xsl:processing-instruction
  name = "pi-name">
</xsl: processing-instruction>

Атрибуты

  • имя
    Обязательный. Имя NCName инструкции по обработке.

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, элементы вывода

Дочерние элементы

xsl:apply-imports, xsl:apply-templates, xsl:call-template, xsl:choose, xsl:copy, xsl:copy-of, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:text, xsl:value-of, xsl:variable

Заметки

Элемент <xsl:processing-instruction> формирует узел инструкции по обработке в потоке вывода. Атрибут name указывает на имя. Содержимое элемента предоставляет оставшуюся часть инструкции по обработке.

XML-декларация не является инструкцией по обработке и не должна формироваться путем настройки атрибутов в элементе <xsl:output>.

Пример

В следующем примере показан шаблон, формирующий XML-декларацию и инструкцию по обработке таблицы стилей в потоке вывода.

XML-файл (customers.xml)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="pi.xsl" ?>
<customers>
<customer>
   <name>James Smith</name>
   <address>123 Elm St.</address>
   <phone>(123) 456-7890</phone>
</customer>
<customer>
   <name>Amy Jones</name>
   <address>456 Oak Ave.</address>
   <phone>(156) 789-0123</phone>
</customer>
</customers>

XSLT-файл (pi.xsl)

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method='xml' version='1.0'/>
<xsl:template match="/">
  <xsl:processing-instruction name="xml-stylesheet">
  <xsl:text>type="text/xsl" href="style.xsl"</xsl:text>
  </xsl:processing-instruction>
  <xsl:apply-templates />
</xsl:template>

  <xsl:template match="@* | *">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template></xsl:stylesheet>

Попробуйте!

  1. Скопируйте вышеприведенный код и сохраните его в соответствующие файлы на локальном жестком диске.

  2. Запустите пример с помощью программы msxsl.exe (ее можно загрузить по адресу www.microsoft.com/downloads/) из командной строки, как показано далее.

    msxsl customers.xml pi.xsl -o new-cust.xml

Вывод

Результатом этого преобразования будет идентичный XML-файл с новой, вложенной в него таблицей стилей. Выходной файл (new-cust.xml) будет выглядеть следующим образом.

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

<?xml-stylesheet type="text/xsl" href="style.xsl" ?>

<customers>

<customer>

<name>James Smith</name>

<address>123 Elm St.</address>

<phone>(123) 456-7890</phone>

</customer>

<customer>

<name>Amy Jones</name>

<address>456 Oak Ave.</address>

<phone>(156) 789-0123</phone>

</customer>

</customers>