我尝试使用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>
答案 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(以及我删除的其他一些东西)。