在 Xquery 中反转字段中的数据

Reverse the data in a field in Xquery

我有如下输入字段

<BID>123-HSB-456789</BID>

我想反转这个字段的内容 我的预期结果应该如下所示

<BID>456789-HSB-123</BID>

我什至试过反向功能....但它不起作用

https://xqueryfiddle.liberty-development.net/nc4P6yf/1

这里有任何帮助

你只给了一个测试用例,一个测试用例没有做规范。例如,您没有告诉我们元素的值是否始终包含两个连字符。

这里有三个表达式可以满足您对这个测试用例的需求,但它们并不等价,并且会针对不同的测试用例做不同的事情:

  1. tokenize($in, '-') => reverse() => string-join('-')
  2. replace($in, '([0-9]*)-([A-Z]*)-([0-9]*), '--')
  3. substring($in, 12, 3) || '-' || substring($in, 8, 3) || '-' || substring($in, 1, 6)

P.S。请确保您在使用之前理解代码,并在一系列输入上对其进行测试。

PP.S。这里有一些构造需要 XQuery 3.0 或 3.1。