3 users online. Create an account or sign in to join them.Users
nl2elements
Easily wrap each line with a custom element
Description
Wraps each line in a custom element.
Thanks to the nl2br Utility for inspiration!
Two params:
string The string to convert.
element-name (optional, default ‘li’) The element name
Example:
<ul>
<xsl:call-template name="nl2elements">
<xsl:with-param name="string">
Line 1
Line 2
</xsl:with-param>
<xsl:with-param name="element-name" select="'li'" />
</xsl:call-template>
</ul>
Output:
<ul>
<li>Line 1</li>
<li>Line 2</li>
</ul>
XSLT
View Raw
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--
Example:
<xsl:call-template name="nl2elements">
<xsl:with-param name="string" select="body" />
<xsl:with-param name="element" select="'li'" />
</xsl:call-template>
-->
<xsl:template name="nl2elements">
<xsl:param name="string" />
<xsl:param name="element-name">li</xsl:param>
<xsl:if test="normalize-space(substring-before($string,' ')) != ''">
<xsl:element name="{$element-name}">
<xsl:value-of select="substring-before($string,' ')" />
</xsl:element>
</xsl:if>
<xsl:choose>
<xsl:when test="contains(substring-after($string,' '),' ')">
<xsl:call-template name="nl2elements">
<xsl:with-param name="string" select="substring-after($string,' ')" />
<xsl:with-param name="element-name" select="$element-name" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:element name="{$element-name}">
<xsl:value-of select="substring-after($string,' ')" />
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>