WebSphere Message Broker, Version 8.0.0.7
Operating Systems: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS
See information about the latest product version
See information about the latest product version
XPath and XSLT code tips
You can improve message flow performance with XPath and XSLT by using some optimization techniques.
Before you start:
Read the following
topics:
You can improve the performance
of XPath by explicitly specifying the number of instances that are
required. For example:
- /element[1] finds the first occurrence of the element and then stops
- /element[2] finds the second occurrence of the element and then stops
- /element returns a node set of all instances in the message, which involves a full parse of the message
For more information about techniques that you can use to optimize your XML code, see Top 10 tips for using XPath.
XSLT has advantages in terms of its potential for code reuse, and caching is available for loaded stylesheets in WebSphere® Message Broker. However, the stylesheet requires a BLOB as input and produces a BLOB as output, and it is less efficient than ESQL and Java™ in terms of interaction with the message tree. When it is used mid-stream with other WebSphere Message Broker technologies, it results in increased message parsing and serialization.
You
can optimize the performance of your XSLT code by using a templates
object (with different transformers for each transformation) to do
multiple transformations with the same set of stylesheet instructions.
You can also improve the efficiency of your stylesheets, by using
the following techniques:
- Use xsl:key elements and the key() function as an efficient way to retrieve node sets
- Where possible, use pattern matching rather than xsl:if or xsl:when statements
- Avoid the use of "//" (descendant axes) patterns near the root of a large document
Also consider the following points:
- When you are creating variables, <xsl:variable name="abcElem" select="abc"/> is usually faster than <xsl:variable name="abcElem"><xsl:value-of-select="abc"/></xsl:variable>
- xsl:for-each is fast because it does not require pattern matching
- xsl:sort prevents incremental processing
- Use of index predicates within match patterns can be costly in terms of performance
- Decoding and encoding are costly in terms of performance
- If the XSLT is cached, the performance is improved because the XSLT is not parsed every time it is used; for more information, see XSLTransform node