我可以使用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']"
没有结果
答案 0 :(得分:0)
XHTML文档是一个XML文档,因此您可以像处理任何其他XML文档一样处理它。请注意,如果它是XHTML,那么大多数元素可能都在命名空间中,您需要考虑到这一点。将XHTML命名空间设置为默认命名空间可能很有用(尽管可悲的是在XQuery中这也使它成为输出的默认命名空间--XSLT更好地完成了这一操作。)
XHTML文档通常包含对W3C服务器上的XHTML DTD的引用,并且在过去的一年中,W3C已停止响应检索此资源的请求,因为它们无法处理负载。这意味着您可能会遇到长时间延迟和I / O错误。为此,Saxon 9.4包含XHTML DTD的本地副本,并满足本地副本的请求。使用早期版本,您可以使用OASIS目录实现相同的效果。