传递 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>

相关内容