目前我正在努力进行客户端 xpath 评估。出于开发目的,我添加了:
<?php header( 'Content-type: application/xhtml+xml' ); ?>
如果我生成无效的 (x)html,请转到我的页面顶部以获取解析错误。我想使用以下代码进行一些 xpath 查询,例如//div
, or等等://div[@class='test']
function xpath( query ){
var evaluater = new XPathEvaluator();
var resolver = document.createNSResolver( document.documentElement );
var iterator = evaluater.evaluate( query, document, resolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );
var nodes = [];
var result;
while( ( result = iterator.iterateNext() ) != null ){
nodes.push( result );
}
return nodes;
};
我的页面顶部如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
header(...)
如果该方法被注释掉,它工作正常,但如果它被触发,xpath 查询不返回任何结果。
为什么是这样?xpath 评估的标头扮演什么角色?
编辑:
如果我从 html 元素中删除 xmlns 并切换header
- 方法,则会出现: