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