xsl 中 for-each 的使用

该博客转载了一篇关于XML文档的内容,原文链接为https://www.cnblogs.com/gwazy/archive/2005/04/26/145779.html 。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml 文档

 

None.gif<?xml version="1.0" encoding="gb2312"?>
None.gif
<?xml-stylesheet type="text/xsl" href="applytemplatesl3.xsl"?>
None.gif
<X_Agent>
None.gif
<机构名称>X_Agent</机构名称>
None.gif
<机构宗旨>卓越品质 精品服务</机构宗旨>
None.gif
<X_Agent简介>我们是伟大的中国人</X_Agent简介>
None.gif
<代理品牌>
None.gif
None.gif
<品牌 中文名="优派" 英文名="ViewSonic">
None.gif
<品牌介绍页>ViewSonic.xml></品牌介绍页>
None.gif
<厂家网址>http:www.viewsonic.com</厂家网址>
None.gif 
<品牌介绍> 优派</品牌介绍>
None.gif
None.gif 
<产品系列>
None.gif  
<型号 品名="E6353 Mointor">
None.gif   
<说明>ViewSonic 再一次推出了</说明>
None.gif    
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif     
<控制>视控 onview 视 view Math </控制>
None.gif     
<分辨率>1280*1024</分辨率>
None.gif     
<符合标准>MPRII 标准</符合标准>
None.gif
</型号>
None.gif
None.gif
None.gif
<型号 品名="E6353 Mointor">
None.gif   
<说明>ViewSonic 再一次推出了</说明>
None.gif    
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif     
<控制>视控 onview 视 view Math </控制>
None.gif     
<分辨率>1280*1024</分辨率>
None.gif     
<符合标准>MPRII 标准</符合标准>
None.gif
</型号>
None.gif
None.gif
None.gif
None.gif
<型号 品名="E6353 Mointor">
None.gif   
<说明>ViewSonic 再一次推出了</说明>
None.gif    
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif     
<控制>视控 onview 视 view Math </控制>
None.gif     
<分辨率>1280*1024</分辨率>
None.gif     
<符合标准>MPRII 标准</符合标准>
None.gif
</型号>
None.gif
None.gif
<型号 品名="E6353 Mointor">
None.gif   
<说明>ViewSonic 再一次推出了</说明>
None.gif    
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif     
<控制>视控 onview 视 view Math </控制>
None.gif     
<分辨率>1280*1024</分辨率>
None.gif     
<符合标准>MPRII 标准</符合标准>
None.gif
</型号>
None.gif
None.gif
None.gif
</产品系列>
None.gif
None.gif
None.gif
</品牌>
None.gif
None.gif
<品牌 中文名="美格" 英文名="MAG">
None.gif  
<品牌介绍页>MAG.xml</品牌介绍页>
None.gif 
<品牌介绍>美格</品牌介绍>
None.gif  
<厂家网址>http://www.mag.com</厂家网址>
None.gif   
<品版介绍>MAG</品版介绍> 
None.gif   
<产品系列>
None.gif     
<产品>
None.gif      
<型号>mag xj570</型号>
None.gif        
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif     
<控制>视控 onview 视 view Math </控制>
None.gif     
<分辨率>1280*1024</分辨率>
None.gif     
<符合标准>MPRII 标准</符合标准>
None.gif      
<价格>1399</价格>
None.gif       
<降价>200元</降价>
None.gif      
</产品>
None.gif     
None.gif    
</产品系列>
None.gif
None.gif
</品牌>
None.gif 
<品牌 中文名="三星" 英文名="SAMSUNG">
None.gif  
<品牌介绍页>SAMSUNG.xml</品牌介绍页>
None.gif   
<品牌介绍>SAMSUNG</品牌介绍>
None.gif    
<产品系列>
None.gif       
<型号 品名="75ddf">
None.gif      
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif         
<分辨率>1280*1024 @85</分辨率>
None.gif          
<分辨率>1280*1024</分辨率>
None.gif           
</型号>  
None.gif
None.gif
None.gif
None.gif 
<型号 品名="75ddf">
None.gif      
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif         
<分辨率>1280*1024 @85</分辨率>
None.gif          
<分辨率>1280*1024</分辨率>
None.gif           
</型号>  
None.gif
None.gif
None.gif 
<型号 品名="75ddf">
None.gif      
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif         
<分辨率>1280*1024 @85</分辨率>
None.gif          
<分辨率>1280*1024</分辨率>
None.gif           
</型号>  
None.gif
None.gif
</产品系列>
None.gif
None.gif 
None.gif  
None.gif 
</品牌>
None.gif
None.gif
</代理品牌>
None.gif
<联系方法>
None.gif
None.gif
<公司地址>中国.上海.</公司地址>
None.gif
<联系电话>020-00000000</联系电话>
None.gif
<Email>abc@bb.com</Email>
None.gif
</联系方法>
None.gif
</X_Agent>


xsl 文档
None.gif<?xml version="1.0" encoding="gb2312"?>
None.gif
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
None.gif
<xsl:template math="/">
None.gif
<html>
None.gif
<head><TITLE>使用xsl:template 元素</TITLE></head>
None.gif
<body>
None.gif 
<h3 style="color:gree">X_Agent 的 email  地址是:
None.gif 
<xsl:value-of select="X_Agent/联系方法/Email"/>  
None.gif
</h3>
None.gif
None.gif
<xsl:for-each select="X_Agent/联系方法"> 
None.gif
<h3 style="color:blue"><xsl:value-of select="Email"/></h3>
None.gif
</xsl:for-each>
None.gif
</body>
None.gif
</html>
None.gif
</xsl:template>
None.gif
None.gif
None.gif
None.gif
</xsl:stylesheet>



例2
 xml

None.gif<?xml version="1.0" encoding="gb2312"?>
None.gif
<?xml-stylesheet type="text/xsl" href="foreach.xsl"?>
None.gif
None.gif
<产品系列>
None.gif     
<产品>
None.gif      
<型号>mag xj570</型号>
None.gif        
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif     
<控制>视控 onview 视 view Math </控制>
None.gif     
<分辨率>1280*1024</分辨率>
None.gif     
<符合标准>MPRII 标准</符合标准>
None.gif      
<价格>1399</价格>
None.gif       
<降价>200元</降价>
None.gif      
</产品>
None.gif       
<产品>
None.gif      
<型号>mag xj570</型号>
None.gif        
<显像管 水平="0.24mm" 垂直="0.12mm" 尺寸="15">0.28极细至点</显像管>  
None.gif     
<控制>视控 onview 视 view Math </控制>
None.gif     
<分辨率>1280*1024</分辨率>
None.gif     
<符合标准>MPRII 标准</符合标准>
None.gif      
<价格>13990</价格>
None.gif       
<降价>2000元</降价>
None.gif      
</产品>
None.gif    
</产品系列>
  xsl

 
None.gif<?xml version="1.0" encoding="gb2312"?>
None.gif
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
None.gif
<xsl:template math="/">
None.gif
<html>
None.gif
<head>X_Agent</head>
None.gif
<body>
None.gif
<center>
None.gif
<H3>使用 xsl:for-each</H3>
None.gif
<xsl:for-each select="产品系列/产品" order-by="降价">
None.gif
<h3>
None.gif
<xsl:value-of select="型号"/>
None.gif
<xsl:value-of select="价格"/>
None.gif
<xsl:value-of select="降价"/>
None.gif
</h3>
None.gif
</xsl:for-each>
None.gif
</center>
None.gif
None.gif
</body>
None.gif
</html>
None.gif
</xsl:template>
None.gif
</xsl:stylesheet>

   

注意 order-by 可以实现排序。。。。。。。。。。。

转载于:https://www.cnblogs.com/gwazy/archive/2005/04/26/145779.html

<xsl:template match="w:tbl"> <xsl:variable name="colCount" select="count(w:tblGrid/w:gridCol)"/> <fo:table table-layout="fixed" width="100%" border-collapse="collapse"> <!-- 生成精确列定义 --> <xsl:for-each select="w:tblGrid/w:gridCol"> <fo:table-column column-width="{@w:w div 20}pt"/> </xsl:for-each> <fo:table-body> <!-- 列溢出检测逻辑保持不变 --> <xsl:if test="count(w:tr[1]/w:tc) > $colCount"> <fo:table-row> <fo:table-cell number-columns-spanned="{$colCount}"> <fo:block color="red">表格列数溢出警告</fo:block> </fo:table-cell> </fo:table-row> </xsl:if> <xsl:apply-templates select="w:tr"/> </fo:table-body> </fo:table> </xsl:template> <xsl:template match="w:tr"> <tr> <xsl:apply-templates select="w:tc"/> </tr> </xsl:template> <xsl:template match="w:tc"> <xsl:variable name="pos" select="count(preceding-sibling::w:tc) + 1"/> <xsl:variable name="vMergeStart" select="w:tcPr/w:vMerge/@w:val = 'restart' or (w:tcPr/w:vMerge and not(@w:val))"/> <xsl:variable name="rowspan"> <xsl:choose> <xsl:when test="$vMergeStart"> <xsl:call-template name="calculateRowspan"> <xsl:with-param name="currentRow" select="../following-sibling::w:tr"/> <xsl:with-param name="columnPos" select="$pos"/> <xsl:with-param name="count" select="1"/> </xsl:call-template> </xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:variable> <td> <xsl:if test="$rowspan > 1"> <xsl:attribute name="rowspan"> <xsl:value-of select="$rowspan"/> </xsl:attribute> </xsl:if> </td> </xsl:template> <xsl:template name="calculateRowspan"> <xsl:param name="currentRow"/> <xsl:param name="columnPos"/> <xsl:param name="count"/> <xsl:choose> <xsl:when test="$currentRow[1]/w:tc[position() = $columnPos]/w:tcPr/w:vMerge"> <xsl:call-template name="calculateRowspan"> <xsl:with-param name="currentRow" select="$currentRow[position() > 1]"/> <xsl:with-param name="columnPos" select="$columnPos"/> <xsl:with-param name="count" select="$count + 1"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$count"/> </xsl:otherwise> </xsl:choose> </xsl:template>我这个word的xml转xls-fo的xlst样式表,且xsl和xml版本均为1.0,表格处理这块不能用,设计行或者列单元格合并有问题,请修改完善,一定要注意这是word的xml转xls-fo的xlst样式表,且xsl和xml版本均为1.0,请直接给出修改结果
最新发布
03-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值