xslt param условная проверка - PullRequest
2 голосов
/ 05 мая 2010

У меня есть:

<xsl:param name="SomeFlag" /> 

В моем шаблоне XSLT я хочу сделать условную проверку SomeFlag. В настоящее время я делаю это как:

<xsl:if test="$SomeFlag = true"> SomeFlag is true! </xsl:if>

Это как мы оцениваем флаг?

Я устанавливаю параметр в C # как:

xslarg.AddParam("SomeFlag", String.Empty, true);

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 06 мая 2010
<xsl:if test="$SomeFlag = true">

Это проверяет, равен ли $SomeFlag строковое значение элемента с именем "true", который является первым дочерним элементом текущего узла.

То, что вы хотите, это :

<xsl:if test="$SomeFlag = true()">
3 голосов
/ 06 мая 2010

Я согласен с Димитром, но есть дополнение:

В вашем случае вы можете просто использовать:

<xsl:if test="$SomeFlag"> SomeFlag is true! </xsl:if>    

Но я обычно использую 1 и 0 для логических флагов, когда флаги должны оцениваться в XSLT, особенно когда я беру значение из атрибута или содержимого элемента.

Это позволяет мне проверять условия путем приведения к числам (а затем неявным образом к логическому) вместо сравнения со строковым литералом:

<xsl:if test="number($SomeFlag)"> SomeFlag is true! </xsl:if>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...