<xsl:processing-instruction> 要素

出力内容に処理命令ノードを生成します。

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

属性

  • name
    必ず指定します。 処理命令の NCName。

要素情報

出現回数

無制限

親要素

xsl:attributexsl:commentxsl:copyxsl:elementxsl:fallbackxsl:for-eachxsl:ifxsl:messagexsl:otherwisexsl:param、xsl:processing-instruction、xsl:templatexsl:variablexsl:whenxsl:with-param、出力要素

子要素

xsl:apply-importsxsl:apply-templatesxsl:call-templatexsl:choosexsl:copyxsl:copy-ofxsl:fallbackxsl:for-eachxsl:ifxsl:messagexsl:numberxsl:textxsl:value-ofxsl: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>