對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】搜索,改變你我生活:)