【问题标题】:XPath function on multiple text nodes多个文本节点上的 XPath 函数
【发布时间】:2017-06-03 20:35:24
【问题描述】:

使用 XPath 1.0 想要获取在每个文本节点上应用 XPath 'substring' 函数的文本节点列表

substring(//p/text(), 10) 

只给出一个第一个文本的子字符串,当

//p/text()

给出所有这些,但希望所有子字符串都设置好

编辑

试过

//p/substring(text(), 10)

说无效的 XPath 表达式

我怎样才能做到这一点?

提前致谢

【问题讨论】:

  • 如果不使用自定义函数,您所描述的内容在单个 XPath 1.0 表达式中是不可能的。您在哪种情况下使用此 XPath(XSLT、.NET、Java 等)?请向我们展示您调用此 XPath 的代码。
  • 当然我可以从代码中做到这一点,但我目前的代码是通用的,想用 XPath 做到这一点,谢谢你的回答,将在你描述的解决方案上工作:)
  • EXSLT 定义了一个允许您执行此操作的函数:dyn:map(//p/text, 'substring(., 10)')。该页面说没有已知的 XSLT 处理器或支持该功能的 3rd 方库,但如果您的 XPath 引擎支持它或类似的东西,您可以使用它。
  • 感谢回答,马上试试

标签: xpath xpath-1.0


【解决方案1】:

如果您想要一组字符串作为 XPath 1.0 表达式的结果,那么您就不走运了,因为 XPath 1.0 中没有这样的数据类型:唯一可用的集合是节点集合,您可以只选择已经存在的节点,不能创建新节点。

对于 XPath 2.0,这是小菜一碟:

//p/text()/substring(., 10)

所以,如果可能的话,给自己找一个 XPath 2.0 处理器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2011-06-29
    相关资源
    最近更新 更多