【问题标题】:running an XPath expression SVG inside an HTML with javascript使用 javascript 在 HTML 中运行 XPath 表达式 SVG
【发布时间】:2011-05-25 11:22:20
【问题描述】:

我正在尝试在嵌入在 html 中的 svg 上运行 xpath 表达式。我只是不知道如何设置参数。我想从给定的命名空间中找到具有任意属性的元素。我使用以下 xpath 表达式:

var xpathexp = "//*[@*[namespace-uri()='"+this.typo7namespace+"']]";

我测试了这个表达式,它按预期工作。 这是查找结果集的代码:

var result = this.svgdocument.contentDocument.evaluate( xpathexp, this.svgdocument.documentElement, null, XPathResult.ANY_TYPE, null );

谁能告诉我,或者发布一个教程链接,如何处理命名空间、命名空间解析器??

您好……

【问题讨论】:

    标签: javascript xpath svg


    【解决方案1】:

    这是关于使用 XPath 的 Mozilla 教程: https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript

    这里有一个关于编写自定义命名空间解析器的内容: https://developer.mozilla.org/en/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: IE9 selectSingleNode missing from beta, how to overcome this in JavaScript?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2020-11-21
      相关资源
      最近更新 更多