要素 x があり、その要素に別の要素 y が含まれていない場合に何かをしたいとします。
<xsl:for-each select="//x">
<xs:if test="expression to check does not contain y">
</xs:if>
</xsl:for-each>
より良い使用:
<xsl:apply-templates select = "//x[not(y)]"/>
x
これにより、要素を子として持たないすべての要素にテンプレートが適用されますy
。
このようにして、実行用に選択された一致するテンプレート内に条件付きロジックを指定しません。
「含む」とは、「(子だけでなく)子孫を持つ」ことを意味する場合、上記は次のように指定する必要があります。
<xsl:apply-templates select = "//x[not(descendant::y)]"/>
not(y)
要素に直接の子要素 y がないかどうかをテストします。