XSLT:如何在 html 结果中正确应用 css 类

Posted

技术标签:

【中文标题】XSLT:如何在 html 结果中正确应用 css 类【英文标题】:XSLT: how correctly apply css class in html result 【发布时间】:2019-06-06 05:52:59 【问题描述】:

我有这个 html,我想使用 XSLT 转换在页面中呈现。

<div class="heading" id="allestimenti">
    <h2 class="heading__title">Allestimenti e destinazioni d'uso</h2>
    <div class="heading__subtitle">Un Daily: <span style="color: #3466cd;">infinite soluzioni</span>
</div>

我想正确渲染 span 标签之间的内容,但我得到的是

Un Daily: <span style="color: #3466cd;">infinite soluzioni</span>

结果。因此,我希望将 css 类正确应用于跨度标签之间的文本,并且我也想从呈现的结果中排除跨度标签。我该怎么做?我使用的 xsl 文件的部分是

<div class="heading__subtitle">
    <xsl:value-of select="Elemento/@Description" />
</div>

元素“描述”将包含的确切位置

Un Daily: <span style="color: #3466cd;">infinite soluzioni</span>

【问题讨论】:

为什么不使用 dom 解析器? 你打算如何将 css 分配给不在标签中的纯文本? @mplungjan 问题是我希望正确应用 span 和 css 类,但我获得的是带有 span 标签的文本和其中的 css 规范。而且我不知道为什么浏览器不能正确呈现 html。也许我没有使用正确的 xslt 规范,我不知道。 我看不出你得到的和你想要的有什么区别 【参考方案1】:

&lt;xsl:value-of select="Elemento/@Description" /&gt; 建议您使用名为Elemento 的元素节点的Description 属性的字符串值创建一个文本节点。

即使属性包含 HTML 标记,您也不会创建任何 HTML 结果元素(如 span 元素),而是创建包含标记的文本节点。

如果您的 XSLT 处理器和设置支持,您可以尝试

<xsl:value-of select="Elemento/@Description" disable-output-escaping="yes"/>

但这是一个可选的序列化功能,肯定不支持,例如 Firefox/Mozilla 浏览器或 XSLT 处理器不序列化或不负责序列化的其他 XSLT 用途。

【讨论】:

非常感谢!这正是我正在寻找的。我也尝试在 Mozilla/Firefox 中使用此解决方案,一切正常。

以上是关于XSLT:如何在 html 结果中正确应用 css 类的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CSS 类移动到正确的 html 元素

XSLT如何仅对XML文档的字符串节点中的数值进行排序

xslt:css在html页面中不起作用

如何在 XML 上同时使用 CSS 和 XSLT?

如何在 XSLT 表中显示正确的内容

转换时,XSLT不会创建正确的行数