我有以下从WiX收获中输出的.wxs(Ids ommitted)片段。
<Directory Id="" Name="tr">
<Component Id="" Guid="*">
<File Id="" KeyPath="yes" Source="$(var.SourceDir)\tr\ZedGraph.resources.dll" />
</Component>
</Directory>
<Directory Id="" Name="zh-cn">
<Component Id="" Guid="*">
<File Id="" KeyPath="yes" Source="$(var.SourceDir)\zh-cn\ZedGraph.resources.dll" />
</Component>
</Directory>
<Directory Id="" Name="zh-tw">
<Component Id="" Guid="*">
<File Id="" KeyPath="yes" Source="$(var.SourceDir)\zh-tw\ZedGraph.resources.dll" />
</Component>
</Directory>
</DirectoryRef>
以下转换将删除组件但保留空目录元素。我怎样才能删除它们?鉴于我不想删除所有目录元素。理想情况下,我希望根据包含从搜索返回的组件ID来匹配它们。
<xsl:key name="zedResource-search" match="wix:Component[contains(wix:File/@Source, 'ZedGraph.resources.dll')]" use="@Id" />
<xsl:template match="wix:Component[key('zedResource-search', @Id)]" />
<xsl:template match="wix:ComponentRef[key('zedResource-search', @Id)]" />
This question是类似的,但使用目录名称,我希望避免添加搜索其中的每一个,因为有很多语言变体。
答案 0 :(得分:1)
执行此操作的一种方法是使用单独的模板来匹配$response = $mySforceConnection->create(array($record),'Account');
元素,其中所有子Directory
元素都在键中。您使用Component
count
或者,您可以说要删除 <xsl:template match="wix:Directory[count(wix:Component)
= count(wix:Component[key('zedResource-search', @Id)])]" />
没有Directory
引用但不在密钥中的Component
(所以,双重否定)
<xsl:template match="wix:Directory[not(wix:Component[not(key('zedResource-search', @Id))])]" />