Что означает эта строка? Жирное пространство?

0

Вот этот:

<xsl:text disable-output-escaping="yes" />

Я натолкнулся на эту странную линию, и мне интересно, что она делает. Из того, что я понимаю, он выводит символ "пробел", а <strong> (см. Ниже) хочет сделать его полужирным, но это звучит бесполезно. Что-то я не понимаю?

Вот фрагмент кода:

<xsl:choose>
    <xsl:when test="prix = '0' ">
        <strong>
            <xsl:text disable-output-escaping="yes" />
        </strong>
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="prix" />
    </xsl:otherwise>
</xsl:choose>
Теги:
xslt

3 ответа

1
Лучший ответ
<xsl:text disable-output-escaping="yes" />

Из того, что я понимаю, он выводит "пробел"

Нет, нет. Он выводит пустую строку, т.е. ничего. В вашем примере, когда тест "prix = '0' возвращает true, результирующее дерево будет содержать:

<strong/>

т.е. пустой strong элемент.

является "значением" единственного способа вывода контента в шаблон?

Нет, конечно, нет: http://www.w3.org/TR/xslt#section-Creating-the-Result-Tree

Можно также использовать тег "xsl: text" для этого

Элемент xsl:text может выводить только текстовый текст.

В моем примере нет конечного тега.

Он не нуждается в конечном теге, поскольку он пуст и "самозакрывается". Эта форма:

<xsl:text disable-output-escaping="yes" />

точно эквивалентен:

<xsl:text disable-output-escaping="yes" ></xsl:text>
1

Не вижу причин для этого.

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

  • 0
    Это было и мое предположение. Я был подозрительным в первый раз, когда я увидел это, но потом я увидел это еще 3 раза в том же файле, и я был смущен. Но спасибо, наверное, это подтверждает мои мысли.
  • 0
    XSL - это язык шаблонов. Может ли фактический контент поступать откуда-то еще?
Показать ещё 4 комментария
0

Это удобно, если вам нужно вывести специальные символы, такие как амперсанд:

<div class="clear">
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
</div>

Объяснение из W3Schools:

Необязательный. "yes" означает, что специальные символы (например, "<") должны выводиться как есть. "no" указывает, что специальные символы (например, "<") должны выводиться как "<". По умолчанию "нет"

  • 0
    Это не отвечает на мой вопрос. Я знаю, что означает «отключение-выход-выход». Моя проблема в том, что моя строка, кажется, ничего не выводит, в лучшем случае пробел. В моем примере нет конечного тега.
  • 0
    если у вас нет содержания, вы можете удалить или закомментировать. У него нет другой цели там. Вы должны переписать ваше предложение выбора тогда.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню