如何在emacs nxml模式下搜索与xpath表达式匹配的元素?

如何在emacs nxml模式下搜索与xpath表达式匹配的元素?,xpath,emacs,Xpath,Emacs,是否有一种方法可以交互搜索与emacs中给定xpath表达式匹配的节点 我想要类似于re-forward search的东西,但是我不使用正则表达式,而是键入一个xpath表达式。我没有关于xpath查询的答案;很抱歉但是您可以尝试搜索键M-sm-sx和M-sm-sx(命令冰柱搜索xml元素和冰柱搜索xml元素文本节点) 它们允许您分别搜索名称与您提供的regexp匹配的顶级XML元素的内容和text()节点 对于冰柱搜索xml元素,可以有以下任何一种 表格: … … 您也可以选择搜索,

是否有一种方法可以交互搜索与emacs中给定xpath表达式匹配的节点


我想要类似于
re-forward search
的东西,但是我不使用正则表达式,而是键入一个xpath表达式。

我没有关于xpath查询的答案;很抱歉但是您可以尝试搜索键
M-sm-sx
M-sm-sx
(命令
冰柱搜索xml元素
冰柱搜索xml元素文本节点

它们允许您分别搜索名称与您提供的regexp匹配的顶级XML元素的内容和
text()
节点

对于
冰柱搜索xml元素
,可以有以下任何一种 表格:

您也可以选择搜索,而不是搜索上下文 由元素名regexp定义,但非上下文,即 在这些元素之外的缓冲区文本。要执行此操作,请使用'C-M-~' 在完工期间。(这是一个切换,它只影响未来 搜索命令,而不是当前命令。)

对于
冰柱搜索xml元素文本节点
,顶级匹配元素不得具有属性。只有表单的顶级元素
匹配


嗯。

我很久以前就做过这样的事。我现在无法向您提供任何详细信息,但我将概述我所采取的方法

我创建了一些Emacs函数来与原生XML数据库交互(查询)。我用MarkLogic服务器做了一次,用Berkley DB XML数据库做了另一次。其中一个函数只是查询数据库。另一个函数将发送包含Emacs缓冲区或缓冲区选择的XQuery查询

原生XML数据库服务器将处理查询并返回结果,我的Emacs函数将在结果缓冲区中呈现结果

这种方法允许我使用XPath和XQuery查询XML,XQuery是一种包含XPath的更强大的查询语言。(很久以前我在这里写过XQuery:)


尽管这听起来很难,但结果却出人意料地简单。

我也是!如果我有时间,我会尝试看看有什么nxml代码(如果有的话)用于选择XPath匹配。如果存在这样的代码,那么我会编写一个搜索这些区域的代码。@Drew greping在nxml代码中搜索xpath不会给出任何结果。有一个测试,但我还没有时间测试它。它需要dom.el才能工作。是的,这正是我上次在Emacs中查找XPath和XQuery支持时发现的。太糟糕了。实现对这些东西的良好支持无疑是非常重要的,但在我看来,它可能真的很有用(即使它需要DOM)。也许它存在(我看到了相同的引用),但我也没有时间真正检查它xpath.el就可以了。我现在可以做的是向nxml开发人员索取它。也许在接下来的假期里,我可以设法让一些东西发挥作用,但这是不确定的…听起来不错。应该非常有用。我实际上是在用XML测试一个长xpath表达式。所以没办法了。我必须测试这个xpath,以便将其放入代码中。具体地说,我正在编写OpenERP视图的扩展(通过XML完成),它们提供的匹配您想要更改的位置的方式是通过Xpath。所以测试我的表情是我需要的,我明白。XPath(和XQuery)匹配真的是无可替代的。(当然不是regexps。)