我有一個試圖抓住特定文件節點的父節點的XPath查詢。當我在Xselerator中使用XPath評估器時,查詢結果很好,但是當我將它放入我的XSLT代碼中時,它給了我適合。這裏是我的XSLT代碼:爲什麼XSLT不像我的XPath查詢?
<xsl:template match="//*[local-name()='Wix']/*[local-name()='Fragment'][1]/*[local-name()='DirectoryRef']/*[local-name()='Directory'][./@*[local-name()='Name'][.='bin']]/*[local-name()='Component']/*[local-name()='File'][./@*[local-name()='Source'][.='!(wix.SourceDeployDir)\bin\Client.exe']]/..">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
<xsl:element name="RemoveFolder" namespace="{namespace-uri()}">
<xsl:attribute name="Id">DeleteShortcutFolder</xsl:attribute>
<xsl:attribute name="Directory">DesktopFolder</xsl:attribute>
<xsl:attribute name="On">uninstall</xsl:attribute>
</xsl:element>
</xsl:copy>
任何想法?
編輯:下面是有關XML(從大文件清理):
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="INSTALLLOCATION">
<Directory Id="dirBD8892FBCC64DA5924D7F747259B8B87" Name="bin">
<Component Id="cmp92DC8F5323DA73C053179076052F92FF" Guid="{533500C1-ACB2-4A8D-866C-7CDB1DE75524}">
<File Id="fil7C1FC50442FC92D227AD1EDC1E6D259F" KeyPath="yes" Source="!(wix.SourceDeployDir)\bin\Client.exe">
<Shortcut Id="startmenuAdv" Directory="DesktopFolder" Advertise="yes" Name="!(wix.ProductName)" WorkingDirectory="INSTALLDIR" Icon="Icon.exe">
<Icon Id="Icon.exe" SourceFile="!(wix.SourceDeployDir)\Safeguard.SPI2.Client.exe" />
</Shortcut>
<netfx:NativeImage Id="ClientNativeImageId" Platform="64bit" Priority="0" AppBaseDirectory="INSTALLLOCATION" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension" />
</File>
</Component></Directory></DirectoryRef></Fragment></Wix>
所有我希望能夠做的就是搶的組件節點。 Visual Studio給了我以下錯誤:只有'子'和'屬性'軸被允許在謂語外的模式中。 ...在\ Client.exe']]/- > .. < -
如果沒有輸入XML的示例,則無法判斷。 – Oded