我想通过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>
这可以在不添加额外标签的情况下实现吗?
答案 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(., '
'))">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-before(., '
')"/>
<br/>
<xsl:value-of select="substring-after(., '
')"/>
</xsl:otherwise>
</xsl:choose>
</p>
</xsl:template>
</xsl:stylesheet>