输出字符串为 HTML



我有一个带有一些HTML标记的字符串,如下所示

<strong>foo</strong>

我希望解析器将其输出为 HTML,但xsl:value-of字面上写出来。我已经像这样设置了样式表的输出属性

<xsl:output method="html" encoding="UTF-8"/>

但它没有按照我想要的方式工作。建议不胜感激。

编辑:添加了上下文。它是一个简单的解析器,它接受一个输入字符串并将其分成特殊代码(括在方括号内)和 HTML 内容。HTML 输出与<xsl:value-of select="$c" disable-output-escaping="yes" />一致

测试字符串为 [ title: "Rady Expertů" ] <strong>Foo</strong>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<!-- parser -->
<xsl:template name="box-parser">
    <xsl:param name="content" />
    <xsl:param name="property" />
    <!-- extract code wrapped up in brackets -->
    <xsl:variable name="a" select="substring-before($content, ']')" />
    <xsl:variable name="b" select="substring-after($a, '[')" />
    <!-- HTML content -->
    <xsl:variable name="c" select="substring-after($content, ']')" />
    <xsl:variable name="output">
        <xsl:choose>
            <!-- if we want to output HTML content only -->
            <xsl:when test="$property = 'content-only'">
                <xsl:value-of select="$c" disable-output-escaping="yes" />
            </xsl:when>
            <!-- if we want to output the value of a property -->
            <xsl:when test="contains($b, $property)">
                <xsl:value-of select="substring-before(substring-after(substring-after($b, $property), '&quot;'), '&quot;')" />
            </xsl:when>
            <!-- error -->
            <xsl:otherwise>promenna '<xsl:value-of select="$property" />' nenalezena</xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
    <xsl:value-of select="$output" />
</xsl:template>

禁用$output上的输出转义

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

相关内容

  • 没有找到相关文章