Hello.

"alapati.sasi" <[EMAIL PROTECTED]> 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:[EMAIL PROTECTED]

Reply via email to