Есть ли способ ограничить секцию XSLT одним узлом, чтобы каждый раз не требовался полный путь узла?
Например ...
Name: <xsl:value-of select="/root/item[@attrib=1]/name"/>
Age: <xsl:value-of select="/root/item[@attrib=1]/age"/>
Это можно сделать с помощью команды «для каждого», но я склонен полагать, что их следует избегать, если это вообще возможно ...
<xsl:for-each select="/root/item[@attrib=1]"/>
Name: <xsl:value-of select="name"/>
Age: <xsl:value-of select="age"/>
</xsl:for-each>
Наверное, я спрашиваю, есть лиXSLT-эквивалент команды VB.NET With?
Я бы предпочел избегать xsl: template для удобства чтения, так как рассматриваемый файл XSLT большой, но с радостью приму, если это единственный способ сделать это.И если да, то каков синтаксис для вызова определенного шаблона на основе определенного узла?
Обновление
В ответ на ответ @javram возможносопоставлять отдельные шаблоны на основе определенных атрибутов / узлов.
<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>