xslt不会过滤掉pdb文件

时间:2016-07-05 21:18:42

标签: xslt wix

我尝试使用xslt文件在收集带有热量的文件时过滤掉pdb文件。但是pdb文件仍然存在。我错过了什么?这是文件:

<?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"                                
xmlns:wi="http://schemas.microsoft.com/wix/2006/wi">
<xsl:output method="xml" indent="yes"/>

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

<xsl:key name="pdf-search1"     match="wi:Component[contains(wi:File/@Source='$(var.StageDirXFire)', '.pdf')]" use="@Id"/>

<xsl:template match="wi:Component[key('pdf-search1', @Id)]"/>
<xsl:template match="wi:ComponentRef[key('pdf-search1', @Id)]"/>

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:4)

试试这个xslt

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
                xmlns="http://schemas.microsoft.com/wix/2006/wi"
                exclude-result-prefixes="xsl wix">

  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />

  <xsl:strip-space elements="*"/>

  <xsl:key name="PdbToRemove"
           match="wix:Component[contains(wix:File/@Source, '.pdb')]"
           use="@Id" />

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

  <xsl:template match="*[self::wix:Component or self::wix:ComponentRef]
                        [key('PdbToRemove', @Id)]" />
</xsl:stylesheet>

我对xslt并不是很了解,但我碰巧完成了我的一个安装程序项目所需的完全相同的事情。谷歌搜索了一段时间后,我最终得到了这个xslt(以及我删除的其他一些东西)。