2011-02-07 7 views
0

私は、自動生成されたXMLファイルのセットに基づいたWixインストーラを構築しています(私はHEATを使用してフォルダの内容を収穫します)。XSLを使用して子の属性に基づいて親要素を除外する方法は?

<Component Id="cmp87E809324190AF5E85315B10C397DB8F" 
      Directory="Content" 
      Guid="{4210C091-E16F-45EA-9005-A7487CF6AC69}"> 
    <File Id="fil13DABBB8A7FACF8E81FE69FD2464DE48" 
     Source="$(var.ProjectDir)\MyService.svc" /> 
</Component> 
<Component Id="cmp276C007DCB38D3C2E4DA41DFDD8F5CED" 
      Directory="Content" 
      Guid="{A01BE50E-3B00-40EF-96EB-D48AED1F6259}"> 
    <File Id="fil527A2DD913A88F35BD2B90F10029FB32" 
     Source="$(var.ProjectDir)\Web.config" /> 
</Component> 

私は次の変換適用されます:残念ながら

<!-- 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> 

を私はこの断片から、私は、ファイル「Web.configファイル」を除外する、例えば、結果のXMLから特定のファイルを除外する必要があります"File"要素(一致する要素)のみを削除するので、一致する "File"サブ要素の親要素( "Component")を削除します。これはXSLTでは比較的簡単でなければなりませんが、私はそれを理解していません。事前に

おかげであなたが使用する必要があります

答えて

2

:あなたがそれらを自分で追加できるように

<!-- exclude files --> 
<xsl:template match=" 
     Component[File/@Source='$(var.ProjectDir)\Web.config']"/> 

名前空間は、あなたのサンプルXMLに欠けています。

+0

ビンゴ!どうもありがとう。 –

+0

@Vagif、あなたは大歓迎です。 – Flack

+0

+1正解です。 –

関連する問題