Subject: [xsl] with-param looping problem... From: Robert Wilkins <wilkins.robert@xxxxxxxxxxx> Date: Fri, 6 Oct 2006 17:44:22 -0400 |
<Project> <Tasks> <Task> <UID>1</UID> <ID>1</ID> <Name>Do something</Name> </Task> <Task> <UID>2</UID> <ID>2</ID> <Name>Do something else</Name> </Task> <Task> <UID>3</UID> <ID>3</ID> <Name>Do everything else</Name> </Task> <Task> <UID>4</UID> <ID>4</ID> <Name>A job</Name> </Task> <Task> <UID>5</UID> <ID>5</ID> <Name>A biggger job</Name> </Task> <Task> <UID>6</UID> <ID>6</ID> <Name>the biggest job</Name> </Task> </Tasks> <Resources> <Resource> <UID>1</UID> <ID>1</ID> <Name>Tom</Name> </Resource> <Resource> <UID>2</UID> <ID>2</ID> <Name>Dick</Name> </Resource> <Resource> <UID>3</UID> <ID>3</ID> <Name>Harry</Name> </Resource> </Resources> <Assignments> <Assignment> <UID>1</UID> <TaskUID>1</TaskUID> <ResourceUID>1</ResourceUID> </Assignment> <Assignment> <UID>2</UID> <TaskUID>2</TaskUID> <ResourceUID>2</ResourceUID> </Assignment> <Assignment> <UID>3</UID> <TaskUID>3</TaskUID> <ResourceUID>3</ResourceUID> </Assignment> <Assignment> <UID>4</UID> <TaskUID>4</TaskUID> <ResourceUID>1</ResourceUID> </Assignment> <Assignment> <UID>5</UID> <TaskUID>5</TaskUID> <ResourceUID>2</ResourceUID> </Assignment> <Assignment> <UID>6</UID> <TaskUID>6</TaskUID> <ResourceUID>3</ResourceUID> </Assignment> </Assignments> </Project>
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <xsl:key name="task" match="Task" use="UID"/> <xsl:key name="job" match="Assignment" use="TaskUID"/> <xsl:key name="worker" match="Resource" use="UID"/>
<html> <head></head> <body> <xsl:for-each select="//Task"> <xsl:for-each select="key('task',UID)"> <tr> <td> <xsl:value-of select="key ('task',UID)/Name"/> </td> <td> <xsl:value-of select="key ('task',UID)/UID"/> </td> <td> <xsl:call-template name="get-uid"> <xsl:with-param name="rid" select="key('task',UID)/ResourceUID"/> </xsl:call-template> </td> </tr> </xsl:for-each> </xsl:for-each> </body> </html> </xsl:template>
<xsl:template name="get-uid"> <xsl:param name="rid"/> <xsl:call-template name="get-name"> <xsl:with-param name="rid"/> </xsl:call-template> </xsl:template>
<xsl:template name="get-name"> <xsl:param name="rid"/> <xsl:value-of select="key('worker',UID)/Name"/> </xsl:template> </xsl:stylesheet>
<html> <head> </head> <body> <tr> <td>Do something</td> <td>1</td> <td>Tom</td> </tr> <tr> <td>Do something else</td> <td>2</td> <td>Dick</td> </tr> <tr> <td>Do everything else</td> <td>3</td> <td>Harry</td> </tr> <tr> <td>A job</td> <td>4</td> <td></td> </tr> <tr> <td>A biggger job</td> <td>5</td> <td></td> </tr> <tr> <td>the biggest job</td> <td>6</td> <td></td> </tr> </body> </html>
I can't figure out why this only retrieves the names the first time around. I sure would appreciate some help. My thanks in advance.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] working out where the las, Robert Walpole | Thread | RE: [xsl] with-param looping proble, Michael Kay |
Re: [xsl] HTML-diff, Mukul Gandhi | Date | RE: [xsl] with-param looping proble, Michael Kay |
Month |