Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 如何基于子元素排除父元素';使用XSL的属性?_Xslt_Wix - Fatal编程技术网

Xslt 如何基于子元素排除父元素';使用XSL的属性?

Xslt 如何基于子元素排除父元素';使用XSL的属性?,xslt,wix,Xslt,Wix,我正在构建一个Wix安装程序,它基于一组自动生成的XML文件(我使用HEAT来获取文件夹内容)。我需要从生成的XML中排除某些文件,例如,从这个片段中,我要排除一个文件“Web.config”: 我将应用以下转换: <!-- Identity template --> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@*

我正在构建一个Wix安装程序,它基于一组自动生成的XML文件(我使用HEAT来获取文件夹内容)。我需要从生成的XML中排除某些文件,例如,从这个片段中,我要排除一个文件“Web.config”:


我将应用以下转换:

  <!-- 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']"/>