我有两个目录的html格式的差异报告(带有xml文件)
我需要从此报告中添加所需的数据。我写了一个简单的xslt并尝试了这个:
java -jar saxon9he.jar -xsl:diff.xsl -s:Diff\ Report.html
结束于
SXXP0003: Error reported by XML parser: The declaration for the entity "HTML.Version" must
end with '>'.
Transformation failed: Run-time errors were reported
Html文件标题:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ....
XSLT :(非常基本没什么)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:html="http://www.w3.org/1999/xhtml" version="2.0" exclude-result-prefixes="html">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<translations>
<xsl:apply-templates />
</translations>
</xsl:template>
</xsl:stylesheet>
问题是,是否可以使用此lib解析html 4.0文档?或者我必须添加一些命名空间或修改源文档来修复此错误?
答案 0 :(得分:0)
为了完整起见,将@ MartinHonnen的回复复制为答案:
Saxon是一个XSLT处理器,它使用底层的XML解析器来构建其树结构。所以通常输入必须是格式良好的XML。但是,您可以使用选项-x:org.ccil.cowan.tagsoup.Parser来指定使用像TagSoup这样的HTML解析器而不是XML解析器。您需要确保TagSoup位于类路径上。