xsl-list
[Top] [All Lists]

Transform XML into CDATA

2006-02-14 08:25:07
I have some problems getting this right.

In a FlashViewer, I need to feed some xml data, however some of the
data needs to be in a CDATA section, like:

<IMAGE>
        <NAME>pictue.jpg</NAME>
        <CAPTION><![CDATA[Image info goes here.<BR>Here is the comment<BR><A
href="images/picture.jpg" target="_blank">
<U>Open image in new window</U></A>]]></CAPTION>
</IMAGE>

The original data is in xml like:
<record>
        <item name="File">picture.jpg</item>
        <item name="Desc">Image info goes here</item>
        <item name="Comment">Here is the comment</item>
</record>

Now, I have been trying to accomplish this be searching the archives
on this list, and came up with some xlt that uses
cdata-section-elements="CAPTION" and looks like this.

<xsl:template match="record" mode="image">
        <xsl:element name="IMAGE">
                <xsl:element name="NAME">
                        <xsl:value-of select="item[1]"/>
                </xsl:element>
                <xsl:element name="CAPTION">
                        <xsl:value-of select="item[2]"/>
                        <xsl:if test="normalize-space(item[3])">
                                <xsl:value-of select="'&lt;BR&gt;'" 
disable-output-escaping="yes"/>
                                <xsl:value-of select="item[3]"/>
                        </xsl:if>
                        <xsl:value-of select="'&lt;BR&gt;'" 
disable-output-escaping="yes"/>
                        <xsl:element name="a">
                                <xsl:attribute name="href"><xsl:value-of 
select="item[1]"/></xsl:attribute>
                                <xsl:attribute 
name="target">_blank</xsl:attribute>
                                <U>Open image in new window</U>
                        </xsl:element>
                </xsl:element>
        </xsl:element>
</xsl:template>

But this produces only a "half" CDATA section like this:
<IMAGE>
        <NAME>picture.jpg</NAME>
        <CAPTION><![CDATA[Image info goes here<BR>Here is the 
comment<BR>]]><a href="picture.jpg" target="_blank">
                <U>Open image in new window</U>
                </a>
        </CAPTION>
</IMAGE>

How can I make all the data in the CAPTION element as CDATA?

/Thomas

BTW: The FlashViewer i am using is called SimpleViewer from
http://www.airtightinteractive.com/simpleviewer/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>