Click here to Skip to main content
15,888,286 members
Please Sign up or sign in to vote.
4.50/5 (2 votes)
See more:
My input XML :
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>



I Used two for loops to achieve this
XML
<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>




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

XML
<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>

XML
<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 .
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900