我可以使用xmllint
並使用XPath 1.0處理HTML/XHTML輸入。例如:可能用Saxon處理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結果後夫婦Ø分鐘處理
在薩克森documentation我無法找到任何有關處理XHTML文檔
我發現這個問題:Saxon Xpath namespace和我更新的問題更多的信息:
這裏是不使用HTML解析器(無--html
開關)xmllint
例如:
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>
再次使用撒克遜:
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']"
無結果
當然,它可以,只要它是格式良好的XML(即它實際上是有效的XHTML)。值得注意的是,XHTML元素位於命名空間('http:// www.w3.org/1999/xhtml')中。確保你指定了命名空間。 –
'http:// www.w3.org/TR/xslt20 /'*是* XHTML源文件。它通過HTML tidy XML測試,並且與它一起生成,因爲它可以很容易地被檢查 – theta
我想你錯過了我粘貼的東西。它不是相同的字符串:'http:// www.w3.org/1999/xhtml'。你永遠不會與'// title'匹配任何東西,因爲它沒有考慮命名空間。 –