Skip to content

Instantly share code, notes, and snippets.

@xpathr
Created May 10, 2012 14:41
Show Gist options
  • Select an option

  • Save xpathr/2653545 to your computer and use it in GitHub Desktop.

Select an option

Save xpathr/2653545 to your computer and use it in GitHub Desktop.
nl2elements by bpierre
<?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,'&#10;')) != ''">
<xsl:element name="{$element-name}">
<xsl:value-of select="substring-before($string,'&#10;')" />
</xsl:element>
</xsl:if>
<xsl:choose>
<xsl:when test="contains(substring-after($string,'&#10;'),'&#10;')">
<xsl:call-template name="nl2elements">
<xsl:with-param name="string" select="substring-after($string,'&#10;')" />
<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,'&#10;')" />
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment