如何通过XSL将XML换行符转换为HTML br?

时间:2016-07-21 08:13:59

标签: html xml xslt

我想通过XSL将我的XML文档中的换行符(\ n)转换为HTML中的'br'标记,而不添加额外的标记。

示例:

<item name="Test">
    <title>Test</title>
    <text>
        <p>Hello
        World</p>
    </text>
</item>

Hello是换行符后 - &gt; '\ n'。

我想要的是什么:

<article>
    <p>Hello<br>World</p>
</article>

我尝试了什么(不工作):

<xsl:template match="\n">
    <br>
        <xsl:apply-templates/>
    </br>
</xsl:template>

这可以在不添加额外标签的情况下实现吗?

1 个答案:

答案 0 :(得分:0)

下面的代码可以在XSLT 1.0中生成您想要的结果

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
  <article>
<xsl:apply-templates select="/*/*/*"/>
   </article>
 </xsl:template>
 <xsl:template match="/*/*/*">
<p>
<xsl:choose>
     <xsl:when test="not(contains(., '&#xA;'))">
       <xsl:copy-of select="."/>
     </xsl:when>
<xsl:otherwise>
       <xsl:value-of select="substring-before(., '&#xA;')"/>
       <br/>
<xsl:value-of select="substring-after(., '&#xA;')"/>
</xsl:otherwise>
</xsl:choose>
</p>
 </xsl:template>
</xsl:stylesheet>