UPDATE 17.Jul.2013:
XALAN 2.7
non memorizza nella cachedocument()
chiamate all'interno di una richiesta. Quindi è fondamentale archiviare ogni documento necessario in una variabile nell'XSL.documento XSLT(): è più lento quando lo si chiama più volte?
Ho cercato per un po 'e non ho trovato risposte concrete alla mia semplice domanda:
Quale approccio è più veloce o è il compilatore "intelligente" abbastanza in modo che entrambe le varianti sono la stessa cosa ?
Nota: sto usando Xalan (implementazione di default in JDK 1.6) 2.7:
1) devo leggere una proprietà in un XML esterno:
<xsl:value-of select="document($path)/person/address/city"/>
Ogni volta che ho bisogno della città, io uso l'espressione sopra (diciamo 100 volte)
2) Invece di chiamare il documento() 100 volte, memorizzo il nodo XML in una variabile:
<xsl:variable name="node" select="document($path)"/>
E poi io uso 100 volte
<xsl:value-of select="$node/person/address/city"/>
che uno è più veloce, migliore, per quali ragioni? Grazie!
Sono anche interessato a una risposta esperta, ma, come penso, il caso con più chiamate di 'documento (path_to_doc)' dipende dalla realizzazione del caching del processore xslt, nel caso in cui il nodo del documento memorizzato nella variabile deve essere caricato una volta in ogni caso. –
Sì, suppongo anche che ** dipenda dall'implementazione ** del processore, ma sono curioso di sapere come funziona ** Xalan 2.7 (processore predefinito in JDK 1.6) **. – basZero
Non sono al 100% positivo, ma penso che Xalan non memorizzi i risultati di 'document()', ma xsltproc lo fa. Tuttavia l'argomento 'document()' è interpretato come un URI ([vedi specifica] (http://www.w3.org/TR/xslt#add-func)), quindi un caching aggressivo sarebbe perfettamente logico. –