INFO : techniques pour améliorer les performances des transformations XSL

Traductions disponibles Traductions disponibles
Numéro d'article: 815124 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Cet article répertorie certaines techniques pour améliorer les performances de transformations XSL (Extensible Stylesheet Language). XSL est un langage fonctionnel. XSL ne prend pas en charge les fonctionnalités du langage commun. Par exemple, XSL ne prend pas en charge des valeurs de retour ou des globales. XSL n'est pas un langage orienté objet, et en cours modulaire coûts cycles processeur. Il n'y a sans débogage disponibles pour XSL, par conséquent, le débogage devient difficile.

Plus d'informations

Performances d'une transformation XSL dépendent les scénarios qui vous utilisez. Les techniques répertoriées dans cet article sont des instructions générales. Assurez-vous que vous mesurer les résultats de chaque optimisation. Test seulement peut être si une technique particulier améliore les performances ou non. Vous pouvez utiliser l'utilitaire de ligne de commande msxsl.exe pour tester et effectuer des transformations XSL de ligne de commande en utilisant le processeur Microsoft XSL. L'utilitaire msxsl.exe appelle Microsoft XML Parser 4.0 (msxml4.dll) pour effectuer la transformation. Vous pouvez télécharger cet utilitaire à partir de MSDN suivant site :
http://www.microsoft.com/downloads/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&DisplayLang=en

Techniques pour améliorer les performances

  • Identifier les chemins de code plus courantes pour rendre vos pages et puis optimiser ces chemins d'accès. Optimiser les sections hautement réutilisées de XSL.
  • Au lieu d'utiliser sub-elements, utiliser attributs chaque fois que possible. L'aide d'attributs au lieu d'éléments améliore les performances. Lorsque vous effectuez une recherche XPath, attributs sont plus rapides, car ils sont faiblement typés. Cela facilite validation de schéma.
  • Les chemins d'accès plus explicite au lieu de « / / » chaque fois que possible. Lorsque les données XML sont volumineux, « / / " récursive decedent recherche est très coûteuse. Expression XPath spécifique implémente plus rapidement.
  • Lorsque vous correspondent aux valeurs d'attribut, utiliser énumérateur attributs. Utilisez plusieurs noms d'attribut en bits et définissez leurs valeurs pour cette propriété a la valeur true ou false . Par exemple :
    <element_name attr1="1" attr2="1" attr3="0">
  • N'utilisez pas de script. À l'aide script Abaisse les performances.
  • Comparer directement par un nom pour améliorer les performances. Par exemple, au lieu d'utiliser le code suivant :
    ./info[type='title']
    utiliser le code suivant :
    ./title
    lorsque vous comparer des valeurs, au lieu d'utiliser nom comme suit :
    Select="*[name()='sample']"
    utiliser le code suivant :
    Select="sample"
    du fait de l'espace de noms gestion dans XPath, elles sont pas exactement équivalents.
  • Toutes les versions de MSXML, version 3.0 et versions ultérieure, sont plus rapides avec le filtre d'index explicite. L'amélioration des performances dépend de la position de l'élément dans la liste enfant du parent. Au lieu d'utiliser des opérations suivantes :
    /child_element
    utilisez les éléments suivants :
    /child_element[1]
  • Utilisez les paramètres au lieu de l'évaluation de la requête chaque fois.
  • Transformations XSL permet plusieurs options, en revanche, toutes les peuvent ne pas effectuer correctement. Par exemple, au lieu d'utiliser la transformation suivante :
    <xsl:output method="html"/>
    Utilisez la transformation suivante :
    <xsl:output method="html" indent="no" />
    Cela améliore les performances car retrait offre beaucoup d'espaces indésirables dans la sortie. Par défaut, la valeur pour le retrait de l'attribut est Oui .
  • Le modèle en ligne avec for-each ou d' attribut mode lorsque vous êtes certain que votre appliquer-modèle correspond exactement un modèle. Par exemple :
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
    <xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    pour chaque n?ud qui correspond à celui-ci :
    "//xa:Axes/xa:Axis[@name='Axis1']"
    l'expression suivante :
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    est évalué sur tous les autres modèles avec le même mode. Processeur commence à exécuter les modèles par défaut. Cette copie tous les n?uds de texte et appelle suivantes :
    <xsl:apply-templates>
    pour tous les éléments. Par conséquent, pour tous les enfants de nodeset d'origine, les correspondances possibles expression est évaluée. Correspondant à l'expression n'est pas une tâche simple. Pour améliorer les performances, réécrire le code comme suit :
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
    <xsl:template match="*" mode="Axis1">
  • Utiliser des modèles moins. Cela s'applique lorsque vous exécuter le même modèle plusieurs fois. Il existe certains Amélioration des performances avec une étroite for-each boucle pour rechercher un modèle lorsque le nombre de modèles est inférieure.
  • Réduire l'utilisation de xsl : choisissez/xsl:when/XSL : dans le cas contraire . Performances est affectés par lorsque la majorité des sélections correspondent à la clause dans le cas contraire . Par conséquent, correspond à lorsqu'et tentez Évitez d'utiliser dans le cas contraire lorsque vous savez qu'une valeur particulière existe.
  • xsl:variables sont des valeurs dynamiques. Ces variables ne sont pas dans le cache et exécuter chaque fois qu'ils sont référencés dans XSL. Type explicite casting de xsl:variable améliore les performances. Vous pouvez faire tapez casting avec fonctions string() et boolean() . Par exemple :
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • et MSXML. System.XML
    • Analyseur MSXML est différente de XmlReader et XmlWriter .
    • MSXML charge les données XML dans un modèle d'objet document (DOM). Dans cette arborescence DOM, données peuvent être facilement accédées à une expression XPath, transformées par XSL, ou modifiées et enregistrées en. Cela permet de faciliter le développement et des capacités plus puissantes à la dépens de l'utilisation de la mémoire et la vitesse.
    • XmlReader et XmlWriter sont séquentiels lecteurs et enregistreurs. Le développeur maintient l'état manuellement lorsque lire et écrire des données XML. Cela permet l'utilisation de mémoire minimale et, par conséquent, améliore les performances.
    • L'analyseur MSXML prend également en charge SAX (API simple pour XML). SAX est séquentielle. Le .NET framework prend également en charge le modèle DOM en utilisant la classe XmlDocument .
    • Le meilleur choix dépend de l'utilisation de .NET framework et sur la tâche que vous effectuez avec XML.
  • Cette méthode concerne les performances avec la base de données. Performances MSXML et System.XML peuvent être amélioré dans pre-joining les champs de recherche, comme illustré dans le code suivant :
    <?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>
    Vous pouvez éviter l'analyse en déclarant @key de type code.
    desc = doc.getNodeFromID("AMC_Labels_3082")

Références

Pour plus d'informations, reportez-vous aux sites Microsoft Developer réseau MSDN (Web adresses suivantes :
Guide du développeur XSLT
http://msdn2.microsoft.com/en-us/library/ms759204.aspx
Optimisation XSL
http://msdn2.microsoft.com/en-us/library/aa468550.aspx
Pour plus d'informations sur les performances de transformation XSLT, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
325689 INFORMATIONS : les performances de transformation XSLT transformations dans le .NET Framework
331026 Afficher comment me : performances régler ma feuille de style XSLT dans .NET using System.XML

Propriétés

Numéro d'article: 815124 - Dernière mise à jour: vendredi 2 novembre 2007 - Version: 2.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework Class Libraries 1.0
  • Microsoft .NET Framework Class Libraries 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Mots-clés : 
kbmt kbperformance kbxml kbinfo KB815124 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 815124
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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