Xslt 如何基于子元素排除父元素';使用XSL的属性?
我正在构建一个Wix安装程序,它基于一组自动生成的XML文件(我使用HEAT来获取文件夹内容)。我需要从生成的XML中排除某些文件,例如,从这个片段中,我要排除一个文件“Web.config”:Xslt 如何基于子元素排除父元素';使用XSL的属性?,xslt,wix,Xslt,Wix,我正在构建一个Wix安装程序,它基于一组自动生成的XML文件(我使用HEAT来获取文件夹内容)。我需要从生成的XML中排除某些文件,例如,从这个片段中,我要排除一个文件“Web.config”: 我将应用以下转换: <!-- Identity template --> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@*
我将应用以下转换:
<!-- Identity template -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<!-- exclude files -->
<xsl:template match="wix:Component/wix:File[
@Source='$(var.ProjectDir)\Web.config'
]">
</xsl:template>
不幸的是,它只删除了“File”元素(它匹配的元素),我想删除匹配的“File”子元素的父元素(“组件”)。这在XSLT中一定相对容易,但我还没有弄明白
提前感谢您应该使用:
<!-- exclude files -->
<xsl:template match="
Component[File/@Source='$(var.ProjectDir)\Web.config']"/>
示例XML中缺少名称空间,因此您可以自己添加它们
<!-- exclude files -->
<xsl:template match="
Component[File/@Source='$(var.ProjectDir)\Web.config']"/>