在我的 program.wxs 文件中,我有这样的东西。
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="CLASSES">
<Directory Id="dirAAAAA" Name="folderA">
<Directory Id="dirBBBBB" Name="folderB">
<Component Id="cmpCCCCC" Guid="MY-GUID">
<File Id="filDDDDD" KeyPath="yes" Source="SourceDir\en_myfile.xml" />
</Component>
</Directory>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="LANG_PACKS_EN_US_COMPONENTS">
<ComponentRef Id="cmpCCCCC" />
</ComponentGroup>
</Fragment>
</Wix>
我希望输出像
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="CLASSES">
<Directory Id="dirAAAAA" Name="folderA">
<Directory Id="dirBBBBB" Name="folderB">
<Component Id="en_cmpCCCCCC" Guid="MY-GUID">
<File Id="filDDDDD" KeyPath="yes" Source="SourceDir\en_myfile.xml" >
<CopyFile Id ="filDDDDD" DestinationProperty="dirBBBBB" DestinationName="myfile.xml/>
</File>
</Component>
</Directory>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="LANG_PACKS_EN_US_COMPONENTS">
<ComponentRef Id="en_cmpCCCCC" />
</ComponentGroup>
</Fragment>
</Wix>
现在我有这个 .XSLT
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="wix:Component/@Id">
<xsl:attribute name="{name()}">
<xsl:value-of select="concat('en_', .)" />
</xsl:attribute>
</xsl:template>
<xsl:template match="wix:ComponentRef/@Id">
<xsl:attribute name="{name()}">
<xsl:value-of select="concat('en_', .)" />
</xsl:attribute>
</xsl:template>
<xsl:template match="File">
<xsl:apply-templates select="@* | node()" />
<CopyFile Id="xxx" DestinationProperty="yyy" DestinationName="zzz"/>
</xsl:template>
我想添加从节点和节点<CopyFile>
获取值的节点<Directory>
<file Source>
你能帮我用 .XSLT 来改变这个 .wxs 吗?