¿Hay alguna manera de restringir una sección de XSLT a un solo nodo, de modo que la ruta completa del nodo no sea necesaria cada vez?Sección de restricción de XSLT al nodo único
Por ejemplo ...
Name: <xsl:value-of select="/root/item[@attrib=1]/name"/>
Age: <xsl:value-of select="/root/item[@attrib=1]/age"/>
Esto podría hacerse a través de una para-cada comando, pero me lleva a creer que estos deben ser evitados si es posible ...
<xsl:for-each select="/root/item[@attrib=1]"/>
Name: <xsl:value-of select="name"/>
Age: <xsl:value-of select="age"/>
</xsl:for-each>
Supongo que estoy preguntando si hay un equivalente XSLT del comando VB.NET With?
Preferiría evitar la plantilla xsl: para legibilidad, ya que el archivo XSLT en cuestión es grande, pero me complace aceptar si esa es la única forma de hacerlo. Y si es así, ¿cuál es la sintaxis para llamar a una plantilla particular basada en un nodo específico?
actualización
En seguimiento a la respuesta por @javram, es posible hacer coincidir plantillas separadas en base a determinados atributos/nodos.
<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>
No hay nada de malo en usar 'xsl: for-each' como lo hace aquí. En este caso, funciona bien de una manera "con". Las personas aconsejan no usar 'xsl: for-each' para repetir explícitamente algo cuando XSLT proporciona mejores formas de hacer el equivalente, como dejar que las plantillas se apliquen y coincidan. –
Downvoter ... ¿puedo preguntar por qué, y después de tanto tiempo? – freefaller
Downvoter ... no, no lo creo ... solo te escondes detrás del anonimato de SO, en lugar de ser constructivo. Gracias, muchas gracias! – freefaller