热门标签 | 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.

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


推荐阅读
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文介绍如何使用 Python 编写程序,检查给定列表中的元素是否形成交替峰值模式。我们将探讨两种不同的方法来实现这一目标,并提供详细的代码示例。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
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社区 版权所有