Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpather在firefox 3.5上不计算XPath,但在firefox 3.6上运行良好_Xpath_Xml Namespaces - Fatal编程技术网

Xpather在firefox 3.5上不计算XPath,但在firefox 3.6上运行良好

Xpather在firefox 3.5上不计算XPath,但在firefox 3.6上运行良好,xpath,xml-namespaces,Xpath,Xml Namespaces,我正在开发一个richface应用程序,并尝试在firefox3.5上使用xpath评估以下xpath。XPather不计算任何xpath,尽管相同的xpath在firefox 3.6上工作得非常好。 我正在测试的页面类似于- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit

我正在开发一个richface应用程序,并尝试在firefox3.5上使用xpath评估以下xpath。XPather不计算任何xpath,尽管相同的xpath在firefox 3.6上工作得非常好。 我正在测试的页面类似于-

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="http://openfaces.org">
  <head>
    <script src="some source" type="text/javascript"></script>
    <script src="some source" type="text/javascript"></script>
    <link class="component" href="some source" rel="stylesheet" type="text/css" />
    <link class="component" href="some source" 
          media="rich-extended-skinning" rel="stylesheet" type="text/css" />
    <link class="component" href="some source" rel="stylesheet" type="text/css" />
    <script type="text/javascript">window.RICH_FACES_EXTENDED_SKINNING_ON=true;</script>
    <link type="text/css" href="some source" rel="stylesheet"/>

  <body class="Banner" onresize="setTreePnlHeight()" onload="loadApp();">
    <input type="hidden" id="dsTreeScrollPos" value="0" />
    <div id="a" class="application"><form id="form" name="form" method="post" action="...">
    ....
  </body>
</html>

window.RICH\u FACES\u EXTENDED\u SKINNING\u ON=true;
....
如果我使用xpather(v1.4.5)来计算FF3.5上的简单xpath,比如
//input
,它不会返回任何结果。命名空间是否导致此问题?如何在FF3.5上验证xpath

FF3.5上的简单xpath,如
//input
,它 不会返回任何结果。是 导致此问题的命名空间

对。如果您查看文档,就会发现其中有一个默认名称空间定义

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="http://openfaces.org">


这意味着
//input
正在查找没有名称空间的元素
,而您应该查找
中的
http://www.w3.org/1999/xhtml
名称空间。您需要定义该名称空间并将其绑定到前缀,然后在XPath中使用该前缀。像
//x:input

文档是如何以text/html、text/xml、application/xml或application/xhtml+xml的形式提供的?此文档以text.html的形式提供。内容=文本/html;charset=iso-8859-1是否有出现问题的文档的URL?抱歉,Martin,此处无法指定URL:-(抱歉我的无知..但我是新手。您能告诉我如何定义名称空间并将其绑定到前缀吗?我无法修改原始文档。我需要能够让它与XPather一起工作以测试应用程序(并将此xpath与selenium一起使用)。我没有使用XPather,因此我不能说它是否有手动注册命名空间的特定过程。建议它使用文档中定义的相同前缀,并为默认命名空间中的元素(没有前缀)使用前缀
default
。因此,类似于
//default:input
的内容应该适用于您的情况。快速谷歌搜索似乎提示Selenium不支持名称空间,这对于XML处理来说是一个巨大的缺陷。@Santosh K:我忘了提到,还有一个常用的解决方法,用于选择名称空间元素,但不知道名称空间ol:使用谓词和
local-name()
函数。在这种情况下,
//input
将被写为
//*[local-name()='input']
您建议的解决方法对我有效。通过指定谓词和local-name()函数,结果将在Xpather中显示。