xsl-list
[Top] [All Lists]

Re: grouping references so that they only appear once

2003-05-29 04:40:27
At 2003-05-28 16:01 -0700, Rick Geimer wrote:
I have a grouping problem that I am hoping someone can help me with.
Imagine that I am transforming the following instance, and that I am
currently processing the category element with  the id "shoes".
...
      <makers>
            <maker id="nike">Nike</maker>
            <maker id="rebok">Rebok</maker>
      </makers>
...
      <products>
            <product>
...
                  <makerRef idref="nike"/>
            </product>
            <product>
...
                  <makerRef idref="nike"/>
            </product>
            <product>
...
                  <makerRef idref="rebok"/>
...
I want to get a list of all the makers that have products that reference
the shoes category, but I don't want a single maker to appear more than
once. I have been able to use keys to gather a list of products that
reference a category, and from there I can get the makerRefs, and with
another set of keys I can then get the makers, but I can't see how to
ensure that each maker is only listed once since multiple products
reference the same makers.

It is unclear to me why you are getting duplicate <maker> elements from your key() access using the <makerRef> ... because in XPath 1.0 the node set returned from your use of key() won't have duplicate nodes.

I agree that if you try to process the <makerRef> nodes, you will have duplicates ... but you said you are using "another set of keys" to get the <makers>. Assuming you have a variable of the <makerRef> elements, the function key( 'makersById', $makerRefs/@idref ) would only return 2 nodes, not three, because the three reference address only two unique nodes.

You'll have to show how your code is producing multiple <maker> elements since your prose description wouldn't appear to support the evidence.

I hope this helps.

....................... Ken

--
Upcoming hands-on courses: (registration still open!)
-      (XSLT/XPath and/or XSL-FO) North America: June 16-20, 2003

G. Ken Holman                mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd.         http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0   +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                      Definitive XSLT and XPath
ISBN 0-13-140374-5                              Definitive XSL-FO
ISBN 1-894049-08-X  Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X              Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:    http://XMLGuild.info
Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>