【问题标题】:(x)HTML: Parsing bizarre tags(x)HTML:解析奇怪的标签
【发布时间】:2010-10-13 13:35:23
【问题描述】:

我正在构建自己的 humble (x)html 解析器。一切都很好,但是一些 doctype 标签破坏了它。让我告诉你:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
<!ENTITY D "&#x2014;">
<!ENTITY o "&#x2018;">
<!ENTITY c "&#x2019;">
<!ENTITY O "&#x201C;">
<!ENTITY C "&#x201D;">
]>

据我所知,不允许以这种方式嵌套任何其他类型的标签(我的意思是在标签名称内),即包括。 xml 说明和注释标签。

我的问题是,你对这个问题有什么看法。在我看来,这非常违反常识。当然,就 XML 而言,它是完全有效的。

谢谢!

【问题讨论】:

    标签: html xml parsing tags doctype


    【解决方案1】:

    Doctype 声明不是标签,因此它不遵循标签的语法规则。不过是well specified。 (构建解析器的诀窍是从规范开始,而不是从示例文档开始)

    【讨论】:

    • 谢谢!当然,规格是最重要的,但它仍然非常令人不安。而不是更简单,现在我也想到了这一点。当然,w3c 肯定有真正需要引入这种特性。关闭我去规范。
    • 现在一切都清楚了。谢谢。规范并不像第一眼看上去那么糟糕。
    【解决方案2】:

    哇,这是你每天都看不到的东西。像这样的代码可以追溯到 SGML。 SGML 有我们今天使用的各种有趣的位:&lt;![CDATA[&lt;?xml version="1.0"?&gt;,甚至是 PHP 的打开/关闭“标签”:&lt;?php ... ?&gt;

    总而言之,这没什么好担心的。这只是解析器的一系列指令,尽管您最好通过另一种方式完成同样的事情。保持冷静,继续前进。

    【讨论】:

    • 谢谢!好吧,它当然需要一些思考,比如计算打开括号的数量等。
    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 2011-09-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2014-06-03
    • 2013-05-08
    • 1970-01-01
    相关资源
    最近更新 更多