Xml

傳遞 XML 節點的內容以在 XSLT 中進行額外處理

  • June 14, 2019

我有一個很長的人工生成的 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> 

我想多了。或者可能是考慮不足。

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

引用自:https://unix.stackexchange.com/questions/523636