0

我正在使用 Saxon 9 来分析无效的 html 源。具体来说,html 的 href 值如下:

<a href="blah.asp?fn=view&g_varID=1234">一些文字</a>

我收到错误:

“XML 解析器报告的错误:对实体“g_varID”的引用必须以 ';' 结尾 分隔符。”

xml 解析器正在读取“&g_varID”字符串并抱怨应该有一个“;” 来界定实体。但是,当然,这并不是一个 HTML 实体——它只是一个 URI 的一部分。

我如何告诉解析器忽略它?注意:我使用的是非模式感知 Saxon,而不是 Saxon-SA。

4

3 回答 3

3

如果您的 HTML 不是 XML,那么您希望任何 XML 处理器如何处理它?

于 2009-05-18T19:15:13.470 回答
1

确保您有正确的 xhtml DOCTYPE。根据我正在查看的 xhtml1-strict.dtd,href 属性声明为 CDATA,而不是 PCDATA,这意味着文字 & 完全可以,不应将其解析为实体。

于 2009-05-18T19:25:10.487 回答
0

如上所述,这不是有效的 XML,它是 HTML。但是,这个特殊问题是 HTML tidy 默认清理的问题:http: //www.w3.org/People/Raggett/tidy/。将它与以下命令行参数一起使用以将 HTML 转换为 XHTML:

tidy -asxhtml foo.html > foo.xhtml

然后您应该能够通过您的 XSLT 运行它。

于 2013-01-21T21:34:51.440 回答