[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Joining xml documents on the fly
Ok, I'm in totally over my head here. I'm hoping someone can help me out.
I've got 2 external (reference) documents I'm including into my stylesheet. One is a list of staff. It looks like this (edited for brevity): <people> <staff staff_id="123456789" alpha_key="A" sort_key="AberyBrian"> <display_name>Brian H Abery</display_name> </staff> <staff staff_id="987654321" alpha_key="A" sort_key="AlbusDeb"> <display_name>Deb Albus</display_name> </staff> <staff staff_id="456321789" alpha_key="A" sort_key="AltmanJason"> <display_name>Jason R Altman</display_name> </staff> </people> And the other is the three way join between staff, projects and roles <project_staff_roles> <project_staff_role project_id="1" staff_id="123456789" role_id="staff"> <staff staff_id="123456789" alpha_key="A" sort_key="AberyBrian"> <display_name>Brian H Abery</display_name> </staff> </project_staff_role> <project_staff_role project_id="1" staff_id="123456789" role_id="director"> <staff staff_id="123456789" alpha_key="A" sort_key="AberyBrian"> <display_name>Brian H Abery</display_name> </staff> </project_staff_role> <project_staff_role project_id="2" staff_id="987654321" role_id="staff"> <staff staff_id="987654321" alpha_key="A" sort_key="AlbusDeb"> <display_name>Deb Albus</display_name> </staff> </project_staff_role> </project_staff_roles> I want to break this into two groups based on the current project_id. So if I'm viewing project_id=1 I want two groups of people Project Staff: <people> <staff staff_id="123456789" alpha_key="A" sort_key="AberyBrian"> <display_name>Brian H Abery</display_name> </staff> </people> Non-Project-Staff <people> <staff staff_id="987654321" alpha_key="A" sort_key="AlbusDeb"> <display_name>Deb Albus</display_name> </staff> <staff staff_id="456321789" alpha_key="A" sort_key="AltmanJason"> <display_name>Jason R Altman</display_name> </staff> </people> I've got the following variables in my document: <xsl:variable name="staff" select="document($ref_staff)/people"/> <xsl:variable name="staff_roles" select="document($ref_project_staff_role)/project_staff_roles/project_staff_role[@role_id='staff']"/> <xsl:variable name="project_staff" select="$staff_roles[@project_id=$[project_id]/staff"/> <xsl:variable name="non_project_staff" select="?????"/> How do I even go about thinking about this? I've tried googling it but I have no idea what to search on. I've tried various iterations of keys, etc but I just can't get it. The final xslt that gives the desired output is: <xsl:if test="count($project_staff) > 0"> <fieldset class="span-18 last col-wrap"> <legend class="quiet"> <xsl:value-of select="ancestor::project/associates/associate/title"/> People</legend> <xsl:call-template name="layout_3column"> <xsl:with-param name="objects" select="$project_staff"/> </xsl:call-template> </fieldset> </xsl:if> <xsl:if test="count($non_project_staff) > 0"> <fieldset class="span-18 last col-wrap"> <legend class="quiet">All Other People</legend> <div id="tabs"> <ul> <xsl:for-each select="$staff/staff/@alpha_key[generate-id()=generate-id(key('alpha', .))]"> <xsl:if test="count($non_project_staff[@alpha_key = current()]) > 0"> <xsl:call-template name="tab_link"> <xsl:with-param name="alpha_string" select="."/> </xsl:call-template> </xsl:if> </xsl:for-each> </ul> <xsl:for-each select="$staff/staff/@alpha_key[generate-id()=generate-id(key('alpha', .))]"> <xsl:if test="count($non_project_staff[@alpha_key = current()]) > 0"> <xsl:call-template name="tab_data"> <xsl:with-param name="alpha_string" select="."/> <xsl:with-param name="objects" select="$non_project_staff[@alpha_key = current()]"/> </xsl:call-template> </xsl:if> </xsl:for-each> </div> </fieldset> </xsl:if> I hope this is clear. Any help would be much appreciated. Thanks in advance. Joelle
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|