XSL for-each 总结

本文详细总结了XSL中的for-each语句用法,包括如何在XSL模板中遍历XML节点,实现数据的处理和转换。通过实例解析了其基本语法和常见应用场景。

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

<financialTransaction>
 <notionalChangeSupplementalData>
    <agreementDate>2013-04-28</agreementDate>
    <effectiveDate>2013-04-30</effectiveDate>
    <payment>
      <paymentAmount>
        <currency currencyScheme="http://www.fpml.org/ext/iso4217">USD</currency>
        <amount>100000</amount>
      </paymentAmount>
      <paymentDate>
        <adjustedDate>2004-04-30</adjustedDate>
      </paymentDate>
    </payment>
    <change>
    	<leg>Far</leg>
    	<changeInNotionalAmount>
    		<currency>USD</currency>
        <amount>14800000</amount>
    	</changeInNotionalAmount>
    </change>
    <change>
    	<leg>Near</leg>
    	<changeInNotionalAmount>
    		<currency>GBP</currency>
        <amount>10000000</amount>
    	</changeInNotionalAmount>   
    </change>    
    <outstanding>
    	<leg>Far</leg>
    	<outstandingNotionalAmount>
      	<currency>USD</currency>
        <amount>0</amount>
      </outstandingNotionalAmount>
    </outstanding>
    <outstanding>
    	<leg>Near</leg>
    	<outstandingNotionalAmount>
      	<currency>GBP</currency>
        <amount>0</amount>
      </outstandingNotionalAmount>
    </outstanding>
	</notionalChangeSupplementalData>
</financialTransaction>


上面为XML 源文件,要求把 leg = Far 的节点去掉。

方法一:  在 XSL 里添加,

<change>
				<xsl:for-each select="//notionalChangeSupplementalData/change">
					<xsl:if test="leg='Near'">						
							<xsl:apply-templates select="changeInNotionalAmount"/>					
					</xsl:if>
				</xsl:for-each>
			</change>

方法二: 在XSL 里添加,


			<outstanding>
				<xsl:for-each select="//notionalChangeSupplementalData/outstanding">
					<xsl:if test="leg='Near'">
						<xsl:apply-templates select="leg/following-sibling::*"/>
					</xsl:if>
				</xsl:for-each>
			</outstanding>

方法二 优于方法一, 它指的是leg 同级别的节点都可以包含时来;而方法一,取特定的节点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值