&nbs= p; Thanks for the reply.
Now I have changed my XSL not to = use any current function. But it may not fix my problem and I need to consider = your suggestion to do partition, i.e. having multiple TransformerFactory or Configurations each for the type of input XML file (we have total 6 = document types).
But I am doing my investigation = on why it has failed with the new Saxon-8.9 (I know my XSL still has current = function in it)? If I run this on a standalone program this is what I see in = NamePool (Please look at attached NamePool_stack.txt) for a single run. I can see = Saxon had generated 6 new local names in to the NamePool for each current = function in my XSL file.
Fingerprint = 0/244
local name =3D = current1358189313 uri code =3D 3
Fingerprint = 0/277
local name =3D = current-2068589611 uri code =3D 3
Fingerprint = 0/369
local name =3D = current-1417755902 uri code =3D 3
Fingerprint = 0/411
local name =3D = current-1429450828 uri code =3D 3
Fingerprint = 0/741
local name =3D = current1868763253 uri code =3D 3
Fingerprint = 0/997
local name =3D = current2025214189 uri code =3D 3
If this is TRUE then, if I run = this program in a loop of say 20,000 times Saxon will generate 20,000x6 =3D = 120,000 new element names in to the NamePool. How long or how many elements do = this NamePool can accommodate before it say “NamePool is full”? I = know it also depends on number of elements in my input XML = files.
Thanks for all your = help.
[mailto:email@example.com] On Behalf Of Michael Kay
Sent: Saturday, July 14, = 2007 5:35 AM
Subject: Re: [saxon] Any = thoughts about this Exception 'Saxon = namepoolisfull'??
The problem with current() will be = fixed in 9.0, but it's not fixed in 8.9.
I think the method to dump the = namePool still works in 8.9, but by default Saxon no longer uses a static = NamePool, it uses one per Configuration, so you will have to connect to the = Configuration to select the namepool it is using before you can use this = method.
If you can partition your workload = so that it uses multiple NamePools then this is probably still worth doing. = Using a new Configuration/NamePool for each transformation, however, is probably = going a bit too far the other way.
Michael = Kay
From: firstname.lastname@example.org [mailto:email@example.com] On Behalf Of Kusunam, Srinivas
Sent: 14 July 2007 = 00:14
Mailing list for SAXON XSLT queries
Subject: Re: [saxon] Any = thoughts about this Exception 'Saxon namepool = isfull'??
If = you remember previous conversations you said this “NamePool” = issue is fixed is latest Saxon-8.9. We did not change our XSL the way you = suggested as we put it on hold for next release. We thought this new Saxon = implementation should fix it but we got this problem again after 3 months in = production.
1) Is this current() function in XSL is still a problem with Saxon-8.9? As you know it was generating following entries in Saxon-8.0
Fingerprint = 7/1021
local name =3D current-2066122411 = uri code =3D 3
Fingerprint = 8/1021
local name =3D current1856704867 = uri code =3D 3
Fingerprint = 9/1021
local name =3D current1858944729 = uri code =3D 3
Fingerprint = 10/1021
local name =3D current1855126447 = uri code =3D 3
Fingerprint = 11/1021
local name =3D current1359914837 = uri code =3D 3
Fingerprint = 12/1021
2) How can I print these FingerPrint statements in Saxon-8.9? As you know in Saxon-8.0 if you say “NamePool.getDefaultNamePool().diagnosticDump()= ” it will print actual contents of the NamePool (above statements) but in Saxon-8.9 it is not printing these = contents?
3) Do you still suggest on using my own NamePool = instead of default one for every transformation?
Thanks for your time.
Michael = Kay <firstname.lastname@example.org> wrote:
From: = "Michael Kay" <email@example.com>
To: "'Kunnummal Naheed Madathummal'" <
Subject: RE: [saxon] Any thoughts about this Exception 'Saxon = namepoolisfull'??
Date: Fri, 23 Mar 2007 12:37:13 -0000
Sorry about the delay in responding = to this. I think the performance difference is because on line 31 you = replaced
whereas the correct replacement = is
<xsl:copy-of = select=3D".//namespace::*"/>
As the element in question has no = element children, there's a substantial difference between finding the namespace = nodes for this element and finding those for every element in the document. In = fact, because the element has no element descendants (and if if it did, I = doubt you would be interested in their namespaces) the expression could just be = written <xsl:copy-of = select=3D"namespace::*"/>
Could I make a few other comments = about your code?
Line = 21
would be better written = as
<xsl:variable name=3D"transactionNodeName = select=3D"name(..)"/>
It's never a good idea to create a = result tree fragment when you only need a string.
Line = 25:
I don't think you need to copy the transactionNode, you only need a reference to it. Replace = by
<xsl:variable name=3D"transactionNode" = select=3D".."/>
More generally, I wonder why you = are doing all the processing in a template for = match=3D"xdd:RecordSequenceNumber" when the focus of the processing seems to be its parent element vr:DCNRegistration? Why go down further than you need to and then step = back up again?
Line 48, = again
is much less efficient = than
<xsl:variable name=3D"serviceName" select=3D"../../@svc:Name"/>
(although Saxon tries very hard to optimize it)
There are other bits of the code I = don't understand, presumably because there's stuff in your real data files = that isn't in these samples.
Michael = Kay
Saxonica = Limited
**********************************************= *******************This = message has originated from RLPTechnologies, =
34405 W 12 Mile Road, Suite = 343, Farmington Hills, MI 48331. =If you do = not wish to receive further e-mails regarding =RLPTechnologies, please forward this e-mail = to Do_Not_Send@rlpt.comwith the = word "remove" in the subject = line.
This = e-mail message and any files transmitted with it are =confidential and intended solely for the = individual or entity towhom they = are addressed. If you have received this message in =error, = please delete this message and notify the RLPTechnologies =System = Administrator at = firstname.lastname@example.org.**********************************************= *******************