Выберите шаблон для выполнения, используя условие, включающее переменную в apply-templates - PullRequest
1 голос
/ 09 июня 2010

У меня есть шаблон, который выглядит ниже

HTML

и который применяется при вызове

, поэтому шаблон применяется, когда текущий узел имеет элемент more-info , есть ли способ применить этот шаблон с тем же вызовом и сусловие, которое включает глобальную переменную, например, match = "$ mode = 'edit' или more-info"

Best Regards, Keshav

1 Ответ

1 голос
/ 09 июня 2010

есть ли способ заставить этот шаблон применяться с тем же вызовом и с условием, которое включает глобальную переменную, например, match = "$ mode = 'edit' or more-info"

В XSLT 2.0 это совершенно законно :

<xsl:template match="more-info[$mode = ('edit', 'more-info')]"
mode="docuSection">

В XSLT 1.0 запрещено использовать переменные или ключевые ссылки в шаблоне соответствия.

Однако можно использовать любой из следующих методов :

I.В инструкции <xsl:apply-templates> укажите точный список узлов для обработки.

<xsl:apply-templates mode="docuSection" 
     select="self::*[$mode = 'edit' or $mode='more-info']" />

||.Сделайте шаблон соответствия более общим, но выполняйте любую обработку в шаблоне, только если выполняется требуемое условие:

<xsl:template match="more-info" mode="docuSection">
 <xsl:if test="$mode = 'edit' or $mode='more-info'">
    html
 </xsl:if>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...