首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XQuery中的tail()函数

XQuery中的tail()函数
EN

Stack Overflow用户
提问于 2011-05-06 19:41:49
回答 3查看 907关注 0票数 3

XQuery中是否有一种类似于tail()函数的方法?

我试图完成的是获取文件的内容(使用"xdmp:filesystem-file($path)"),然后只显示最后100行)。我似乎找不到一个好办法来做这件事。有什么想法吗?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-05-07 07:56:52

在普通XQuery中,这可以通过拆分成行并从序列的末尾获取所需的行数来实现,然后在必要时重新加入它们,即

代码语言:javascript
复制
declare function local:tail($content as xs:string, $number as xs:integer)
{
  let $linefeed := "
"
  let $lines := tokenize($content, $linefeed)
  let $tail := $lines[position() > last() - $number]
  return string-join($tail, $linefeed)
};
票数 4
EN

Stack Overflow用户

发布于 2011-05-07 16:40:42

--纯短的XPath 2.0解决方案--不仅可以在XQuery中使用,也可以在XSLT或托管XPath 2.0的其他PL中使用:

代码语言:javascript
复制
for $numLines in count(tokenize(., '
'))
  return
    tokenize(., '
')[position() gt $numLines -100]

代码语言:javascript
复制
for $numLines in count(tokenize(., '
'))
 return
    subsequence(tokenize(., '
'), $numLines -100 +1)
票数 1
EN

Stack Overflow用户

发布于 2011-05-08 14:38:12

如果xdmp: file -xx是文本文件的性质,那么您可以使用以下内容

代码语言:javascript
复制
let $f := 'any file system path'
return fn:tokenize(xdmp:filesystem-file($f), '[\n\r]+')[ fn:last() - 2 to fn:last()]

在这里,我使用换行符和回车作为我的令牌分配器。如果你需要其他东西来标记你可以。但是简单的日志文件跟踪,那么这个解决方案工作得很好。

给定的示例尾尾为给定文件的2行。如果您想要的不仅仅是将fn: want ()-2改为fn:want()-x

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5916246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档