如何解决使用javascript在HTML内运行XPath表达式SVG
|| 我正在尝试对嵌入html的svg运行xpath-expression。我只是不知道如何设置参数。我想从给定的名称空间中找到具有任意属性的元素。我使用以下xpath表达式:var xpathexp = \"//*[@*[namespace-uri()=\'\"+this.typo7namespace+\"\']]\";
我测试了此表达式,它按预期工作。
这是找到结果集的代码:
var result = this.svgdocument.contentDocument.evaluate( xpathexp,this.svgdocument.documentElement,null,XPathResult.ANY_TYPE,null );
谁能告诉我,或发布教程的链接,如何处理命名空间解析器namspace?
问候...
解决方法
这是有关使用XPath的Mozilla教程:
https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript
这是编写自定义名称空间解析器的一种方法:
https://developer.mozilla.org/zh_CN/Introduction_to_using_XPath_in_JavaScript#Implementing_a_User_Defined_Namespace_Resolver
但是,我发现这些接口相当笨拙,因此我编写了一个抽象层,该层将使用xpath字符串和上下文节点,并返回一个常规js数组。它可以在浏览器内部运行,并嵌入Mozilla Rhino下的Java中:
https://svn.apache.org/repos/asf/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/xpath.js
除IE6-9以外,以上所有方法均适用于所有浏览器。
IE6-8本身不支持SVG,因此这对您的问题不太重要。不过,为了完整起见,这是一篇很好的文章,描述了早期IE8中对XPath的支持,包括对解析名称空间的支持:
http://www.nczonline.net/blog/2009/04/04/xpath-in-javascript-part-3/
显然,IE9在浏览器中也不包含对XPath的支持,这更成问题,因为它确实支持SVG。可能最好的方法是使用ActiveX与MSXML API配合使用:
Beta中缺少IE9 selectSingleNode,如何在JavaScript中克服这个问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。