Subject: Re: [xsl] simplifying the XSL for an intersection From: Joerg Heinicke <joerg.heinicke@xxxxxx> Date: Wed, 15 Jan 2003 02:09:34 +0100 |
<Item iID="1"> <RoleLink iRoleID="X"/> <RoleLink iRoleID="A"/> </Item>
<Role roleID="A"> <PlayerLink player="1"/> <PlayerLink player="3"/> </Role>
Your expression was: <xsl:variable name="matrixroles" select="$matrix/Role[@roleID = $matrix/Item/RoleLink/@iRoleID [../../RoleLink/@iRoleID = $playerroles/@roleID]]"/>
rewritten: <xsl:variable name="matrixroles" select="$matrix/Role[@roleID = $matrix/Item [RoleLink/@iRoleID = $playerroles/@roleID]/RoleLink/@iRoleID]"/>
Hi All,
I am trying to get a set of nodes that is really an intersection and would appreciate some ideas for a solution.
What I need is the set of Matrix/Role nodes, that contains all of Roles for Items where $player is in at least one of the Roles for that Item.
For example, if I have a variable $player = '53', I should get the set of Roles where roleID = {W,X,Y}, because 53 is in W and Y, and although 53 is not in X, that Role is in at least one Item that also has roles W and Y. Also, 53 is in Role Z, but that Role does not belong to any Item so it is not included.
I have a solution that works, but I was wondering if there is a simpler way to express this.
<xsl:variable name="player" select="53"/> <xsl:variable name="matrix" select="document('matrix.xml')"/> <xsl:variable name="playerroles" select="$matrix/Matrix/Role[PlayerLink/@player=$player]"/> <xsl:variable name="matrixroles" select="$matrix/Matrix/Role[@roleID=$matrix/Matrix/Item/RoleLink/@iRoleID[.. /../RoleLink/@iRoleID=$playerroles/@roleID]]"/>
<Matrix> <Role roleID="W"> <PlayerLink player="1"/> <PlayerLink player="3"/> <PlayerLink player="6"/> <PlayerLink player="53"/> </Role> <Role roleID="X"> <PlayerLink player="1"/> <PlayerLink player="3"/> </Role> <Role roleID="Y"> <PlayerLink player="1"/> <PlayerLink player="3"/> <PlayerLink player="51"/> <PlayerLink player="53"/> </Role> <Role roleID="Z"> <PlayerLink player="3"/> <PlayerLink player="53"/> </Role>
<Item iID="123"> <RoleLink iRoleID="W"/> <RoleLink iRoleID="X"/> <RoleLink iRoleID="Y"/> </Item>
<Item iID="456"> <RoleLink iRoleID="X"/> <RoleLink iRoleID="Y"/> </Item>
<Item iID="789"> <RoleLink kgRoleID="Y"/> </Item> </Matrix>
Thanks very much, Leona Slepetis lrs@xxxxxxxxxxxx
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
[xsl] simplifying the XSL for an in, leona s | Thread | Re: [xsl] simplifying the XSL for a, leona s |
RE: [xsl] Converting PST to GMT., Joshua Allen | Date | [xsl] DTD copy, xxx |
Month |