【发布时间】:2017-05-22 16:07:28
【问题描述】:
我有以下 XML:
<RichText>
Text
Text
Text
</RichText>
我想使用 XSLT 1.0 输出以下 HTML(如果我真的需要,可以使用 2.0):
<p>
Text<br/>
Text<br/>
Text
</p>
我尝试使用以下接近的 XSL:
<xsl:template match="text()">
<xsl:param name="text" select="."/>
<!-- Because we would rely on $text containing a line break when using
substring-before($text,' ') and the last line might not have a
trailing line break, we append one before doing substring-before(). -->
<xsl:value-of select="substring-before(concat($text,' '),' ')"/>
<br/>
<xsl:if test="contains($text,' ')">
<xsl:apply-templates select=".">
<xsl:with-param name="text" select="substring-after($text,' ')"/>
</xsl:apply-templates>
</xsl:if>
<xsl:template>
这个输出:
<p><br>
Text<br>
Text<br>
Text<br>
<br></p>
【问题讨论】:
-
您能解释一下何时将换行符转换为
br元素以及何时不转换的标准吗?您已经给出了一个示例,但也许以纯文本形式制定标准有助于您编写 XSLT 检查或允许我们帮助您编写它们。 -
如果
Text行之间有空行,你想要什么样的输出?
标签: html xml xslt line-breaks