使用表中的XSLT解析多行XML属性值时,换行符和空格会折叠

时间:2013-10-21 13:43:13

标签: xml xslt html-table

我正在尝试解析此XML

<ssa_admin_tablereports>
    <ssa_admin_tablereport_property name='ADM' value='&#10;Tables                  :0&#10;Partitions              : 0&#10;Files                   : 0&#10;Total size (Archive)    : 0&#10;Total size (Update)     : 0&#10;Total size (Arc/Upd)    : 0%/0%&#10;Total size              : 0&#10;Total rows              : 0&#10;Flat file size (Archive): 0&#10;Flat file size (Update) : 0&#10;Flat file size (Arc/Upd): 0%/0%&#10;Flat file size          : 0&#10;Compression ratio       : not defined&#10;'>
    </ssa_admin_tablereport_property>
    <ssa_admin_tablereport_property name='TORRENT' value='&#10;Tables                  : 53&#10;Partitions              : 97&#10;Files                   : 194&#10;Total size (Archive)    : 1980098&#10;Total size (Update)     : 586499&#10;Total size (Arc/Upd)    : 77% / 23%&#10;Total size              : 2566597&#10;Total rows              : 213404&#10;Flat file size (Archive): 9189418&#10;Flat file size (Update) : 6830067&#10;Flat file size (Arc/Upd): 57% / 43%&#10;Flat file size          : 16019485&#10;Compression ratio       : 84.0%&#10;'>
    </ssa_admin_tablereport_property>
</ssa_admin_tablereports>

用于此的XSLT是:

<pre><dd>
                    <table border="1">
                        <tbody>
                        <tr>
                            <th>Table Name</th>
                            <th>Table Report</th>
                        </tr>
                        <xsl:for-each select="ssa_admin_tablereports/ssa_admin_tablereport_property">
                            <tr>
                                <td valign="top"><xsl:value-of select="@name"/></td>
                                <td valign="top"><xsl:value-of select="@value"/></td>
                            </tr>
                        </xsl:for-each>             
                        </tbody>
                    </table>
</dd></pre>

但是当我使用浏览器打开XML文件时,值属性中的换行符和空格将被单个空格替换。那么我怎样才能以与XML相同的方式获得它?

1 个答案:

答案 0 :(得分:2)

HTML不允许在table内使用pre,但反过来应该没问题 - 尝试将pre放在td内:

<xsl:for-each select="ssa_admin_tablereports/ssa_admin_tablereport_property">
    <tr>
        <td valign="top"><xsl:value-of select="@name"/></td>
        <td valign="top"><pre><xsl:value-of select="@value"/></pre></td>
    </tr>
</xsl:for-each>