私はdocbookを使用しています。テーブルエントリにゼロ幅の文字を挿入するテンプレートを使用しています。どちらが良いですが、テーブルエントリに<para>
要素が含まれている場合、NOTが適用されている必要があります。だから、<para>
を含まないすべての<entry>
にテンプレートを適用する方法はありますか?XSLT:特定のサブノードを含まないノードにテンプレートを適用する
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook">
<xsl:import href="urn:docbkx:stylesheet"/>
...
<xsl:template match="text()[parent::d:entry]">
<xsl:call-template name="intersperse-with-zero-spaces">
<xsl:with-param name="str" select="."/>
</xsl:call-template>
</xsl:template>
...
これは正しいです。しかし、フォワードとバックワード軸の最後の渋滞...なぜ、d:entry [not(d:para)]/text() 'ではないのですか? –
Alejandro、 'd:entry [not(d:para)]/text()'は 'text()[parent :: d:entry [not(d:para)]よりも簡単です。 ]と私はおそらく私が自分自身で始めるときにそれを書くだろう。しかし、私は最初の記事で 'text()[parent :: d:entry]'を使い始めることにしました。それが私のやり方です。あなたがまだ読んでいるのであれば、 'match =" d:entry [not(d:para)]/text() "'の代わりに '' parent = d:entry [ (d:パラ)]] "" –