xslt 1.0到HTML表空间问题

时间:2011-02-18 19:54:22

标签: html xslt

所有

我正在尝试在HTML表格的列中放置空格/缩进文本。我正在使用XSLT 1.0读取XML文件并将其写入HTML文件。我尝试过以下方法:

<?xml version='1.0' encoding='utf-16'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="utf-16"/>

<tr>
  <td/>
  <td>
    <xsl:text xml:space="preserve">&#160;</xsl:text>
    <xsl:value-of select="concat('Substantiation-', 
                    @sourceID, ' (', current(), ')')"/>
  </td>
</tr>

在Internet Explorer中查看(从生成的html文件打开)时的结果如下所示:

 Substantiation-9010 (p 1-5, Para 1-10.)

我还试过&#x9;&#x20;&#xa0;它有相似或没有结果。

我假设我有编码问题(感谢Michael Kay指出这一点),但是我不确定我做错了什么,因为我在输出标签中指定了编码。有没有人知道如何添加空格/标签,以便在IE浏览器中看起来正确?

感谢您的帮助!!!

4 个答案:

答案 0 :(得分:5)

插入&#160;字符是添加不间断空格的正确方法。但由于某种编码问题,它显示不正确 - 您正在生成UTF-8文档,但Internet Explorer认为它是iso 8859-1(或MS CP1252)。 IE获取编码错误的原因是无数(并且超出我的理解范围),但您还没有开始向我们提供诊断它们所需的信息(我们甚至不知道这种转换是服务器端还是客户端)

(当然,其他响应者是正确的,可能有更好的方法来实现所需的布局而不是使用NBSP字符。但如果你有编码问题,它也会影响其他字符,所以你不应该让它恶化。)

答案 1 :(得分:0)

您可以使用CSS来解决此问题:

<tr>
  <td/>
  <td>
      <span style="white-space:pre;">&#9;<xsl:value-of select="concat('Substantiation-',@sourceID, ' (', current(), ')')"/></span>
  </td>
</tr>

答案 2 :(得分:0)

&nbsp;是不间断的空格特殊HTML字符。给那个旋转。或者,尝试使用CSS在表格单元格中创建填充。或者,如果您要创建列表,请尝试使用<ol><ul>

答案 3 :(得分:0)

我无法正确显示空格。从我读到的内容中提出的所有建议都应该有效。但是,这不适合我。我最终使用了透明背景的图像。

 <img src="OnePixel.gif" width="15" height="5" align="left"/>