如何从XSL中的xs:value-of输出HTML

时间:2015-10-23 13:29:52

标签: html xml xslt

如何将双<br/>标记放在XSLT文件中以进行双换行?

例如,我想显示如下内容:

Hi Jessica,

Your account is activated!

在逗号和&#34;你的&#34;之间。我会放两个<br/>标签。

我的代码目前是:

<xsl:value-of select="concat(demessage/TEXT.1, demessage/TEXT.SPACE, demessage/TEXT.2, '&lt;br/&gt;', '&lt;br/&gt;', demessage/TEXT.3)"/>

分别为TEXT.1 = Hi, TEXT.2 = Jessica, TEXT.3 = Your account is activated!

在这种情况下,我认为双线中断应该可行,但它仍然给我一个新线。

有没有人有任何想法为什么转换行为如此?

2 个答案:

答案 0 :(得分:2)

XSLT构造结果树,而不是文本文件。这意味着输出元素节点与输出文本非常不同;特别是,您不通过创建元素的标记表示来构造元素。您可以通常使用xsl:element指令构造元素,或者如果事先知道元素的名称,则使用“literal result element”,这是一条看起来就像您要创建的元素的指令:在这种情况下<br/>。所以很简单:要输出<br/>元素,请使用<br/>指令。

所以你首先输出一个文本节点:

<xsl:value-of select="concat(demessage/TEXT.1, demessage/TEXT.SPACE, demessage/TEXT.2"/>

然后输出两个元素节点:

<br/><br/>

然后是另一个文本节点:

<xsl:value-of select="demessage/TEXT.3"/>

答案 1 :(得分:1)

如果您想输出br元素,则不能使用单个value-ofconcat,而是使用<xsl:value-of select="concat(demessage/TEXT.1, demessage/TEXT.SPACE, demessage/TEXT.2)"/><br/><br/><xsl:value-of select="demessage/TEXT.3"/>