我正在使用XSLT生成电子邮件正文,如下所示:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:param name="Test"/>
<xsl:template match="/">
<html>
<body>
<br/>Test: <xsl:value-of select="$Test"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Test参数的值为"sample <br> sample"
但在电子邮件正文中,我正在获取<br>
标签。
它没有转换为换行符。
但是,如果我将它直接放在XSLT模板中,那么它正在工作。
只有当br标签在参数值中时,它才会起作用。
知道如何解决这个问题吗?
答案 0 :(得分:1)
要有机会创建多个文本节点,您需要使用loading
而不是<xsl:copy-of select="$Test"/>
。但是,在这种情况下,您需要确保将结果树片段或节点作为参数值传递,而不是字符串。如果你传递一个字符串,你所能做的就是使用value-of
并希望你的处理器和设置支持它。
带有字符串参数的示例为
<xsl:value-of select="$Test" disable-output-escaping="yes"/>
如果支持则输出例如
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="Test"><![CDATA[sample <br> sample]]></xsl:param>
<xsl:template match="/">
<html>
<body>
<br/>Test: <xsl:value-of select="$Test" disable-output-escaping="yes"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
另一方面,使用片段作为参数值和<html>
<body><br>Test: sample <br> sample
</body>
</html>
,如
copy-of
您将获得与任何处理器相同的输出。唯一的挑战可能是将片段作为参数值传递,特别是从命令行运行时。