为什么这个简单的代码不会验证?

时间:2010-06-25 08:33:13

标签: validation xhtml mobile

我在下面有一些非常简单的代码,我无法在http://validator.w3.org/check上进行验证,这些错误对我来说毫无意义。我在这里难过,任何人都可以看到/理解这个问题吗?

代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <title>Test Mobile Site</title> 
        <link href="/css/site.css" rel="stylesheet" type="text/css" media="handheld" /> 
    </head> 
    <body> 
        <div id="test">Why won't you validate for me? :(</div>
    </body> 
</html>

错误:

  

错误:第18行,第46列:输入不正确UTF-8,表示编码!字节:0x92 0x53 0x20 0x52

     

错误:第69行,第17列:条件部分INCLUDE或期望的IGNORE关键字

     

错误:第73行,第39栏:xmlParseElementDecl:'EMPTY','ANY'或''('预期

     

错误:第73行,第39列:外部子集中的内容错误

2 个答案:

答案 0 :(得分:1)

这是我第二次尝试解决这个问题,经过充分的挖掘后,我发现在2008年7月,W3C推出了xHTML Basic 1.1,它现在取代了开放移动联盟的xHTML Mobile Profile 1.2。

故事的道德:您可以在网络上的移动示例中找到使用MP 1.2 DTD的负载,但您需要使用:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

如果您想要正确验证。希望这有助于别人不要浪费我的时间!

<强>参考: http://en.wikipedia.org/wiki/XHTML#XHTML_Basic_and_XHTML-MP

答案 1 :(得分:1)

是的,XHTML Mobile Profile DTD是假的。您永远不会使用它验证任何文档。

问题出在http://www.openmobilealliance.org/tech/DTD/xhtmlmp12-form-1.mod,这是OMA更改为添加一个属性inputmode的XHTML Forms模块的一个版本。他们设法通过将这个评论用MS Word中的智能引用粘贴到模块中来搞乱这一点:

NO REPRESENTATIONS OR WARRANTIES (WHETHER EXPRESS OR IMPLIED) ARE
MADE BY THE OPEN MOBILE ALLIANCE OR ANY OPEN MOBILE ALLIANCE MEMBER
OR ITS AFFILIATES REGARDING ANY OF THE IPR’S REPRESENTED ON THE OMA

并将其保存为cp1252,而不是XML实体UTF-8的默认编码。这导致关于无效的UTF-8序列的准确错误,这似乎使验证器混淆为无法正确解析以下实体声明。

(这种编码错误本身是由基本的语法错误,食品杂货商的撇号引发的,这是双重可笑的。但是,既然OMA是给我们带来WAP惨败的笑话,那么可能会出现这种程度的无能。)