INFO: Verfahren zum Verbessern der Leistung von XSL-Transformationen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 815124 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Dieser Artikel listet einige Techniken zur Verbesserung der Leistung von Transformationen von XSL (Extensible Stylesheet Language). XSL ist eine funktionale Sprache. Features der common Language von XSL nicht unterstützt. Beispielsweise unterstützt XSL Rückgabewerte oder Globals nicht. XSL ist keine objektorientierte Sprache, und wird modulare Taktzyklen Kosten. Keine Debug für XSL verfügbar ist, daher das Debuggen schwierig wird.

Weitere Informationen

Leistung von eine XSL-Transformation ist abhängig von Szenarien, die Sie verwenden. In diesem Artikel aufgeführten Verfahren sind allgemeine Richtlinien. Stellen Sie sicher, dass die Ergebnisse der einzelnen optimieren messen. Nur testen kann, ob ein bestimmtes Verfahren die Leistung verbessert nachweisen. Sie können das Befehlszeilen-Dienstprogramm msxsl.exe für Tests und Befehlszeile XSL-Transformationen mit den Microsoft XSL-Prozessor durchgeführt verwenden. Das Dienstprogramm msxsl.exe ruft Microsoft XML Parser 4.0 (msxml4.dll) die Transformation ausführen. Sie können dieses Dienstprogramm herunterladen, von der folgenden MSDN-Website:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&DisplayLang=en

Techniken zur Verbesserung der Leistung

  • Identifizieren Sie die am häufigsten verwendeten Codepfade zum Rendern Ihrer Seiten und Optimieren Sie diese Pfade. Optimieren Sie die hochgradig wiederverwendet Abschnitte der XSL.
  • Verwenden Sie anstelle von Unterelemente, Attribute, möglichst. Verwendung von Attribute anstelle von Elementen verbessert die Leistung. Beim Ausführen von XPath Übereinstimmungen sind Attribute schneller, da diese lose typisiert sind. Dies erleichtert Überprüfung des Schemas.
  • Explizitere Pfade anstelle von "/ /" möglichst. Wenn XML-Daten groß ist, "/ /" rekursive Decedent Suche ist sehr teuer. Bestimmte XPath-Ausdruck schneller implementiert.
  • Wenn Sie mit dem Attributwerte übereinstimmen, verwenden Sie Enumerator Attribute. Verwenden Sie mehrere Attributnamen als Bits, und legen Sie deren Werte auf true oder false . Zum Beispiel:
    <element_name attr1="1" attr2="1" attr3="0">
  • Verwenden Sie keine Skripts. Mit einem Skript downgrades die Leistung.
  • Vergleichen Sie direkt durch den Namen zur Verbesserung der Leistung. Beispielsweise anstelle von den folgenden Code:
    ./info[type='title']
    verwenden Sie folgenden Code:
    ./title
    bei, anstelle von Namen wie folgt, Werte verglichen:
    Select="*[name()='sample']"
    verwenden Sie folgenden Code:
    Select="sample"
    aufgrund des Namespaces in XPath-Verarbeitung, sind diese nicht genau äquivalent.
  • Alle Versionen von MSXML, Version 3.0 und höher sind schneller mit den Filter explizite Index. Die Verbesserung der Leistung hängt von der Position des Elements in der Liste untergeordnete, der das übergeordnete Element. Anstatt die folgenden:
    /child_element
    verwenden Sie die folgenden:
    /child_element[1]
  • Verwenden Sie Parameter anstelle von Auswerten der Abfrage jedes Mal ein.
  • XSL-Transformationen ermöglicht mehrere Optionen, jedoch alle diese möglicherweise nicht angemessen. Beispielsweise statt folgende Transformation:
    <xsl:output method="html"/>
    verwenden Sie die folgende Transformation:
    <xsl:output method="html" indent="no" />
    Dies verbessert die Leistung, da Einzug viel unerwünschte Leerzeichen in der Ausgabe enthält. Standardmäßig ist der Wert für den Einzug Attribut Ja .
  • Eingebettete der Vorlage mit for-each oder Mode-Attribut , wenn Sie sicher sind, Ihre anwenden-Vorlage entspricht genau ein Vorlage. Beispiel:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
    <xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    für jeden Knoten, die die folgenden entspricht:
    "//xa:Axes/xa:Axis[@name='Axis1']"
    den folgenden Ausdruck:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    auf allen anderen Vorlagen mit dem gleichen Modus ausgewertet. Prozessor Standardvorlagen gestartet. Diese kopiert alle Textknoten, und ruft die folgenden:
    <xsl:apply-templates>
    für alle Elemente. Daher wird für alle Kinder des ursprünglichen Knotensatz mögliche Übereinstimmungen Ausdruck ausgewertet. Entsprechen den Ausdruck ist keine einfache Aufgabe. Schreiben Sie zur Verbesserung der Leistung den Code wie folgt:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
    <xsl:template match="*" mode="Axis1">
  • Verwenden Sie weniger Vorlagen. Dies ist anwendbar, wenn Sie dieselbe Vorlage mehr als einmal ausführen. Es gibt einige Verbesserung der Leistung mit enge für jede Schleife, um eine Vorlage zu suchen, wenn die Anzahl der Vorlagen, die kleiner sind.
  • Reduzieren Sie die Verwendung der Xsl: Wählen Sie / XSL: when / Xsl: andernfalls . Leistung beeinflusst wenn die Mehrzahl der Auswahl Klausel andernfalls fortfahren. Daher mit Wenn entsprechen Sie, und vermeiden Sie, verwenden andernfalls , wenn Sie wissen, dass ein bestimmter Wert vorhanden ist.
  • Xsl:Variables sind dynamische Werte. Diese Variablen sind nicht im Cache, und jedes Mal, auf die Sie verwiesen wird im XSL führen. Explizite Umwandlung von XSL: Variable Typ verbessert die Leistung. Können Sie Umwandlung mit string() und boolean() Funktionen geben. Zum Beispiel:
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • MSXML und . System.XML
    • MSXML-Parser unterscheidet sich von XmlReader- und XmlWriter .
    • MSXML lädt XML-Daten in ein Dokumentobjektmodell (DOM). Aus diesem DOM-Struktur können Daten problemlos werden über XPath navigiert, über XSL, transformiert oder bearbeitet und gespeichert zurück. Dadurch einfacher Entwicklung und leistungsfähigere Funktionen am Kosten Speicherauslastung und Geschwindigkeit.
    • XmlReader und XmlWriter sind sequenzielle Lesern und Schreibern. Der Entwickler verwaltet den Zustand manuell beim Lesen und Schreiben von XML-Daten. Dies ermöglicht die minimale Speicherauslastung und wird daher die Leistung verbessert.
    • Der MSXML-Parser unterstützt auch SAX (Simple API for XML). SAX ist sequenziell. .NET Framework unterstützt auch das DOM mithilfe von XmlDocument -Klasse.
    • Die optimale Wahl hängt die Auslastung des .NET Framework und auf die Aufgabe, die Sie mit XML durchführen.
  • Dieses Verfahren bezieht sich auf die Leistung mit der Datenbank. MSXML und System.XML Leistung kann verbessert werden, in die Nachschlagefelder pre-joining, wie in den folgenden Code dargestellt:
    <?xml version="1.0" encoding="UTF-8"?>
    <AllLocalDescriptor xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <Descriptor key="AMC_Labels_" ID="AMC" Name="-2000" TypeName="Labels" LCID="">
      AMC
    </Descriptor>
    <Descriptor key="AMC_Labels_3082" ID="AMC" Name="-2000" TypeName="Labels" LCID="3082">
      AMC
    </Descriptor>
    können Sie vermeiden Scannen durch Deklarieren von @ Schlüssel vom Typ ID
    desc = doc.getNodeFromID("AMC_Labels_3082")

Informationsquellen

Informationen finden Sie auf den folgenden Websites von Microsoft Developer Network (MSDN):
XSLT-Entwicklerhandbuch
http://msdn2.microsoft.com/en-us/library/ms759204.aspx
Verbesserte XSL
http://msdn2.microsoft.com/en-us/library/aa468550.aspx
Zusätzliche Informationen zur Leistung des XSLT-finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
325689INFO: Leistung von XSLT-Transformationen in .NET Framework
331026Mich von anzeigen: Leistung optimieren Meine XSLT-Stylesheet in .NET unter Verwendung von System.Xml

Eigenschaften

Artikel-ID: 815124 - Geändert am: Freitag, 2. November 2007 - Version: 2.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework-Klassenbibliotheken 1.0
  • Microsoft .NET Framework-Klassenbibliotheken 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Keywords: 
kbmt kbperformance kbxml kbinfo KB815124 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 815124
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com