xsl-list
[Top] [All Lists]

Re: How can I do a string substitution for turning entities into html tags

2003-04-16 05:28:32

On Tuesday, April 15, 2003, at 05:37  PM, Bill Chmura wrote:



Here is an example of my xml data

<text>
   &lt;p&gt;Sometext here. Followed by more text&lt;/p&gt;
   &lt;p&gt;More text.&lt;/p&gt;
   &lt;li&gt;For more info see &lt;/li&gt;
</text>


This turns the tags into elements so you can do other things with them if you want to. Note that the elements must have open and close tags.

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:template match="/">
        <xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="text">
        <xsl:call-template name="makeElements">
                <xsl:with-param name="string"><xsl:value-of select="text()"/>
                </xsl:with-param>
        </xsl:call-template>
</xsl:template>
<xsl:template name="makeElements">
        <xsl:param name="string"/>
        <xsl:choose>
        <xsl:when test="contains($string,'&lt;')">
                <xsl:value-of select="substring-before($string,'&lt;')"/>
                <xsl:call-template name="makeElement">
                        <xsl:with-param name="string">
                                <xsl:value-of 
select="substring-after($string,'&lt;')"/>
                        </xsl:with-param>
                </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
                <xsl:value-of select="$string"/>
        </xsl:otherwise>
        </xsl:choose>
</xsl:template>
<xsl:template name="makeElement">
        <xsl:param name="string"/>
        <xsl:element name="{substring-before($string,'&gt;')}">
<xsl:value-of select="substring-before(substring-after($string,'&gt;'),'&lt;')"/>
        </xsl:element>
        <xsl:call-template name="makeElements">
                <xsl:with-param name="string">
<xsl:value-of select="substring-after(substring-after($string,'&gt;'),'&gt;')"/>
                </xsl:with-param>
        </xsl:call-template>
</xsl:template>
</xsl:stylesheet>



Jim Hart, Project Manager
Academic Technology Services
Library and Information Services
Bates College
Lewiston, Maine, USA


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list