我正在研究一个richface应用程序,并尝试使用firefox3.5上的xpather评估以下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>
如果我使用xpather(v1.4.5)来评估FF3.5上的简单xpath,如//input
,它不会返回任何结果。命名空间是否导致此问题?如何在FF3.5上验证我的xpath?
答案 0 :(得分:1)
FF3.5上的简单xpath,如
//input
,它 不会返回任何结果。是 导致此问题的命名空间?
是。如果您查看文档,那么您在那里有一个默认的命名空间定义。
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="http://openfaces.org">
这意味着//input
正在寻找没有命名空间的元素<input>
,而您应该查找<input>
命名空间中的http://www.w3.org/1999/xhtml
。您需要定义该命名空间并将其绑定到前缀,然后在XPath中使用该前缀。比如//x:input