Mithilfe einiger Optimierungsverfahren können Sie die Leistung von Nachrichtenflüssen verbessern, in denen XPath-Ausdrücke und XSLT-Code verwendet wird.
Sie können die Leistung von XPath durch Angabe der Anzahl der erforderlichen Instanzen verbessern. Beispiel:
- Mit /element[1] wird nach Auffinden des ersten Elements die Suche gestoppt.
- Mit /element[2] wird nach Auffinden der zweiten Instanz des Elements die Suche gestoppt.
- Mit /element wird eine Knotengruppe aller Instanzen in einer Nachricht zurückgegeben, d. h., die Nachricht wird vollständig analysiert.
Weitere Informationen zu den Möglichkeiten, Ihren XML-Code zu optimieren, finden Sie unter Top
10 tips for using XPath.
XSLT hat den Vorteil, dass Code wiederverwendet werden kann und geladene Style-Sheets in WebSphere Message
Broker zwischengespeichert werden können. Für das Style-Sheet ist jedoch ein großes Binärobjekt (BLOB) als Eingabe erforderlich und auch bei der Ausgabe handelt es sich um ein großes Binärobjekt; außerdem ist XSLT hinsichtlich der Interaktion mit der Nachrichtenbaumstruktur weniger effizient als ESQL und Java™. Wird XSLT im Nachrichtenfluss zusammen mit anderen WebSphere Message
Broker-Technologien verwendet, führt dies zu mehr Nachrichtenanalysen und Serialisierungen.
Sie können die Leistung Ihres XSLT-Codes verbessern, indem Sie mithilfe eines Vorlagenobjekts (mit jeweils eigenen Umsatzprogrammen für die einzelnen Transformationen) mehrere Transformationen mit denselben Style-Sheet-Anweisungen durchführen.
Außerdem kann die Effizienz Ihrer Style-Sheets wie folgt verbessert werden:
- xsl:key-Elemente und die Funktion key() sind eine effiziente Möglichkeit, Knotengruppen abzurufen.
- Verwenden Sie nach Möglichkeit die Mustererkennung anstelle von xsl:if- oder xsl:when-Anweisungen.
- Vermeiden Sie die Verwendung von "//"-Mustern (descendant-Achsen) in den oberen Ebenen großer Dokumente.
Außerdem sollten Sie Folgendes berücksichtigen:
- Wenn Sie Variablen erstellen, erzielen Sie mit <xsl:variable name="abcElem"
select="abc"/> in der Regel ein schnelleres Ergebnis als mit <xsl:variable
name="abcElem"><xsl:value-of-select="abc"/></xsl:variable>.
- xsl:for-each ist schnell, da keine Mustererkennung erforderlich ist.
- xsl:sort verhindert eine inkrementelle Verarbeitung.
- Die Verwendung von Indexprädikaten in Mustererkennungen kann die Leistung beeinträchtigen.
- Decodieren und Codieren beeinträchtigen die Leistung.
- Durch Zwischenspeichern von XSLT-Code wird die Leistung verbessert, da der XSLT-Code nicht bei jeder Verwendung syntaktisch analysiert werden muss. Weitere Informationen finden Sie im Abschnitt XSLTransform-Knoten.