以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  是我的DOCTYPE声明有问题,还是FF浏览器的毛病?背景怎么没了?@_@  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=49686)


--  作者:JiangCat
--  发布时间:7/11/2007 9:51:00 AM

--  是我的DOCTYPE声明有问题,还是FF浏览器的毛病?背景怎么没了?@_@
最近在学习XSL,发现个问题找不到解决方法。问题很简单,就是给body加上一个style,background-color。可是就这么点事儿死活解决不了。设置的背景色在IE和Opera中都可以正常显示,在FF 2.0.0.4就不显示。

代码如下

a.xml
以下内容为程序代码:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="a.xsl" ?>
<PAGEDATA />

a.xsl
以下内容为程序代码:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xhtml">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />

<xsl:template match="/">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body style="background-color:#000000;">
<span style="color:#CC0000;">TESTTEST</span>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

要做到同样的效果,用纯粹的xHTML 1.1规范就没问题,代码如下:
a.html
以下内容为程序代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body style="background-color:#000000;">
<span style="color:#CC0000;">TESTTEST</span>
</body>
</html>

内容既然是一样的,不知道为什么xhtml可以而xsl不可以,除非doctype声明出错或者namespace有错,要么就是FF本身的bug,否则我实在不知道为什么了。

哪位大虾帮忙解释一下?@_@


--  作者:火鸟
--  发布时间:7/11/2007 10:33:00 AM

--  
你有没有看过生成的xhtml?
--  作者:Starling
--  发布时间:7/11/2007 10:58:00 AM

--  
提示一下,FF 中 body 也是需要设置高度的,默认的是 width:100% height:auto,也就是说,如果LZ用一个白板来测试背景的话,是肯定没背景的。如果是别的什么问题,请把代码贴出来吧,我们一起研究研究~~
--  作者:JiangCat
--  发布时间:7/14/2007 1:57:00 PM

--  
感谢楼上两位的回答,这两天出差了,没办法上网,请见谅。

用FF在这个页面中没办法Ctrl+A全选,也没办法看整页生成后的xHTML代码,很奇怪。这个问题在普通的xHTML页面下不存在的。

我也试着给body加上了width:100%; height:auto属性,结果还是白色背景。@_@


--  作者:火鸟
--  发布时间:7/14/2007 4:06:00 PM

--  
你利用一个xslt解析器象Saxon或者MSXML生成xhtml再分析一下这个文件有没有错。


[此贴子已经被作者于2007-7-14 17:31:47编辑过]

--  作者:火鸟
--  发布时间:7/15/2007 12:32:00 PM

--  
周一我把我用saxon解析的结果贴上来给你看看也许你就知道那里错了。
--  作者:JiangCat
--  发布时间:7/16/2007 9:13:00 AM

--  
以下是引用火鸟在2007-7-15 12:32:00的发言:
周一我把我用saxon解析的结果贴上来给你看看也许你就知道那里错了。

我看了一下Saxon,好像只有高级的商业版才有XSL validator,basic版本没有哦。@_@


--  作者:火鸟
--  发布时间:7/16/2007 9:18:00 AM

--  
这是解析生成的xhtml好像没什么错误。
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
   </head>
   <body style="background-color:#000000;"><span style="color:#CC0000;">TESTTEST</span></body>
</html>
--  作者:JiangCat
--  发布时间:7/16/2007 10:36:00 AM

--  
对呀,把那段解析后的代码直接粘贴到一个文本文件里,改为a.html,用FF看就完全没问题,可是XSL就有问题。@_@

难道是……FF的BUG?


--  作者:火鸟
--  发布时间:7/16/2007 10:43:00 AM

--  
可能是FF用的xslt解析器的问题,你试试<body bgcolor="#000000">
--  作者:JiangCat
--  发布时间:7/16/2007 11:03:00 AM

--  
试过,bgcolor在XSL下也无效,何况xHTML1.1规范里已经没有这个tag了。= =#
--  作者:火鸟
--  发布时间:7/16/2007 11:34:00 AM

--  
在http://validator.w3.org上验证生成的xhtml没有通过,报如下错误:
This page is not Valid XHTML 1.0 Transitional!
Below are the results of checking this document for XML well-formedness and validity.

Error Line 6 column 9: end tag for "head" which is not finished.
   </head>
Most likely, You nested tags and closed them in the wrong order. For example <p><em>...</p> is not acceptable, as <em> must be closed before <p>. Acceptable nesting is: <p><em>...</em></p>

Another possibility is that you used an element which requires a child element that you did not include. Hence the parent element is "not finished", not complete. For instance, <head> generally requires a <title>, lists (ul, ol, dl) require


--  作者:JiangCat
--  发布时间:7/16/2007 12:19:00 PM

--  
   <head>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
   </head>


head标签已经被正常关闭了啊?怎么会说没关闭?
--  作者:火鸟
--  发布时间:7/16/2007 12:54:00 PM

--  
你可以访问那个网址,自己试试。
--  作者:JiangCat
--  发布时间:7/16/2007 3:52:00 PM

--  
我知道那个validator,我也用过。不过这次不知道为什么会出错,明明没错的呀?@_@
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
95.703ms