0

我正在使用http://tidy.sourceforge.net/将 HTML 转换为 XHTML,我想稍后使用 XSLT 转换这个 XHTML。

不幸的是,我尝试解析一个 techcrunch 站点(仅用于测试)。techcrunch 站点包含 php 代码,并且 HTML tidy 使用此 php 代码生成一个无效的 XML 文件。

简化输入文件dirty.htm

<html>
<head>
</head>
<body>
  <a href="http://www.crunchbase.com/company/google" onclick="<?php tc_set_omniture_attr("post_widget_crunchbase") ?>Google</a>
</body>
</html>

和我的带有 HTML Tidy 的输出文件cleaned.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<p><a href="http://www.crunchbase.com/company/google" onclick="<?php tc_set_omniture_attr(">Google</a></p>
</body>
</html>

主要问题是<其中onclick不允许作为 XML 属性!XSLTProc 拒绝打开这个无效的 XML。

我的 HTML 整洁选项tidyconfig.cfg

output-xhtml: 1
indent: 0
tidy-mark: 0
wrap: 0
alt-text:
doctype: strict
force-output: 1
numeric-entities: 1
clean: 1
bare: 1
word-2000: 1
drop-proprietary-attributes: 1
enclose-text: 1
logical-emphasis: 1

HTML 整洁的命令行:

tidy -quiet -config tidyconfig.cfg -output cleaned.htm dirty.htm

我错过了任何 HTML Tidy 选项吗?所有整洁的选项:http ://tidy.sourceforge.net/docs/quickref.html

4

2 回答 2

1

Tidy 仅对PHP 代码提供有限支持。我怀疑它会变得混乱,因为 PHP 块位于属性内(未关闭)。

它可能有更好的机会:

<a href="..." onclick="<?php tc_set_omniture_attr("post_widget_crunchbase") ?>">Google</a>

抱歉,不确定还有很多其他事情可以做。希望有帮助。

于 2011-08-10T10:19:00.097 回答
0

您是否可以选择从链接中删除 onclick,而是将 onclick 脚本移动到某些脚本标签之间?

于 2011-08-10T10:16:51.860 回答