|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Problems selecting the right nodes.
Thanks everyone for your help.
It seems that I made something unclear. The nodeset that I'm working with is a subset of my data. This adds a significant level of complexity to the problem. Micheal's suggestion of testing count(key(...)) != count(/*/branch) is great except that key returns too many elements since it takes in the whole document, not my subset. This makes things more difficult. What I have, so far comes from Steven's suggestion (You'll notice that I added the region tag to demostrate the filtering): <xsl:template match="/"> <xsl:variable name="filtered-branches" select="branches/branch[region/@id ='region5']"/> <xsl:variable name="unique-services" select="/branches/branch/service[generate-id(.) = generate-id(key('service',@id))]"/> <xsl:variable name="filtered-unique-services" select="$unique-services[@id = $filtered-branches/service/@id]"/> <xsl:variable name="rtf-selectable-services"> <xsl:apply-templates select="$filtered-unique-services"> <xsl:with-param name="branches" select="$filtered-branches"/> </xsl:apply-templates> </xsl:variable> <!-- I had trouble where xalan:nodeset($rtf-selectable-services) returned only 1 node so I did this just to make sure I got the elements I wanted --> <xsl:variable name="selectable-services" select="xalan:nodeset($rtf-selectable-services)/descendant-or-self::service"/> <!-- ok do real work, now, counting is a good substitute --> <xsl:value-of select="count($selectable-services)"/> </xsl:template> <xsl:template match="service" mode="getselectable"> <xsl:param name="branches"/> <xsl:if test="$branches[not(service/@id = current()/@href)]"> <xsl:copy-of select="."/> </xsl:if> </xsl:template> So this works. However, in my real problem, which this is a simplification of, I have two elements which I need to do this for. So I am beginning to wonder if its better to do this twice, which is a little messy already, or to take my filtered branches, call nodeset on those and then take Michael's suggestion. However, then I have the problem of changing the current node to be my filtered nodeset and keeping that variable around Any more thoughts? Adam Michael Kay wrote: But this is an O(n^2) solution and doesn't remove the duplicates... XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|

Cart








