Subject: [xsl] Somewhat Comlex XSL matching context node to an ancestor node From: Derek Doerr <ddoerr@xxxxxxxxx> Date: Sun, 28 Apr 2002 15:13:27 -0700 (PDT) |
I'm working with an XML file that is structured as follows: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="class_teams1.xsl"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="class.xsd"> <teams> <team id="1"> <student_id>1</student_id> <student_id>3</student_id> </team> <team id="2"> <student_id>2</student_id> </team> </teams> <students> <student id="1"> <name> <first_name>john</first_name> <surname>doe</surname> </name> <email>jdoe@xxxxxxxxx</email> </student> <student id="2"> <name> <first_name>john</first_name> <surname>public</surname> </name> <email>jpublic@xxxxxxxxx</email> </student> <student id="3"> <name> <first_name>jane</first_name> <surname>austin</surname> </name> <email>jaustin@xxxxxxxxx</email> </student> </students> </root> What I want to do is to use XSL to create a table that has one row per class "team". In the first cell, show the team number (the team 'id'). In the second cell, show the names of the students in the team (e.g. "john doe"). Here is the XSL that I have so far: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="/"> <xsl:for-each select="root"> <table border="1" cellpadding="1" cellspacing="1" width="100%"> <tr> <td>Team #</td> <td>Students</td> </tr> <xsl:for-each select="teams//team"> <tr> <td> <xsl:value-of select="@id"/> </td> <td> <!-- this node in the processing is where I start running into problems.... From here I need to match the student_id value to the id attribute of a student element --> <xsl:for-each select="/descendant::student[@id=self::student_id']/child::name"> <xsl:apply-templates> <xsl:value-of select="surname"/> </xsl:apply-templates> <br/> </xsl:for-each> <!-- student_id --> </td> </tr> </xsl:for-each> <!-- each team within teams--> </table> </xsl:for-each> <!-- root --> </xsl:template> </xsl:stylesheet> The structure of the XML doc basically lets me avoid having to "hard code" <student> elements into <team> elements, making maintenance of the XML easier. Problem is that the XSL is much more difficult! Thanks! - Derek __________________________________________________ Do You Yahoo!? Yahoo! Health - your guide to health and wellness http://health.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] unordered lists from xml , G. Ken Holman | Thread | Re: [xsl] Somewhat Comlex XSL match, G. Ken Holman |
RE: [xsl] unordered lists from xml , Michael Kay | Date | Re: [xsl] Fwd: Over/under trimming , Mike Brown |
Month |