我有一個屬性,我匹配。它將匹配2個XSL模板,但其中一個比另一個更具體。但是,除非我在樣式表中將'簡單'(謂詞不太具體)放在另一個之上,否則它將匹配更簡單的一個。從http://www.w3.org/TR/xslt/#conflict和其他問題我可以看出,如果它匹配2個模板,它將使用最具體的,然後如果它們相同,它將匹配樣式表中的最後一個。爲什麼XSL不符合此聲明?
模板1:
<xsl:template match="@audit[contains($tier,'tier_3')][((starts-with(.,'approve') and contains(.,'CM')) or (contains(.,'ReviewRequested') and not(contains(.,'CM') or contains(.,'BM') or contains(.,'ME'))))]" mode="action">
模板2:
<xsl:template match="@audit[contains($tier,'tier_3')]" mode="action">
是什麼規則,我不知道,是造成這種情況發生?
我更改匹配通過改變爲具有1組方括號代替2:
<xsl:template match="@audit[contains($tier,'tier_3') and ((starts-with(.,'approve') and contains(.,'CM')) or (contains(.,'ReviewRequested') and not(contains(.,'CM') or contains(.,'BM') or contains(.,'ME'))))]" mode="action">
但同樣的結果。
我知道這既因爲如果我註釋掉簡單的一個,它針對模板匹配1.
任何想法一致?
[XSL模板優先順序]的可能重複(http://stackoverflow.com/questions/5709581/xsl-template-precedence) – Ben 2012-07-16 10:15:22