0

XSLT を使用して CDATA タグをレンダリングするにはどうすればよいですか?

xslt では、テキストを使用して CDATA タグを作成したり、cdata-section-elements を使用して xml 出力タグで宣言したりしたくありません。以下に示すように、要素の値が CDATA の周りにある場合、xslt は同じものをレンダリングする必要があります。入力から動的に読み取る必要があります。

入力:

<A><![CDATA[Hello World]]></A>

XSLT 出力:

<A><![CDATA[Hello World]]></A>
4

1 に答える 1

4

XSLT/XPath/XQuery が操作するデータ モデルは CDATA セクションを認識しないため、操作するツリーにはどちらの場合もテキスト ノードが含まれているだけなので単純に保存することはできません (つまり、for<foo>a &amp; b</foo><foo><![CDATA[a & b]]></foo>ツリーはfoo単一の要素を含む要素です)。文字列値を持つテキスト子ノードa & b)。

そのため、入力を前処理して CDATA セクションを XSLT データ モデルで検出および区別できる要素のような構造に変換しない限り、純粋な XSLT で目的を達成する方法はありません。Andrew Welch には、Java 環境でこれを行うためのhttp://andrewjwelch.com/lexev/があります。

したがって、Java で Saxon 9 のような XSLT 2.0 プロセッサを使用する場合は、そのアプローチを使用できます。

于 2013-09-16T10:04:39.667 に答える