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