• HTML解析,为啥常规解析器都不适用?

    非与上下文无关的语法
    服务器君一共花费 15.319 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    HTML 解析器

    HTML 解析器的任务是将 HTML 标记解析成解析树。

    HTML解析是非与上下文无关的语法

    在一般解析过程中,语法可以用 BNF 等格式进行正式定义。很遗憾,所有的常规解析器都不适用于 HTML(我并不是开玩笑,它们可以用于解析 CSS 和 JavaScript)。HTML 并不能很容易地用解析器所需的与上下文无关的语法来定义。

    有一种可以定义 HTML 的正规格式:DTD(Document Type Definition,文档类型定义),但它不是与上下文无关的语法。

    这初看起来很奇怪:HTML 和 XML 非常相似。有很多 XML 解析器可以使用。HTML 存在一个 XML 变体 (XHTML),那么有什么大的区别呢?

    区别在于 HTML 的处理更为“宽容”,它允许您省略某些隐式添加的标记,有时还能省略一些起始或者结束标记等等。和 XML 严格的语法不同,HTML 整体来看是一种“软性”的语法。

    显然,这种看上去细微的差别实际上却带来了巨大的影响。

    一方面,这是 HTML 如此流行的原因:它能包容您的错误,简化网络开发。另一方面,这使得它很难编写正式的语法。

    概括地说,HTML 无法很容易地通过常规解析器解析(因为它的语法不是与上下文无关的语法),也无法通过 XML 解析器来解析。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android加载器Loaders 5 个条目
  2. [运维管理] 路由器与交换机 4 个条目
  3. [移动开发] Android 网络通信框架Volley 1 个条目
  4. [Python程序设计] Django后台管理系统 2 个条目
  5. [移动开发] 从代码角度去认识 Handler 4 个条目
  6. [移动开发] Android里的ContentValues 2 个条目
  7. [C语言程序设计] 结构体基本知识 1 个条目
  8. [搜索引擎优化] 百度搜索引擎优化指南 3 个条目
  9. [PHP程序设计] PHP里的引用 5 个条目
  10. [数据结构] 图的定义 1 个条目
  11. [Python程序设计] 标准库:urllib/urllib2 14 个条目
  12. [数据库技术] SQL基础语法 1 个条目
窗口 -- [协会]