XHTML严格解决了什么问题?

时间:2008-11-10 18:36:06

标签: html xhtml project-planning xhtml-1.0-strict buzzword-compliance

我真的不明白XHTML严格的魅力。内联JavaScript通常需要一个大鼠的逃逸巢,使其与XHTML兼容,并且半向后兼容MSIE 5& 6.然后就是用户输入不足以成为OCD的问题,以确保你不会错过任何非法字符。它似乎比它的价值更多的努力。没关系,几乎每个我一直工作的开发人员都忘记确保从服务器返回的内容类型被重置为XHTML页面从text / html重置为application / xhtml + xml。

希望我知道博主的名字,但其他人指出,大多数所谓的符合XHTML标准的网站和开源软件包实际上都不是因为上一期,忘记正确设置内容类型标题。

我希望了解为什么XHTML很有用,或者构建足够多的参数来阻止它在我影响的未来项目中被使用。

13 个答案:

答案 0 :(得分:23)

XHTML1与HTML4和严格与过渡是完全正交的问题。

XML可能不会给今天的浏览器带来任何巨大的优势,但是在服务器端,使用XML处理文档比使用旧的学校SGML(除了不是真正的HTML4)解决这个问题要容易一个数量级。

限制自己使用[X] HTML Strict本身并没有实现任何目标,只是它不鼓励使用你不应该使用的旧的,不易维护的技术。

  

内联javascript通常需要一个大鼠的逃逸巢,以使其与XHTML

兼容

只要你不使用字符<

你就可以逃脱。或者&amp ;.并且'//< [CDATA ['并不比'< ! - '过去是。

无论如何,保持外部脚本更易于管理;你不想做任何有意义的内联。

  

然后有一个问题就是用户输入不足以确保你不会错过任何非法字符。

HTML4 Transitional中的带外字符与XHTML1 Strict一样无效。

如果您接受用户提交的HTML并且没有使用足够的细齿梳检查/转义它以防止形成良好错误,那么您遇到的问题远比仅仅遵守doctype要大得多。您将通过注入攻击并使您的站点容易受到跨站点脚本安全漏洞的攻击。<​​/ p>

  

忘记确保从服务器返回的内容类型被重置为XHTML页面,从text / html重置为application / html + xml。

这不是'遗忘',而是故意的:今天提供application / xhtml + xml并没有多少意义。要考虑IE,你必须嗅到UA,然后确保你理解在两种解析模式中弹出的CSS和JavaScript差异......你可以这样做来证明你的技术实力,但它并没有给你带来任何好处

将XHTML作为遗留HTML提供服务可能并不理想,但它可以让您保持更简单,更易处理的XML语法(以及与SVG等其他XML语言的潜在互操作性),同时仍然适合浏览器。

人们抱怨良好错误的挑剔,但是直接找到这些错误让你修复它们比把它们静静地留在那里更好,准备绊倒未来的浏览器。

答案 1 :(得分:7)

有一篇关于XHTML @ Beware of XHTML的使用的好文章。

希望它有所帮助, Bruno Figueiredo

答案 2 :(得分:5)

XHTML 1.0 Strict尝试解决四个问题:

  1. XML是W3C技术,HTML4没有使用它。不是你的问题。

  2. 在表现主义方面,严格意图在理论上比过渡更纯粹。但这不是an XHTML vs. HTML issue

  3. XML解析器应该更简单。 (不完全正确;处理DTD部分的代码非常复杂。)现在,您同时获得XML和HTML parsers off-the-shelf,因此这不是您的问题。 (旁边:the mobile argument is utterly bogus。)

  4. application / xhtml + xml(虽然无效XHTML 1.0 Strict!)允许您混合其他词汇表。如果你想今天使用内联MathML或SVG,这是今天使用application / xhtml + xml的主要原因。但是,HTML5工作的方向是可以在text / html中使用MathML和SVG。

答案 3 :(得分:4)

XHTML非常有用,因为创建一个简单的转换样式表或为它自己解析自己的解析器要比HTML更容易。

答案 4 :(得分:3)

您是否必须使用程序解析HTML,以进行某些测试?然后,使用XHTML。

对于其他一切,HTML 4.01(严格,宽松,过渡,无论如何)是完全“标准”而不是“麻烦”。

答案 5 :(得分:2)

XHTML使您能够像SVG(可缩放矢量图形)一样进行高级渲染,SVG本身就是一个XML,但可以通过XML命名空间扩展轻松嵌入到XHTML中,而无需使用&lt; embed&gt;或&lt; object&gt;。不幸的是,只有Firefox和Safari支持它。对不起IE6用户。

有关http://en.wikipedia.org/wiki/Svg

的SVG的更多信息

答案 6 :(得分:0)

XHTML使HTML与我们Universe中所有其他基于xml的结构正交,这有两个主要好处。

我们在处理xml时使用的设计模式可以应用于html。

软件工具同上。

答案 7 :(得分:0)

XHTML具有xml的优点。但那么为什么是严格的变体?

我看到与已弃用的功能有一些相似之处。你仍然可以使用它们这个版本,但它们可能在下一个版本中被删除。所以我认为过渡版本是弃用的。它仍然有效,它适用于几个版本,但如果你想为未来构建,请使用严格版本。

答案 8 :(得分:0)

严格意图通过使两者混合更加困难来形式化内容和风格之间的分离。 Elliotte Rusty Harold在他的一本书中写了很多关于XHTML的文章,这里是“Why XHTML”的相关摘录。

答案 9 :(得分:0)

我看到XHTML解决的唯一问题就是用户使用Safari的“问题”:我不知道bug是否仍然存在,但是当我们上次被要求用XHTML编写时,我们碰到了使XHTML无法使用Safari的错误。在XHTML中,锚标记中不允许使用以下URL,因为&符号未被转义:

http://www.example.com/page.php?arg1=val1&arg2=val2

所以你要做的就是用&amp; amp;替换它。像这样:

http://www.example.com/page.php?arg1=val1&amp;arg2=val2

但Safari转换&amp; amp;至&#38;所以你得到这个URL:

http://www.example.com/page.php?arg1=val1&#38;arg2=val2

...就PHP而言,哈希符号结束了URL。我知道有些丑陋的黑客允许你以其他方式传递两个变量,但是如果XHTML会迫使你使用丑陋的黑客,那么没有它你会更好。

答案 10 :(得分:0)

就个人而言,我喜欢XHTML的概念:比我们可以看到的大多数HTML更清晰,更容易解析和验证。像每个人一样,我开始编写XHTML页面代码。顺便说一句,我没有看到内联JavaScript的问题,如果你把代码放在CDATA中则不需要转义。幸运的是,IE5有点超出了浏览器的范畴,比如Netscape 4迫使我们写/ >而不是/>,我有时会用纯XML看到这个......

现在,我已经阅读了很多文章,比如Bruno链接的文章,在大多数情况下使用有很多好的论据。基本上,它说大多数浏览器不仅准备好接受严格的XHTML(作为XML),将XHTML服务器作为HTML也没有多大意义,无论如何它在大多数站点中都没用。

看看上面的论点:它们是完全有效的,能够将MathML或SVG直接放在页面中,使用XSLT解析器转换XML,使用XML解析器处理页面是很棒的。

但是你经常这样做?解析页面通常是最终用户的问题,最终用户可以使用优秀的HTML解析器。考虑到能够管理MathML,SVG或XSLT的浏览器数量,对内联网的需求比对大量互联网的需要更多。

您可以拥有一个电子商务或博客或论坛,它们可以发布出色的XHTML页面。编写描述,文章或消息的人插入<p><p><p>以跳过某些行,当它不是<p/>或其他一些奇特的构造时......

我相信XHTML,但我想我将不再使用它来为我的网站做的小页面。我将使用HTML 4编写良好的代码(引用属性,即使是可选的关闭标签等) 毕竟,如果W3C在HTML 5中工作,那是有原因的:HTML仍然有效,否则它会被杀死而支持XHTML 2。

答案 11 :(得分:-1)

XHTML按照定义XML,与HTML不同。

这意味着你可以用它来做有趣的有用的东西,比如轻松验证和解析它(因为你知道它的XML,因此可以使用无数的工具)。

此外,极客喜欢让事情“更正确”; - )

答案 12 :(得分:-1)

这是一个全球标准问题

这不仅仅是关于xHTML,而是关于世界上所有的标准。你需要让版本更清晰。

xHTML是正方形,并推动编码器为代码添加语义值。它完全兼容XML,因此更易于解析,可编程等。

请记住,代码不仅适用于编码器,也适用于机器的机器人。在10年内,创建浏览器或库的人不希望为旧的HTML处理实现相同的复杂规则,而是希望尽可能地保持干​​净。

搜索引擎需要一些东西来依赖于在值之间建立语义链接,所以如果只有一种简单的方法可以做到这一点会更好。

我不是在谈论屏幕阅读器......

标准,最重要的是,关于走向一个适合每个人需求的独特开放式解决方案。不只是添加新的闪亮功能。