XSLT删除了源代码的样式表

时间:2015-02-20 17:14:56

标签: xml xslt

我的XSLT工作正常,除了我无法删除(不复制,删除)源文件的<?xsl-stylesheet...元素/指令。这就是我对XSLT的所作所为:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
   <xsl:output method="xml" indent="yes"/>
   <xsl:template match="@* | node()">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="xsl:stylesheet"/>

   <xsl:template match="TestCase">
    ... remainder of file

我已尝试使用和不使用"?",在匹配属性中有"xsl:"部分,没有运气。 (所以,我已尝试将“匹配”设为"xsl:stylesheet""?xsl:stylesheet""stylesheet"。)xml源代码如下所示:

    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <?xml-stylesheet type="text/xsl" href="../../testUtil testLogToHtmlDisplay.xsl" ?>
    <TestSuite Name="APIC2EChartAddRoute">

TIA。

1 个答案:

答案 0 :(得分:8)

任何以<?开头的内容(除了<?xml version=...?>声明之外)都是处理指令,您可以将其与processing-instruction('name')模式匹配(针对特定情况) <?name ...?>)或仅processing-instruction()(对于任何PI,无论名称如何,都与使用*任何元素节点的方式相同):

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
   <xsl:output method="xml" indent="yes"/>
   <xsl:template match="@* | node()">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="processing-instruction('xml-stylesheet')"/>

   <xsl:template match="TestCase">
    ... remainder of file