bothwell Posted October 10, 2009 Share Posted October 10, 2009 N00b to XSLT - can't quite figure out how this loop works. The code below returns the first result from <photos> rather than all three from the node. How can I return all of the results in a loop? XML: <properties> <property> <propertyID>135427</propertyID> <photos> <photo>/proppics/594/picture_130428_1.gif</photo> <photo>/proppics/594/picture_130428_2.gif</photo> <photo>/proppics/594/picture_130428_3.gif</photo> </photos> </property> </properties> XSLT: <xsl:template match="/"> <xsl:for-each select="properties/property[propertyID=$id]"> <tr> <th><xsl:value-of select="ShortAddress1"/>, <xsl:value-of select="Area"/>, <xsl:value-of select="City"/>, <xsl:value-of select="Postcode"/></th> </tr> <tr> <td> <xsl:element name="allpics"> <xsl:call-template name="pics"></xsl:call-template> </xsl:element> </td> </tr> </xsl:for-each> </xsl:template> <xsl:template match="photos" name="pics"> <xsl:for-each select="photos"> <p><xsl:value-of select="photo"/></p> </xsl:for-each> </xsl:template> Thanks for any help! Quote Link to comment https://forums.phpfreaks.com/topic/177243-looping-in-xslt/ Share on other sites More sharing options...
bothwell Posted October 11, 2009 Author Share Posted October 11, 2009 Resolved. The answer is to use a dot as the select value rather than the node title (while selecting the parent node of the one you want to loop ). <xsl:template match="photos" name="pics"> <xsl:for-each select="photos/photo"> <xsl:sort select="photo"/> <p>[i][b][u]<xsl:value-of select="."/>[/u][/b][/i]</p> </xsl:for-each> </xsl:template> Quote Link to comment https://forums.phpfreaks.com/topic/177243-looping-in-xslt/#findComment-934881 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.