XSLT_For LOOP _从循环退出 [英] XSLT_For LOOP _exiting from the loop

查看:83
本文介绍了XSLT_For LOOP _从循环退出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的输入XML:

My input XML :

<Apartment>
<Room number="1"  length="15" Height = "12"/>
<Room number="1"  length="17" Height = "13"/>
<Room number="1"  length="13" Height = "19"/>
<Room number="2"  length="15" Height = "12"/>
<Room number="2"  length="13" Height = "15"/>
</Apartment>

Required Output XML should be


<Room>
<Number>1</Number>
<SizeList>
<Size>
<length>15</length>
<Height>12</Height>
</Size>
<Size>
<length>17</length>
<Height>13</Height>
</Size>
<Size>
<length>13</length>
<Height>19</Height>
</Size>
</SizeList>
<Number>2</Number>
<SizeList>
<Size>
<length>15</length>
<Height>12</Height>
</Size>
<Size>
<length>13</length>
<Height>15</Height>
</Size>
</SizeList>
</Room>




我用了两个for循环来实现




I Used two for loops to achieve this

<xsl:for-each select="//Room>
<Number>
<xsl:value-of select="@Number"/>
// assigning value number to value
<xsl:variable name="val" select="@Number"/>
</Number>
<xsl:for-each select="//Room>
//checking if variable value and number are equal
<xsl:if test="$val = @Number">
<xsl:value-of select="@length"/>
<xsl:value-of select="@height"/>
</xsl:for-each>
</xsl:for-each>





但是当我为房间号= 1计算时,sizelist应该是2,但是我得到4个输出,如下所示





but when I excute it for room number = 1 the sizelist should be two but I get 4 outputs like below

<Room>
<Number>1</Number>
<SizeList>
<Size>
<length>15</length>
<Height>12</Height>
</Size>
<Size>
<length>17</length>
<Height>13</Height>
</Size>
<Size>
<length>13</length>
<Height>19</Height>
</Size>
</SizeList>


<Room>
<Number>1</Number>
<SizeList>
<Size>
<length>15</length>
<Height>12</Height>
</Size>
<Size>
<length>17</length>
<Height>13</Height>
</Size>
<Size>
<length>13</length>
<Height>19</Height>
</Size>
</SizeList>




请帮助我如何实现所需的输出.




please help how can i achieve the required output .

推荐答案

val = @ Number" < xsl:value-of 选择 =" / > < xsl:value-of 选择 =" / > < /xsl:for-each > < /xsl:for-each >
val = @Number"> <xsl:value-of select="@length"/> <xsl:value-of select="@height"/> </xsl:for-each> </xsl:for-each>





但是当我为房间号= 1计算时,sizelist应该是2,但是我得到4个输出,如下所示





but when I excute it for room number = 1 the sizelist should be two but I get 4 outputs like below

<Room>
<Number>1</Number>
<SizeList>
<Size>
<length>15</length>
<Height>12</Height>
</Size>
<Size>
<length>17</length>
<Height>13</Height>
</Size>
<Size>
<length>13</length>
<Height>19</Height>
</Size>
</SizeList>


<Room>
<Number>1</Number>
<SizeList>
<Size>
<length>15</length>
<Height>12</Height>
</Size>
<Size>
<length>17</length>
<Height>13</Height>
</Size>
<Size>
<length>13</length>
<Height>19</Height>
</Size>
</SizeList>




请帮助我如何实现所需的输出.




please help how can i achieve the required output .


这篇关于XSLT_For LOOP _从循环退出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆