終於解決body元素居中問題(xslt+xml->html,終極解決方案)

對html不熟,所以整個過程比較複雜,目的是將一個寬800的div居中顯示,但html是xslt+xml產生的。

【1】設置屬性

開始對body屬性各種設置,IE和FF都很好,但VC裏的CHtmlView控件顯示不能居中。(表現上看,貌似使用的是IE6引擎,以前碰到都是去修改網頁和腳本,沒試過用程序設置)。

後來查到是自己理解錯了,不是對body設置,body就是瀏覽器寬度,應該對div設置。div樣式中加上如下(或相同效果的)代碼:

#mainframe
{
    width:800px;
    margin:0 auto;
} 
但是,不能居中,左對齊。不同的帖子和回覆,相同的代碼,讓我堅信不是這兩行代碼的問題。

【2】html開頭

查到了HTML開頭需要如下一句(w3c有具體解釋),否則開始查到的居中設置不能應用,也就是寫對了但無效,被忽略了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
【3】如何用xslt生成

手工寫不行,

放到<![CDATA[]],有網友反映不行,

有的說放到xml裏,然後xsl:value-of,未嘗試

有的在xslt裏寫了一個固定的模板,html之前先輸出,我也沒嘗試,但這種方法最接近了

http://bbs.blueidea.com/thread-2167695-1-1.html

<?xml version="1.0" encoding="GB2312" ?>
<!--作者:八神奄-->
<?xml-stylesheet type="text/xsl" href="Test.xslt"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">                
        
        <xsl:output method="html" encoding="gb2312"/>
        <xsl:template match="/">
                <xsl:value-of select="document('')/*/xsl:template[@name='DOCTYPE']/node()" disable-output-escaping="yes"/>
        </xsl:template>

        <xsl:template name="DOCTYPE">
                <![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
        </xsl:template>

</xsl:stylesheet>
最終解決方法,使用xsl:output標籤及其屬性:

http://bbs.xml.org.cn/dispbbs.asp?boardID=8&ID=63717

	<xsl:output method="html" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
【4】搜索,改變你我生活:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章