【问题标题】:Show escaped html tags from XML as well as non-escaped tags in XSLT显示 XML 中的转义 html 标记以及 XSLT 中的非转义标记
【发布时间】:2013-06-11 01:33:22
【问题描述】:

我的 XML 文件中有这些转义标签:<strong> --> 整个 xml 是这样的:

<test>
<TEST2>
     <li>&lt;strong&gt;blablablabla</li>
</TEST2>
<test>

我想用粗体字(像这样)显示文本,并且我想显示列表项项目符号。现在我只设法以粗体和粗体显示文本,或者我可以显示列表项项目符号,但我从未设法正确显示它们。所以我的问题是:我怎样才能以正确的方式展示它们?

首先,我尝试了&lt;xsl:value-of select="/test/TEST2" disable-output-escaping="yes" /&gt;,它向我显示了斜体和粗体版本的文本,但随后它没有输出列表项项目符号,因为它只输出了原始的&lt;li&gt;标签......

然后,我尝试了&lt;xsl:copy-of-select="/test/TEST"&gt;,它显示了列表项目符号,但这一次,它也输出了原始的&lt;strong&gt; and &lt;em&gt; 标签。

此外,选择的副本与disable-output-escaping 结合使用也不起作用。

我应该怎么做才能正确显示它们?

示例输出:

*&lt;em&gt;&lt;strong&gt;blalblblbal&lt;/strong&gt;&lt;/em&gt; 如果我使用第二个。

如果我使用第一个:

blalblblbal

【问题讨论】:

  • 能否提供一个示例输入和一个示例输出文档。
  • 我当然可以:做到了。

标签: html xml xslt escaping value-of


【解决方案1】:

好好利用

<xsl:template match="li">
  <xsl:copy>
    <xsl:value-of select="." disable-output-escaping="yes"/>
  </xsl:copy>
</xsl:template>

当然还有其他模板用于 li 的祖先,根据需要生成 olul 并处理子元素,例如

<xsl:template match="test">
  <ul>
    <xsl:apply-templates/>
  </ul>
</xsl:template>

但不支持禁用输出转义,例如 Mozilla 浏览器中的客户端 XSLT。而且一般 XSLT 处理器不需要支持它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2014-04-21
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多