热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在XSLTv1.0中排序以获得最大值,一个新问题-SortinginXSLTv1.0toobtainthegreatestvalue,anewquestion

IhaveanXMLdocumentwithseveral<person>elements,eachofwhichcontainsthe<name>

I have an XML document with several elements, each of which contains the of the person, and several elements inside a grouping element.

我有一个带有几个 元素的XML文档,每个元素都包含person的 ,以及分组 元素中的几个 元素。

I already found that to obtain the greatest I have to do an with a inside it and then take the first element, as XSLT v1.0 doesn't have fn:max().

我已经发现要获得最大的 我必须在其中使用 执行 ,然后获取第一个元素,因为XSLT v1.0没有FN:MAX()。

But I guess that this would give me the greatest value from all. So, how could I arrange a stylesheet to extract each person's with their greatest ?

但我想这会给我最大的价值。那么,我怎样才能安排样式表来提取每个人的 及其最大的 ?

2 个解决方案

#1


2  

One can use the "maximum" template as provided by FXSL -- the Functional Programming Library for XSLT. FXSL is written entirely in XSLT itself.

可以使用FXSL提供的“最大”模板 - XSLT的功能编程库。 FXSL完全用XSLT编写。

Here is an example of using the "maximum" template:

以下是使用“最大”模板的示例:

When this transformation:

当这个转变:


   

   

   

     

    
      

      
        
         

      
    

    
         
         

         
          1
          0
         
    

is applied on this XML document:

应用于此XML文档:


  01
  02
  03
  04
  05
  06
  07
  08
  09
  10

the wanted result is obtained.

获得想要的结果。

10

Note, that I can pass any needed "compare" operation as parameter! For example, if my compare operation returns 1 whenever $arg1 <$arg2, then the above transformation will produce "01" -- the minimum of all values.

注意,我可以将任何需要的“比较”操作作为参数传递!例如,如果我的比较操作在$ arg1 <$ arg2时返回1,那么上面的转换将产生“01” - 所有值的最小值。

Now, I will show two solutions for the original problem.

现在,我将针对原始问题展示两种解决方案。

Solution1 (using FXSL's "maximum" template):

   

   

     

      

    
      
       
      
    
    
     
      
        
         

      
     
    

    
         
         

         
          1
          0
         
    

When this transformation is applied on the following XML document:

将此转换应用于以下XML文档时:


    
        
            8
            10
            4
            12
    
    
        
            2
            11
            15
            6
    
    
        
            10
            44
            9
    

the wanted result is produced:

产生了想要的结果:


   
      12
   
   
      15
   
   
      44
   

Solution2 (using a template written by hand):

When this transformation:

当这个转变:


 

    
     
       
     
    

    
     
      
        
      
     
    

    
      

      
       
        -99999999999999999999
       
       
         

         
          
           
          
          
           

           
             
              
             
           

           
             
              
             
           

           
          
         
       
      
    

is applied on the same XML document, again the correct result is produced:

应用于同一XML文档,再次生成正确的结果:


   12
   15
   44

#2


0  

When it comes to sorting stuff in XSLT 1.0 you have to use a slightly roundabout approach as I recall. If you haven't already you'll want to look into Muenchian grouping to give you some ideas to start with.

在XSLT 1.0中对事物进行排序时,我必须使用稍微迂回的方法。如果你还没有,你会想要考虑Muenchian分组给你一些想法。

I've found this site to be a very useful resource.

我发现这个网站是一个非常有用的资源。


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
author-avatar
君莫笑
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有