This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

document() merge DISTINCT


Hallo;

I have some input files  with the /person/@id attribute being unique in each
file (and /project).

input.xml
--------------------------------------------------------------
<project name="some-name">
    <person id="1" name="name1"/>
    <person id="5" name="other-name"/>
    <preson id="20" name ="another-name"/>
</project>
------------------------------------------------

I want to merge these files so that I get a list of all <person> that are in
any <project> but the preson/@id should be unique, that is, no <person>
element should be listed twice.

In the book 'XSLT' from Dough Tidwell (chapter 7) there is an example that
works but is using a lot of disk reads and deep recursion.
It goes like this:

1: build a variable var1 as a white-space separated sorted list of all @id .
(using <xsl:for-each select="document(...)"..../> )
2: build a variable var2 of unique @id from  var1 (by recursion);
3: with var2 call a template that  calls <xsl:for-each select=
"document(....)"../> for each id in var2 and produces the output.

Is there a better way to do this?

-Alex
asc@ala.de




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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]