XSL: Как использовать теги HTML внутри таблицы стилей?

Я получил этот код в моем XSL таблицы стилей:

<xsl:for-each select="report:column-names/report:column">
    <fo:table-cell display-align="center" font-size="9pt">
        <fo:block font-family="{$font.family}" font-weight="bold">
            <xsl:value-of select="." disable-output-escaping="yes" /> <--problematic value
        </fo:block>
    </fo:table-cell>
</xsl:for-each>

В проблемном значении, которое я упомянул, я получил значения, которые я хочу обернуть bdi HTML-тег.

Я пытался просто поставить bdi и я не видел свою ценность, как это:

<bdi><xsl:value-of select="." disable-output-escaping="yes" /></bdi>

Как применить этот тег для моих значений?

1 ответ

Вы не можете смешивать HTML и XSL-FO. XSL-FO - это словарь XML, определенный для форматирования. Первоначальная цель XSLT состояла в том, чтобы преобразовать произвольные словари XML (в конце концов, "X" в "XML" происходит от "Extensible") в словарь стандартного форматирования. Вот что вы делали с XSLT в своем вопросе.

Описание обработки Unicode BIDI в XSL 1.1 находится по адресу https://www.w3.org/TR/xsl11/. Применимая ФО fo:bidi-override ( https://www.w3.org/TR/xsl11/), а соответствующие свойства direction ( https://www.w3.org/TR/xsl11/) и unicode-bidi ( https://www.w3.org/TR/xsl11/).

Вы до сих пор не показали содержание report:column элемент, но, похоже, вы хотите:

<fo:bidi-override unicode-bidi="embed" direction="rtl">
  <xsl:value-of select="." disable-output-escaping="yes" />
</fo:bidi-override>

Не видя report:column элемент, embed а также rtl это только догадки.

(С помощью disable-output-escaping это редко хорошая идея, но мы не можем увидеть, насколько плоха идея в этом случае, не видя report:column элемент, который нуждается в этом.)

Другие вопросы по тегам