2009-05-20 11 views

答えて

8

を返す必要があります。指定した新しい処理モード(以下のコードでは "all-but-a")であっても、組み込みルールは機能します:要素、(再帰的に)子を処理します。テキストノードの場合、コピーします。そのうちの1つ、つまり<a>の要素のルールをオーバーライドするだけで済みます。そのため、空のテンプレートルールが効果的にテキストを取り除きます。組み込みのテンプレート規則がどのように動作するかの詳細について

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="myNode"> 
    <!-- Process children --> 
    <xsl:apply-templates mode="all-but-a"/> 
    </xsl:template> 

      <!-- Don't process <a> elements --> 
      <xsl:template mode="all-but-a" match="a"/> 

</xsl:stylesheet> 

、私のウェブサイト上の"How XSLT Works"の「組み込みテンプレートルール」のセクションをご覧ください。

1
<xsl:for-each select="//*[text() and name() != 'a']"> 
<xsl:value-of select="."/> 
</xsl:for-each> 
+0

ありがとうございます! タグを除外できますか? – joe

+0

これはスキップしませんタグ – Blerta

+2

これは、アンカータグではないテキストを含むすべてのノードを選択します。彼はAタグになかったすべてのノードのTEXTを選択したかったのです。 – fearphage

3

現在ノードを処理している場合。

<xsl:value-of select="."/> 

は結果にコピーすることであるテキスト・ノードのための組み込みのテンプレートルールの使用を確認し、すべてのテキストコンテンツ

1

私は、これはあなたが探しているものであると信じて:

<xsl:for-each select="//text()[not(ancestor::a)]"> 
    <xsl:value-of select="."/> 
</xsl:for-each> 

それは、アンカータグの子ではないすべてのテキストノードを選択します。

関連する問題