2011-02-18 60 views
0

所有,XSLT 1.0到HTML表格間距問題

我試圖把空間/在我的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> 

結果(從生成的HTML文件打開),在Internet Explorer中查看時的樣子:

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

我也tryed &#x9;&#x20;&#xa0;有相似或沒有結果。

我假設我有一個編碼問題(感謝邁克爾凱指出),但我不知道我做錯了,因爲我在輸出標記中指定編碼。有誰知道如何添加空格/選項卡,以便在IE中查看時看起來正確?

謝謝你的幫助!

+2

'xsl:text'指令不需要'@xml:space =「preserve」'。這與XSLT無關。實際上,該轉換正確添加了#x9,#x20和#xA字符引用。 **瀏覽器正確地標準化他們**。 – 2011-02-18 22:14:31

+0

謝謝亞歷杭德羅。我已經刪除它。 – Billy

回答

0

我無法讓空間正確顯示。從我閱讀的內容中提出的一切都應該起作用。但是,這不適合我。我結束了使用透明背景的圖像。

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

您可以使用CSS來解決這個問題:

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

似乎無法正常工作......內部沒有空間。我應該包含的文件頂部是否有標籤? – Billy

0

&nbsp;是非打破空間的特殊HTML字符。給那個旋轉。或者,嘗試使用CSS在Table Cell中創建填充。更有甚者,如果您正在創建列表,請嘗試使用<ol><ul>

+0

 和 表示相同的字符。 – jasso

5

插入&#160;字符是添加非破壞空間的正確方法。但由於某種編碼問題,它顯示不正確 - 您正在生成一個UTF-8文檔,但Internet Explorer認爲它是iso 8859-1(或MS CP1252)。 IE獲得編碼錯誤的原因是無數的(並且超出了我的理解),但是您還沒有開始給我們提供診斷它們所需的信息(我們甚至不知道這種轉換是服務器端還是客戶端) 。 (當然,其他響應者是正確的,可能有更好的方法來實現所需的佈局比使用NBSP字符,但如果你有編碼問題,它也會影響其他字符,所以你不應該'不要讓它變得潰爛。)

+1

+1這是一個字符集問題。首先檢查該HTML文檔的「」元素和HTTP標頭。 – jasso

+0

謝謝Michael,我的文檔中沒有編碼標籤。但是,添加它並沒有幫助。我編輯了我的帖子以提供更多信息。希望我添加的內容將有助於澄清我正在嘗試做的事情。 – Billy