FYI, the transformation that uses keys is only slightly
slower than the recursive transformation. With the same
source xml it takes 1151ms.
This means that the results of my experiments significantly
contradict your findings. Maybe you didn't use exactly the
same transformation or are using an older version of Xalan?
Yes, Xalan-J 2.4.1 is *significantly* faster than 2.4.0
using the key method. However, our findings don't really
contradict because you are using far fewer continuation
records than I am.
Here is my summary of the various methods
with some Xalan processors (values in seconds) using
Dimitre's stylesheets. I probably would get similar
behavior, though almost certainly faster timings with
Saxon, et al.):
Method 2.4.0 2.4.1 2.5.2
------------------------------------------------------------
Recursive
200 records 1.1 1.1 1.6
1000 records 2.8 2.5 5.8
2000 records StackOv StackOv Partial Output
(No Exception!)
Key
200 records 120 2.7 2.7
1000 records dnf 21 20
2000 records dnf 69 68
Generate-Id
200 records 1.8 1.8 1.8
1000 records 17 17 18
2000 records 59 65 61
So all of the methods except recursion exhibit exponential
behavior with an increase in continuation records except
recursion.
So if there is a way to do solve this problem recursively
that would avoid the stack overflow errors (2.5.2 doesn't
even do you the courtesy of throwing an exception -- it
just dies in the middle of the transformation), that would
still be by far the best solution.
Cheers,
Raman Gupta
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list