xslt:if, как протестировать на булевы значения

Я не могу выяснить способ проверить, является ли значение элемента "верным" или "ложным".

Это - булевская переменная, преобразованная из набора данных. Когда я выбираю значение, я вижу, что это или "верно" или "ложно", но мой тест не получает ожидаемое поведение. (это всегда - ложь.) Я попробовал почти все, это - мое первое xslt приложение, таким образом, справка ценится.

      <xsl:if test="ispassive">
        <tr>
          <td>
            <em>pasif değil</em>
            <hr></hr>
          </td>
        </tr>
      </xsl:if>
14
задан Mads Hansen 8 September 2012 в 12:30
поделиться

3 ответа

В зависимости от того, как вы представляете ваш булеан, это может быть много вещей, как выглядят ваши данные?

Скорее всего, сценарий, ложь представляется как 0 и истина может быть любым значением без 0.

<xsl:if test="$myvalue = 0">
    -- output if false --
</xsl:if>

но, скорее всего, лучше использовать xsl:choose

<xsl:choose>
    <xsl:when test="$myvalue = 0">
        -- output if false --
    </xsl:when>
    <xsl:otherwise>
        -- output if true --
    </xsl:otherwise>
</xsl:choose>

Вы можете оставить без внимания обратное, если оно вам не нужно.

13
ответ дан 1 December 2019 в 06:53
поделиться

После публикации здесь я понял, что Мой тест был за пределами моего .

После изменения положения Условия, я узнал, что это работает для меня.

        <xsl:if test="ispassive='true'">
          <tr>
            <td>
              <em>pasif</em>
              <hr></hr>
            </td>
          </tr>
        </xsl:if>

Сравнивая оцененную строковое значение , исходящих элемента для «true» работает нормально, (которые я пробовал раньше, но потому что я неуместел его в XSLT, он всегда не провалил, потому что он не смогл выбрать Элемент элемент для оценки его значения.

18
ответ дан 1 December 2019 в 06:53
поделиться

Этот XSLT ищет узел в текущем контексте, называемом извещательным.

Итак, если ваш XML

<Root>
   <ispassive />
</Root>

, вы получите правду. Как правило, вы должны указать XPath к значению, которое вы хотите проверить. Поэтому, если ваш XML

<Root>
      <Node ispassive="true"/>
</Root>

, и вы заменяете

<xsl:if test="ispassive">

с помощью

<xsl:if test="//@ispassive = 'true'">

, ваша стилей будет работать, как ожидалось.

10
ответ дан 1 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: