2011-08-10 36 views
0

我使用http://tidy.sourceforge.net/將HTML轉換爲XHTML,並且我希望稍後使用XSLT轉換此XHTML。Html使用php代碼整理,XHTML之後無效XML

不幸的是我試圖解析一個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整潔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精簡選項?所有整潔選項:http://tidy.sourceforge.net/docs/quickref.html

回答

1

整潔只有limited support for PHP code。我懷疑它是越來越困惑,因爲PHP塊在一個屬性(未關閉)內。

它可能有一個更好的機會:

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

對不起,不知道是什麼其他東西可以做在那裏。希望有所幫助。

+0

好的,謝謝。似乎整潔的HTML不會做我想做的事。 – therealmarv

0

您是否可以選擇從鏈接中刪除onclick,而是將onclick腳本移動到某些腳本標記之間?

+0

沒有。在HTML Tidy之前沒有重組的機會。因爲我不知道在使用HTML Tidy之前HTML的外觀如何。 – therealmarv