3

テンプレートマッチの実装と条件

       <xsl:template match="a[!(img)and(not(@id))]">

そのようなテンプレートを書きたい

       a tag should not have attribute id and should not be followed by img tag.

しかし、その表示エラー。誰でも助けることができますか

4

2 に答える 2

8

兄弟ではなく子を参照すると仮定すると、サポートされていない演算子の代わりにfollowed by img tag、関数の使用を統合するだけで済みます。not()!

<xsl:template match="a[not(img) and not(@id)]">
    <!-- ... -->
</xsl:template>
于 2012-07-04T06:10:50.173 に答える
2

まず、エラーはおそらく!(img)を実行したことが原因であり、これは無効です。あってはならない(img)

ただし、XSLT では、img要素がa要素の子であるかどうかを確認しています。代わりに、次の兄弟軸を実際に作成する必要があります。

<xsl:template match="a[not(following-sibling::*[1][self::img]) and not(@id)]"> 

したがって、following-sibling::*[1]はa要素の最初の次の兄弟に一致し、[self::img]はそれがimgタグであるかどうかをチェックします。

a[not(following-sibling::*[self::img])だけを実行すると、 a要素の直後の兄弟だけでなく、後続の兄弟が検索されることに注意してください。

于 2012-07-04T06:31:03.570 に答える