我正在嘗試在收穫目錄期間應用的xsl轉換期間在wix中添加組件條件。我試過這個模板,但它不工作。如何在xsl轉換過程中向組件添加條件?
<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:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<xsl:output method="xml" indent="yes" />
<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()"/>
<Condition Level="1"><![CDATA[MYPROP="1"]]></Condition>
</xsl:copy>
</xsl:template>
雖然輸入heat.exe將目錄位置和XML生成將由熱與改造一起做我認爲,作爲輸入將中間XML
輸入
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="MyDir">
<Component Id="CefSharp.BrowserSubprocess.Core.dll_x86" Guid="06CF68DB-C4D3-45D3-8619-982C7963ADC6">
<File Id="CefSharp.BrowserSubprocess.Core.dll_x86" KeyPath="yes" Source="$(var.CefSharpDirx86)\CefSharp.BrowserSubprocess.Core.dll" />
</Component>
</DirectoryRef>
</Fragment>
</Wix>
輸出
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="MyDir">
<Component Id="CefSharp.BrowserSubprocess.Core.dll_x86" Guid="06CF68DB-C4D3-45D3-8619-982C7963ADC6">
<File Id="CefSharp.BrowserSubprocess.Core.dll_x86" KeyPath="yes" Source="$(var.CefSharpDirx86)\CefSharp.BrowserSubprocess.Core.dll" />
<Condition Level="1"><![CDATA[MYPROP="1"]]></Condition>
</Component>
</DirectoryRef>
</Fragment>
</Wix>
我是新來的XSLT世界。請建議。
請告訴我們的輸入示例和預期輸出 - 請參閱:[mcve]。 –
@ michael.hor257k:添加了輸入和期望輸出的示例 – Sameer
您的輸入不在'wix:'命名空間中,因此您的模板不匹配任何內容。 –