INFORMAZIONI: Tecniche per migliorare le prestazioni di trasformazioni XSL

Traduzione articoli Traduzione articoli
Identificativo articolo: 815124 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sommario

In questo articolo sono elencate alcune tecniche per migliorare le prestazioni di trasformazioni XSL (Extensible Stylesheet Language). XSL Ŕ un linguaggio funzionale. XSL non supporta la funzionalitÓ di common language. Ad esempio, XSL non supporta i valori restituiti o globali. XSL non Ŕ un linguaggio orientato a oggetti, e da modulare costi cicli del processore. Non Ŕ disponibile per XSL senza debug, pertanto, diventa difficile il debug.

Informazioni

Prestazioni di una trasformazione XSL dipendono dagli scenari che si utilizza. Le tecniche che sono elencate in questo articolo sono fornite indicazioni generali. Assicurarsi che Ŕ necessario misurare i risultati di ogni tipo di ottimizzazione. Se una particolare tecnica migliora le prestazioni o non pu˛ rivelarsi solo test. ╚ possibile utilizzare l'utilitÓ msxsl.exe della riga di comando per il testing e per eseguire le trasformazioni XSL di riga di comando utilizzando il processore XSL di Microsoft. L'utilitÓ msxsl.exe richiama Microsoft XML Parser 4.0 (msxml4.dll) per eseguire la trasformazione. ╚ possibile scaricare questa utilitÓ dal sito Web MSDN seguente sito:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&DisplayLang=en

Tecniche per migliorare le prestazioni

  • Identificare i percorsi pi¨ comuni di codice per il rendering delle pagine e quindi ottimizzare tali percorsi. Consente di ottimizzare le sezioni altamente riutilizzare di XSL.
  • AnzichÚ utilizzare sottoelementi, Ŕ necessario utilizzare attributi ove possibile. Utilizzando gli attributi invece di elementi migliora le prestazioni. Quando si esegue corrispondenze di XPath, gli attributi sono pi¨ veloci poichÚ vengono digitati. In questo modo la convalida dello schema pi¨ semplice.
  • Utilizzare percorsi pi¨ espliciti invece di "/ /" ove possibile. Quando i dati XML sono grandi, "/ /" ricerca decedent ricorsiva Ŕ molto dispendiosa. Espressione XPath specifica implementa pi¨ veloce.
  • Quando corrispondenza con i valori di attributo, Ŕ possibile utilizzare gli attributi di enumeratore. Utilizzare pi¨ nomi di attributo come bit e impostare i valori true o false . Ad esempio:
    <element_name attr1="1" attr2="1" attr3="0">
  • Non Ŕ possibile utilizzare script. Utilizzo di script riduce le prestazioni.
  • Consente di confrontare direttamente per nome, per migliorare le prestazioni. Ad esempio, anzichÚ utilizzare il codice riportato di seguito:
    ./info[type='title']
    utilizzare il codice seguente:
    ./title
    quando si confrontano valori, anzichÚ utilizzare il nome come indicato di seguito:
    Select="*[name()='sample']"
    utilizzare il codice seguente:
    Select="sample"
    causa dello spazio dei nomi in XPath, questi sono non Ŕ esattamente equivalenti.
  • Tutte le versioni di MSXML, versione 3.0 e versioni successive, sono pi¨ veloci con il filtro indice esplicito. Il miglioramento delle prestazioni varia a seconda della posizione dell'elemento nell'elenco figlio dell'elemento padre. Invece di utilizzare le seguenti operazioni:
    /child_element
    utilizzare la seguente:
    /child_element[1]
  • Consente di utilizzare i parametri invece di valutazione di ogni volta che la query.
  • Trasformazioni XSL consente pi¨ opzioni, tuttavia, tutti potrebbe non eseguire in modo adeguato. Ad esempio, anzichÚ utilizzare la seguente trasformazione:
    <xsl:output method="html"/>
    utilizzare la seguente trasformazione:
    <xsl:output method="html" indent="no" />
    questo migliora le prestazioni poichÚ rientro fornisce numerose indesiderati spazi nell'output. Per impostazione predefinita, il valore per il rientro di attributo Ŕ .
  • Il modello Inline con for-each o l' attributo mode quando si Ŕ certi che il applicare-modello corrisponde esattamente un modello. Ad esempio:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
    <xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    per ogni nodo che corrisponde a quanto segue:
    "//xa:Axes/xa:Axis[@name='Axis1']"
    l'espressione riportata di seguito:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    viene valutata su tutti gli altri modelli con la stessa modalitÓ. Processore inizia a eseguire modelli predefiniti. Questa copia di tutti i nodi di testo e chiama le seguenti operazioni:
    <xsl:apply-templates>
    per tutti gli elementi. Di conseguenza, per tutti i figli del set di nodi originale, possibili corrispondenze espressione viene valutata. L'espressione di corrispondenza non Ŕ un'attivitÓ semplice. Per migliorare le prestazioni, riscrivere il codice nel modo seguente:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
    <xsl:template match="*" mode="Axis1">
  • Utilizzare un minor numero di modelli. Questa opzione Ŕ disponibile quando si esegue pi¨ volte il modello stesso. ╚ un miglioramento delle prestazioni con una stretta for-each ciclo per cercare un modello quando il numero di modelli Ŕ minore.
  • Ridurre l'utilizzo di xsl: scegliere / xsl: when / xsl: in caso contrario . Interessate di prestazioni quando la maggior parte delle selezioni rientrano tramite la clausola in caso contrario . Di conseguenza, quando corrisponde e provare a evitare l'utilizzo in caso contrario , quando si conosce l'esistenza di un determinato valore.
  • xsl:Variables sono valori dinamici. Queste variabili non sono nella cache ed eseguire ogni volta che viene fatto riferimento in XSL. Tipo esplicito il cast di xsl: variable migliora le prestazioni. ╚ possibile eseguire digitare cast con funzioni string() e boolean() . Ad esempio:
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • VS MSXML. System.XML
    • Parser MSXML Ŕ diverso da XmlReader e XmlWriter .
    • MSXML Carica dati XML in un Document Object Model (DOM). Da questa struttura DOM, dati possono facilmente essere passati attraverso XPath, trasformati tramite XSL, o modificati e salvati nuovamente. In questo modo sviluppo pi¨ semplice e pi¨ potenti funzionalitÓ nel spese di utilizzo della memoria e velocitÓ.
    • XmlReader e XmlWriter sono sequenziali lettori e scrittori. Lo sviluppatore gestisce lo stato manualmente durante le lettura e scrittura di dati XML. In questo modo l'utilizzo di memoria minima e, di conseguenza, migliora le prestazioni.
    • Il parser MSXML supporta inoltre SAX (Simple API for XML). SAX Ŕ sequenziale. .NET framework supporta inoltre il DOM, utilizzando la classe XmlDocument .
    • La scelta migliore dipende dall'utilizzo di .NET framework e sull'attivitÓ che Ŕ possibile eseguire con XML.

  • Questa tecnica riguarda le prestazioni con database. ╚ possibile migliorare le prestazioni di MSXML e System.XML in pre-joining i campi di ricerca come illustrato nel codice riportato di seguito:
    <?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>
    Ŕ possibile evitare analisi dichiarando @ chiave di tipo ID.
    desc = doc.getNodeFromID("AMC_Labels_3082")

Riferimenti

Per ulteriori informazioni, visitare il seguente sito Web Microsoft Developer Network (MSDN):
Guida per gli sviluppatori di XSLT
http://msdn2.microsoft.com/en-us/library/ms759204.aspx
Miglioramento di XSL
http://msdn2.microsoft.com/en-us/library/aa468550.aspx
Per ulteriori informazioni sulle prestazioni di XSLT, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
325689INFORMAZIONI: Prestazioni di XSLT Transformations in .NET Framework
331026Mostra come Me: Prestazioni ottimizzare il foglio di stile XSLT in .NET using System.Xml

ProprietÓ

Identificativo articolo: 815124 - Ultima modifica: venerdý 2 novembre 2007 - Revisione: 2.4
Le informazioni in questo articolo si applicano a:
  • Microsoft .NET Framework Class Libraries 1.0
  • Microsoft .NET Framework Class Libraries 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Chiavi:á
kbmt kbperformance kbxml kbinfo KB815124 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 815124
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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