当前位置:  开发笔记 > 前端 > 正文

使用XSLT截断XML

如何解决《使用XSLT截断XML》经验,为你挑选了2个好方法。

我对SO社区的聪明人提出了一个问题.

下面是Symphony CMS生成的一小段XML .

   
        
            Lorem Ipsum
            
                

Lorem Ipsum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada auctor magna. Vivamus urna justo, pulvinar nec, sagittis malesuada, accumsan in, massa. Quisque mi purus, gravida eget, ultricies a, porta in, sem. Maecenas justo elit, elementum vel, feugiat vulputate, pulvinar nec, velit. Fusce vel ante et diam bibendum euismod. Nunc vel nulla non lorem dignissim placerat. Nulla magna massa, auctor et, tempor nec, auctor sit amet, turpis. Quisque odio lacus, auctor at, posuere id, suscipit eget, dui. Phasellus aliquam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin varius. Phasellus cursus. Cras mattis adipiscing turpis. Sed.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada auctor magna.

我需要做的是根据指定的长度获取元素的一部分,以便在以下博客样式中显示:

Lorem ipsum dolor坐下来,精致的adipistur elit.Sed m​​alesuada auctor magna.Vivamus urna justo,pulvinar nec,sagittis malesuada,accumsan in,massa.Quisque mi purus,gravida eget,ultricies a,porta in,sem ... 更多

... 更多是完整新闻项目的链接.我知道我可以选择特定的段落,我也知道我可以使用substring函数来带来指定数量的字符.但是,我需要保留文本的格式,即元素中的HTML标记.

我意识到这会引发标签关闭的问题,但肯定有办法.希望有更多XSLT经验的人可以对这个问题有所了解.



1> Dimitre Nova..:

这是一个完整的XSLT 1.0转换,可以完全解决问题.

这个XSLT转换:


 
 
 
 
 
 
 0
 
 
 
   
   
 
   
           
             
             
             
           
   
 
   
   
 
   
       
 
         
         
           
             
               
             
             
               
             
             
               
             
           
         
       
   
 
   
 
 
   
     
   
 
 
 
   
 
   

   
      ...more
   
 
 
 
   
   
   
 

当应用于原始源XML文档时:


    
        Lorem Ipsum
        
            

Lorem Ipsum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada auctor magna. Vivamus urna justo, pulvinar nec, sagittis malesuada, accumsan in, massa. Quisque mi purus, gravida eget, ultricies a, porta in, sem. Maecenas justo elit, elementum vel, feugiat vulputate, pulvinar nec, velit. Fusce vel ante et diam bibendum euismod. Nunc vel nulla non lorem dignissim placerat. Nulla magna massa, auctor et, tempor nec, auctor sit amet, turpis. Quisque odio lacus, auctor at, posuere id, suscipit eget, dui. Phasellus aliquam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin varius. Phasellus cursus. Cras mattis adipiscing turpis. Sed.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada auctor magna.

This text should not be displayed

产生想要的结果:


   
      Lorem Ipsum
      
         

Lorem Ipsum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada auctor magna. Vivamus urna justo, pulvinar nec, sagittis malesuada, accumsan in, massa. Quisque mi purus, gravida eget, ultricies a, porta in, sem. Maecenas justo elit, elementum vel, feugiat vulputate, pulvinar nec, velit. Fusce vel ante et diam bibendum euismod. Nunc vel nulla non lorem dignissim placerat. Nulla magna massa, auctor et, tempor nec, auctor sit amet, turpis. Quisque odio lacus, auctor at, posuere id, suscipit eget, dui. Phasellus aliquam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin varius. Phasellus cursus. Cras mattis adipiscing turpis. Sed.

Lorem ...more

请注意以下事项:

    FXSL库中scanl样式表已导入.此模板通常用于累积处理项目列表的数据.执行实际处理的函数(模板匹配)作为参数传递给模板.必须传递给它的另一个参数是处理中的"初始"值,如果传递的项目列表为空,则返回该值.myAdd:*scanl

    global参数$pTruncateLength保存超过文本必须截断的最大字符串长度



2> 小智..:

这是我的版本.我已经对你的XML样本进行了测试,但它确实有效.

要调用它,请使用.













    
        
    

    
    

    
        
            
            
        
    



    
        
    

    
    

    
    

    
        
            
            
        
        
            
        
    



    



推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有