可以用Saxon处理XHTML吗?

时间:2012-01-25 21:56:48

标签: xpath xhtml saxon

我可以使用xmllint并使用XPath 1.0处理HTML / XHTML输入。例如:

xmllint --xpath "//title" --html http://www.w3.org/TR/xslt20/ 2>/dev/null

输出预期,但撒克逊人:

java -cp /usr/share/java/saxon9he.jar net.sf.saxon.Query -s:"http://www.w3.org/TR/xslt20/" -qs:"//title"

没有结果。
如果针对HTTP文档连接运行2分钟后重置,并且在本地文档上它会在处理几分钟后退出w / o结果

在Saxon documentation我找不到与处理XHTML文档相关的任何内容


我发现了这个问题:Saxon Xpath namespace我正在更新问题并提供更多信息:

以下是xmllint示例,不使用html解析器(无--html切换):

xmllint --xpath "//*[local-name()='title'][namespace-uri()='http://www.w3.org/1999/xhtml']" http://www.w3.org/TR/xslt20/

输出:

<title>XSL Transformations (XSLT) Version 2.0</title>

再次使用Saxon:

java -cp /usr/share/java/saxon9he.jar net.sf.saxon.Query -s:"http://www.w3.org/TR/xslt20/" -qs:"//*[local-name()='title'][namespace-uri()='http://www.w3.org/1999/xhtml']"

没有结果

1 个答案:

答案 0 :(得分:0)

XHTML文档是一个XML文档,因此您可以像处理任何其他XML文档一样处理它。请注意,如果它是XHTML,那么大多数元素可能都在命名空间中,您需要考虑到这一点。将XHTML命名空间设置为默认命名空间可能很有用(尽管可悲的是在XQuery中这也使它成为输出的默认命名空间--XSLT更好地完成了这一操作。)

XHTML文档通常包含对W3C服务器上的XHTML DTD的引用,并且在过去的一年中,W3C已停止响应检索此资源的请求,因为它们无法处理负载。这意味着您可能会遇到长时间延迟和I / O错误。为此,Saxon 9.4包含XHTML DTD的本地副本,并满足本地副本的请求。使用早期版本,您可以使用OASIS目录实现相同的效果。