考虑这个目录,
<Directory Id="MyProgramDir" Name="DirName">
<Component Id="comp_MyProgramDir" Guid="FC0409CE-27E6-475E-B6C2-95E4B4C0223C" KeyPath="yes">
<Condition><![CDATA[MyCondition]]></Condition>
</Component>
</Directory>
我必须将MyCondition
应用于目录的所有子组件。由于它是一个包含许多文件的非常大的目录,有没有办法避免为每个组件写入条件? Transitive
属性根本没用!
答案 0 :(得分:0)
你可以试试这个:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
<xsl:output method="xml" indent="yes" cdata-section-elements="wix:Condition"/>
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="wix:Component">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<xsl:element name="Condition" namespace="http://schemas.microsoft.com/wix/2006/wi">
<xsl:attribute name="level">1</xsl:attribute>
<xsl:text>MyCondition</xsl:text>
</xsl:element>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
How to add condition to component during xsl transformation?