You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by "alapati.sasi" <al...@gmail.com> on 2007/04/04 20:47:28 UTC

Performance Issue

Hi All,

i need to transform a big source xml into target xml . My source xml comes
with the namespace prefix and my xsl doesnt contain any prefixes for xpath.

its very difficult to change all the xpath's at run time for me .

i have two options
1) First change the source xml to another xml file using 

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
  <xsl:element name="{local-name()}">
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>
</xsl:stylesheet>

this template .This will remove all the prefix bindings .
Now apply my original style sheet .I Will get the target xml.
Is this cause me performace hit ? 
Is it better to do like this or Is it better to have local-name() in the
stylesheet itself so that there is no additinal transformation required .
But if i use local-name() for all the xpath's i heard that processing time
will take more time ?
which one is better?

can any one guild me as i need this immediately.

Thanks & Regards,
SASI.a
-- 
View this message in context: http://www.nabble.com/Performance-Issue-tf3527549.html#a9843176
Sent from the Xalan - J - Users mailing list archive at Nabble.com.


Re: Performance Issue

Posted by "alapati.sasi" <al...@gmail.com>.
Hi Henry,
Good Morning .
i have done a little programming on this .

i have a source xml without any namespace bindings and prefixes. i have a
xsl stylesheet to transform this source xml . 

i am directly transforming it . for 10000 requests its taking some 548 sec's
to transform all the 10000 .

Now i modified the same source xml . Now the source xml contains namespace
bindings . Now my stylesheet will not work . 
So i changed my java code so that it will take the source xml first and then
apply the stylesheet which whill remove namespace bindings from source xml 
.Now this removed all the namespace bindings & prefixes.Now i applied my
original stylesheet. for 10000 requests its taking nearly 553 sec's now .

but what i thought was it will take more time in the second approach than in
first bcoz we are doing one more additional step here for removal of
namespace. But the results are not like that .

i dont know why both have taken same time . can you please tell me the
reason if you know ? Any way i am using xalan to transform the xml.

Now i am in a confusion why the second one with one more step more have
taken same time as of first ??????
Any Idea on how xalan internal performance .
The solution is fine but i need to explain the solution to managers then
immediate question will be what abt performance and why performance is same
if you are using one more extra transformation for each request . Any Xalan
developer if you know the answer let me know yaar .
Thanks Henry for you valuable reply.

Thanks & Regards
Sasi.A

Henry Zongaro wrote:
> 
> Hello.
> 
> "alapati.sasi" <al...@gmail.com> wrote on 2007-04-04 02:47:28 PM:
>> i need to transform a big source xml into target xml . My source xml 
> comes
>> with the namespace prefix and my xsl doesnt contain any prefixes for 
> xpath.
>> 
>> its very difficult to change all the xpath's at run time for me .
>> 
>> i have two options
>> 1) First change the source xml to another xml file using 
> 
> [HZ:  Removed stylesheet to create copy using just local names, no 
> namespaces]
> 
>> this template .This will remove all the prefix bindings .
>> Now apply my original style sheet .I Will get the target xml.
>> Is this cause me performace hit ? 
>> Is it better to do like this or Is it better to have local-name() in the
>> stylesheet itself so that there is no additinal transformation required 
> .
>> But if i use local-name() for all the xpath's i heard that processing 
> time
>> will take more time ?
> 
> You're right that using a path expression like "*[local-name()='foo']" 
> will not perform as well as using the expression "foo" or "p:foo".  My 
> instinctive reaction is that your other alternative of using a 
> preprocessing stylesheet that strips out namespaces will probably perform 
> worse.  If the input to a stylesheet is very large, the time spent 
> constructing the input data model and serializing the result (assuming 
> that that is about as large) often dominates the performance; in this 
> case, you would be doing all of that twice.  However, it really depends on 
> your particular XML and XSL.  Your best bet would probably be to prototype 
> both solutions, and see how they perform for your particular.
> 
> If you're using the SAX API to deliver your XML to your stylesheet, 
> another option might be to apply some filtering of the SAX events that 
> removes namespace declarations, and changes element and attribute names to 
> equivalent, non-namespaced names.
> 
> I hope that helps you with your decision.
> 
> Thanks,
> 
> Henry
> ------------------------------------------------------------------
> Henry Zongaro      XSLT Processors Development
> IBM SWS Toronto Lab   T/L 969-6044;  Phone +1 905 413-6044
> mailto:zongaro@ca.ibm.com
> 
> 

-- 
View this message in context: http://www.nabble.com/Performance-Issue-tf3527549.html#a9904384
Sent from the Xalan - J - Users mailing list archive at Nabble.com.


Re: Performance Issue

Posted by Henry Zongaro <zo...@ca.ibm.com>.
Hello.

"alapati.sasi" <al...@gmail.com> wrote on 2007-04-04 02:47:28 PM:
> i need to transform a big source xml into target xml . My source xml 
comes
> with the namespace prefix and my xsl doesnt contain any prefixes for 
xpath.
> 
> its very difficult to change all the xpath's at run time for me .
> 
> i have two options
> 1) First change the source xml to another xml file using 

[HZ:  Removed stylesheet to create copy using just local names, no 
namespaces]

> this template .This will remove all the prefix bindings .
> Now apply my original style sheet .I Will get the target xml.
> Is this cause me performace hit ? 
> Is it better to do like this or Is it better to have local-name() in the
> stylesheet itself so that there is no additinal transformation required 
.
> But if i use local-name() for all the xpath's i heard that processing 
time
> will take more time ?

You're right that using a path expression like "*[local-name()='foo']" 
will not perform as well as using the expression "foo" or "p:foo".  My 
instinctive reaction is that your other alternative of using a 
preprocessing stylesheet that strips out namespaces will probably perform 
worse.  If the input to a stylesheet is very large, the time spent 
constructing the input data model and serializing the result (assuming 
that that is about as large) often dominates the performance; in this 
case, you would be doing all of that twice.  However, it really depends on 
your particular XML and XSL.  Your best bet would probably be to prototype 
both solutions, and see how they perform for your particular.

If you're using the SAX API to deliver your XML to your stylesheet, 
another option might be to apply some filtering of the SAX events that 
removes namespace declarations, and changes element and attribute names to 
equivalent, non-namespaced names.

I hope that helps you with your decision.

Thanks,

Henry
------------------------------------------------------------------
Henry Zongaro      XSLT Processors Development
IBM SWS Toronto Lab   T/L 969-6044;  Phone +1 905 413-6044
mailto:zongaro@ca.ibm.com