热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

使用XQuery/XPath获取祖先节点的相反顺序

如何解决《使用XQuery/XPath获取祖先节点的相反顺序》经验,为你挑选了1个好方法。

我正在寻找一个好的解决方案(简短表达,最佳性能),以在BaseX上使用XQuery 3.1获得所有祖先节点的相反顺序。

现在,我正在使用此代码,以获取给定XML示例的dirA / dirA3 / dirA31

xquery version "3.1" encoding "utf-8";

declare variable $files := 
  
    
    
    
      
      
    
    
      
      
    
    
      
      
      
       
        
        
        
      
    
  ;


let $path := trace(string-join($files//file[@name='fileA31_F2']/ancestor::dir/@name,'/'))

return()

和此代码获得相反的顺序dirA31 / dirA3 / dirA

let $reversepath := trace(string-join(reverse(tokenize(string-join($files//file[@name='fileA31_F2']/ancestor::dir/@name,'/'),'/')),'/'))

我的意思是,是否还有其他XPath或XQuery表达式以相反的顺序遍历祖先?

注释:文件节点的名称属性值是唯一的



1> Martin Honne..:

使用XPath 3.1通过=>运算符使用新语法(https://www.w3.org/TR/xpath-31/#id-arrow-operator)

let $file := $files//file[@name='fileA31_F2']
return 
    $file/ancestor::dir/@name => reverse() => string-join('/')

应该更紧凑,更易读,但要花一些时间才能习惯。


推荐阅读
author-avatar
123sdf87_768
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有