【问题标题】:Find dynamic length number from string using XSLT使用 XSLT 从字符串中查找动态长度数
【发布时间】:2019-03-11 11:03:51
【问题描述】:

我输入了如下的 XML

<?xml version = "1.0" encoding = "UTF-8"?>
  <root>
    <param>:22:/ABC/GID:50749612002 BOOK USER REF: 12311111112222 XYZ: DEF BK ID:3333 3333 JKL:MNN - VZXVXHFHF DETA ABC:DEF ORDERID:989796123456789.GKLT C:0006789 FASDFSF.FYRTY 53546475</param>
  </root>

需要帮助才能使用 XSLT 提取 ORDERID。

【问题讨论】:

  • 你试过什么?什么没用?你得到了什么?你期待什么?什么不适用于您的代码,它在哪里?
  • 好吧,您已将其标记为 xslt-2.0regex,因此使用 XSLT/XPath 2.0 中的函数(如支持正则表达式的 tokenizematches)应该不难或 XSLT 2 中引入的 xsl:analyze-string 指令以使用正则表达式。所以利用它们,告诉我们如果你不能让它工作它是如何失败的。

标签: regex xslt xslt-2.0


【解决方案1】:

考虑将节点值提取到变量$param

<xsl:variable name="param">
    <xsl:value-of select="/root/param"/>
</xsl:variable>

现在您可以从 XSLT 2.0 开始使用函数 replace 来获取号码:

<xsl:value-of select="replace($param, '.*?ORDERID:(\d+)\.\w{4} .*', '$1')"/>

正则表达式.*?ORDERID:(\d+)\.\w{4} .* 演示在Regex101

【讨论】:

    猜你喜欢
    • 2014-11-13
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多