2015-04-23 27 views
0

我目前正在努力提高代碼和我碰到這樣的:模板匹配和測試是否存在語法差異?

<xsl:template match="activator"> 
    <xsl:if test="not(ancestor::repeater)"> 
     Test1 
    </xsl:if> 
</xsl:template> 

,因爲如果不顯得必要我取代了它:

<xsl:template match="activator[not(ancestor::repeater)]"> 
    Test2 
</xsl:template> 

<?xml version="1.0" encoding="UTF-8"?> 
<repeater> 
    <activator> 
     <text> 
      <string>T_Auswahl</string> 
     </text> 
    </activator> 
</repeater> 
測試它

但它現在不匹配,我無法弄清楚我做錯了什麼。

+0

「*但它現在不匹配*」一個例子將是最有用的:http://stackoverflow.com/help/mcve –

+0

重新添加測試:它現在不匹配,因爲你沒有祖先不是「中繼器」的「激活器」節點。 –

回答

1

這不回答你的問題是問,但它可能是很重要的:

與謂語的模板,例如:

<xsl:template match="sigma[not(ancestor::alpha)]"> 

不匹配,做滿足謂詞節點,例如/root/beta/lambda/omega。如果您沒有其他模板匹配此類節點,則會將內置模板規則應用於這些模板規則 - 導致可能不希望將文本節點複製到輸出樹中。