【发布时间】: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 重现该问题。