一致する属性があります。これは 2 つの XSL テンプレートに一致しますが、一方が他方よりも具体的です。ただし、スタイルシートで「より単純な」(述語はあまり具体的ではありません)を上下に配置しない限り、単純なものと一致します。http://www.w3.org/TR/xslt/#conflictおよびその他の質問から、2 つのテンプレートに一致する場合は最も具体的なテンプレートを使用し、それらが同じ場合は最後のテンプレートに一致することがわかりますスタイルシート。
テンプレート 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">
これが発生する原因となっていることに気付いていないルールは何ですか?
次のように変更して、2 組ではなく 1 組の角かっこを持つように一致を変更します。
<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 と一致するため、両方に一致することがわかります。
何か案は?