XSLTは、さらなる処理のためにXMLノードの内容を渡します。

XSLTは、さらなる処理のためにXMLノードの内容を渡します。

私はXpathを使用してコンテンツを識別するのに十分な規則性を持つ人が生成した長いXMLファイルを持っています。 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>

おすすめ記事