ncx(epub)上的PHP/xPath查询失败

ncx(epub)上的PHP/xPath查询失败,php,xml,xpath,epub,Php,Xml,Xpath,Epub,我无法在文件上使用xPath检索结果,例如: 只有$query1生成有效结果。 谁能告诉我哪里出了错 谢谢核心问题是XPath没有考虑XML命名空间。您的XML在此处定义了默认命名空间: <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1"> 输出: 1 除了上面解释的名称空间问题之外,还需要重新检查XPath,即$query2,确保它与XML中目标元素的位置完全对应 <ncx xmlns="

我无法在文件上使用xPath检索结果,例如:

只有
$query1
生成有效结果。 谁能告诉我哪里出了错


谢谢

核心问题是XPath没有考虑XML命名空间。您的XML在此处定义了默认命名空间:

<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">

输出:

1
除了上面解释的名称空间问题之外,还需要重新检查XPath,即
$query2
,确保它与XML中目标元素的位置完全对应

<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
//map prefix "d" to the default namespace uri
$xpath->registerNamespace("d", "http://www.daisy.org/z3986/2005/ncx/");
.....
$head = $ncx->getElementsbyTagName('head')->item(0);
.....
//use the registered prefix properly in the XPath
$query4 = 'd:meta[@name="dtb:depth"]';
$result = $xpath->query( $query4, $head );
echo $result->length . PHP_EOL;
1