【问题标题】:Xquery preserve spaces while tokenizingXquery 在标记化时保留空格
【发布时间】:2019-10-15 20:26:18
【问题描述】:

我正在尝试使用 XQuery 实现以下目标 输入

<DemoXML>
This is a sample line one
this is line number two
this     line      contains     multiple      spaces
paragraph ends
</DemoXML

所需输出(两条记录)

<Record1>
This is a sample line one
this     line      contains     multiple      spaces
paragraph ends
</Record1>

<Record2>
This is a sample line one
this     line      contains     multiple      spaces
paragraph ends
</Record2>

我尝试使用 Tokenize,但问题是 tokenize 函数删除了第二行中的所有“空格”。 这是第二行

fn:tokenize($input,'\n')

标记化输出

This is a sample line one
this is line number two
this line contains multiple spaces
paragraph ends

有人可以告诉我解决方法吗

【问题讨论】:

  • 您的输入看起来如何,想要的输出看起来如何?如果您不想在空格上标记要标记哪些字符,那么您分别使用了哪个确切的使用 tokenize 的 XQuery 代码?
  • 忘了提到基于换行符'\n'的标记化。输入是第一个代码块。当我使用换行符进行标记时,它会删除我需要保留的空格
  • 如果您在换行符上使用多行标记输入,为什么结果有记录?不应该是四个吗?您能否添加产生您所显示的输出的最小 XQuery 代码?还可以添加有关您使用/可以使用的 XQuery 版本的信息,因为 XQuery 3 分析字符串函数可能会提供更大的灵活性。
  • 感谢马丁的快速回复。欣赏它。这里是 xquery 函数: fn:tokenize($input,'\n') 它给出了上面提到的 Tokenizer 输出的输出。我们使用的是 xquery 1.0,因为不支持 3.0,所以不能使用分析字符串
  • 您使用哪个 XQuery 1 处理器,如何解析输入?您确定是标记化调用去除了空白而不是其他步骤吗?我无法使用 Saxon 9 在xqueryfiddle.liberty-development.net/gWcDMey/0 重现该问题。

标签: xquery tokenize


【解决方案1】:

您附加的查询运行良好。还附上了生成的输出供您参考。可能是您正在使用的处理器中的问题。我使用 XQuery 9.6.0.7 在 Marklogic 控制台和 Oxygen 编辑器中测试此查询

让 $val1:= 这是一个示例线 这是第二行 此行包含多个空格 段落结束

return tokenize($val1,'\n')

生成输出: 这是示例第一行 这是第二行 这行包含多个空格 段落结尾

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多