Esiste un modo per limitare una sezione di XSLT a un singolo nodo, in modo che l'intero percorso del nodo non sia necessario ogni volta?Limitazione della sezione di XSLT al nodo singolo
Per esempio ...
Name: <xsl:value-of select="/root/item[@attrib=1]/name"/>
Age: <xsl:value-of select="/root/item[@attrib=1]/age"/>
Ciò potrebbe essere fatto attraverso un per-ogni comando, ma io sono portato a credere che questi dovrebbero essere evitati se possibile ...
<xsl:for-each select="/root/item[@attrib=1]"/>
Name: <xsl:value-of select="name"/>
Age: <xsl:value-of select="age"/>
</xsl:for-each>
Suppongo che sto chiedendo se esiste un equivalente XSLT del comando VB.NET Con?
Preferirei evitare xsl: modello per la leggibilità, poiché il file XSLT in questione è grande, ma felice di accettare se questo è l'unico modo per farlo. E se sì, qual è la sintassi per chiamare un modello particolare basato su nodo specifico?
Aggiornamento
Nel follow-up alla risposta da @javram, è possibile abbinare i modelli separati in base a particolari attributi/nodi.
<xsl:apply-templates select="/root/item[@attrib=1]"/>
<xsl:apply-templates select="/root/item[@attrib=2]"/>
<xsl:template match="/root/item[@attrib=1]">
Name: <xsl:value-of select="name"/>
Age: <xsl:value-of select="age"/>
</xsl:template>
<xsl:template match="/root/item[@attrib=2]">
Foo: <xsl:value-of select="foo"/>
</xsl:template>
Non c'è niente di sbagliato di per sé con l'uso di 'xsl: for-each' come si fa qui. In questo caso, funziona bene in un modo "con". Le persone consigliano di non utilizzare 'xsl: for-each' per eseguire il loop esplicito su qualcosa quando XSLT fornisce metodi migliori per eseguire l'equivalente, ad esempio lasciando che i modelli si applichino e corrispondano. –
Downvoter ... posso chiederti perché, e dopo così tanto tempo? – freefaller
Downvoter ... no non pensavo così ... ti nascondi dietro l'anonimato di SO, piuttosto che essere costruttivo. Grazie, grazie mille! – freefaller