Ограничение раздела XSLT одним узлом

Есть ли способ ограничить раздел XSLT одним узлом, чтобы каждый раз не требовался весь путь к узлу?

Например...

Name: <xsl:value-of select="/root/item[@attrib=1]/name"/>
Age: <xsl:value-of select="/root/item[@attrib=1]/age"/>

Это можно сделать с помощью команды for-each, но я считаю, что этого следует избегать, если это вообще возможно...

<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>
5
задан freefaller 30 March 2012 в 08:01
поделиться