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
элемент, который нуждается в этом.)