XMLノードの内容をXSLTでの追加処理に渡す

XMLノードの内容をXSLTでの追加処理に渡す

人間が生成した長い XML ファイルがあり、その内容は Xpath を使用して識別できるほど規則性があります。これを HTML テーブルとして再フォーマットしようとしています。

ソース マテリアルは、視覚効果のためだけに技術的にテーブルとしてフォーマットされています (これ以上は説明しません)。問題なのは、各エントリの説明部分に任意のマークアップが含まれる可能性があり、それを追加処理のために渡す必要があることです。説明の内容を取得して適切に処理する方法がわかりません。

value-of または copy-of を使用しても、期待どおりの結果が得られません。おそらく、何か明らかなことを見逃しているのでしょう。

サンプルドキュメント:

<?xml version="1.0" encoding="UTF-8"?>
<manual>
    <body>
        <chapter>
            <table>
                <thead>
                    <row>
                        <entry>
                            <para>Some parameter name</para>
                        </entry>
                        <entry>
                            <para>1</para>
                        </entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry>
                            <para>Range</para>
                        </entry>
                        <entry>
                            <para>1–10</para>
                        </entry>
                    </row>
                    <row>
                        <entry>
                            <para>Description</para>
                        </entry>
                        <entry>
                            <para>Sets the type of process module.</para>
                            <para>There can be <emphasis>more arbitrary markup</emphasis> in here.</para>
                            <list>
                                <item>Even a list</item>
                            </list>
                        </entry>
                    </row>
                </tbody>
            </table>
            <!-- and so on -->
        </chapter>
    </body>
</manual>

私は次のXSLTスニペットのバリエーションを試してきました

        <xsl:for-each select="table"> 
        <tr>
            <!-- insert additional code here -->
            <td class="desc"> <xsl:value-of select="//tbody/row[2]/entry[2]/*"><xsl:apply-templates select="@*|node()" /></xsl:value-of> </td>
        </tr>
        </xsl:for-each> 

答え1

考えすぎでした。あるいは考えが足りなかったのかもしれません。

<td class="desc">
   <xsl:apply-templates select="tgroup/tbody/row[2]/entry[2]/*" />
</td>

関連情報