[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Printing CDATA from feed as HTML


Subject: Re: [xsl] Printing CDATA from feed as HTML
From: "Darcy Parker" <darcyparker@xxxxxxxxx>
Date: Thu, 12 Jun 2008 17:34:20 -0400

My advice is partially wrong.

I just read an example on p320 of Beginning XSLT by Jeni Tennison that
is very similar to your problem.

Apparently disable-output-escaping is not implemented on all XSLT
processors. (because it can cause the output to not be well formed
XML).  The book recommends the following as a different strategy:
Instead of wrapping the data in CDATA, use a namespace to distinguish
between the wrapper element and the content you're interested in.
ie
<content> <html:p>This is well-formed XML.</html:p> </content>

But if you don't have the luxury to stop using the CDATA... then I
would pre-process.

Darcy
On Thu, Jun 12, 2008 at 5:22 PM, Darcy Parker <darcyparker@xxxxxxxxx> wrote:
> Hi Joelle,
>
> The problem is that the text inside the CDATA is parsed as character
> data.  It has no structure to it according to the XML parser that is
> passing the information along to XSLT.
>
> The disable-output-escapting attribute you tried only applies to the
> output... Your interest is to have the CDATA parsed so that you can
> process it with XSLT.
>
> I would pre-process the XML and remove the CDATA so that the XML
> parser has an opportunity to parse the data inside.
>
> I think the reason the CDATA was inserted was for security... So you
> may want to investigate possible security issues when you strip out
> the CDATA.
>
> Darcy
>
> On Thu, Jun 12, 2008 at 5:08 PM, Joelle Tegwen <tegwe002@xxxxxxx> wrote:
>> Using xsl 1.0 with php 5.x
>>
>> I'm trying to consume an atom feed and I'd like to print out the full body
>> of the content. It's wrapped in a CDATA section so I'm having trouble
>> getting it to display correctly. The tags come out escaped despite adding
>> the disable-output-escaping. I've looked via google and not found an answer.
>>
>> Sites do this so it must be possible somehow. Right? Snippets below
>> Links to a manual to read are fine too.
>>
>> Thanks!
>> Joelle
>>
>> My XML snippet (Typical atom feed I'm guessing?) full feed at
>> http://blog.lib.umn.edu/huntx010/ici/atom.xml:
>>
>> <entry>
>>   <title>(Further) Reflections on Green Living</title>
>>   <link rel="alternate" type="text/html"
>> href="http://blog.lib.umn.edu/huntx010/ici/2008/06/further_reflections_on_green_l.html"
>> />
>>   <link rel="service.edit" type="application/atom+xml"
>> href="https://blog.lib.umn.edu/cgi-bin/mt-atom.cgi/weblog/blog_id=7828/entry_id=131252"
>> title="(Further) Reflections on Green Living" />
>>   <id>tag:blog.lib.umn.edu,2008:/huntx010/ici//7828.131252</id>
>> <published>2008-06-11T19:48:09Z</published>
>>   <updated>2008-06-11T19:49:00Z</updated>
>>   <summary>Summer is a great time for taking stock of your eco-life, and for
>> adding a little extra oomph to the good habits you already have. For
>> example, are there any &quot;hard-copy&quot; activities you could do online,
>> such as bill paying...</summary>
>>   <author><name>Megan Dushin</name></author>
>>   <category term="Tips from CEHD Insider" />
>>   <content type="html" xml:lang="en"
>> xml:base="http://blog.lib.umn.edu/huntx010/ici/">
>>       <![CDATA[<p>Summer is a great time for taking stock of your<br />
>>     eco-life, and for adding a little extra oomph to the good habits<br />
>>     you already have. For example, are there any "hard-copy"<br />
>>     activities you could do online, such as bill paying or travel<br />
>>     planning? Do you need multiple light sources in your office, or<br />
>>     would one do the job? Could you take mass transit to work two days<br />
>>     a week instead of just one? Take time to ask reflective questions<br />
>>     such as these--the Earth will thank you for it!</p>]]>
>>         </content>
>> </entry>
>>
>> My xsl snippet:
>>
>>
>>   <xsl:template match="atom:entry[position() = 1]">
>>       <h3>
>>           <xsl:apply-templates select="atom:title"/>
>>           <xsl:text>
>>           </xsl:text>
>>           <span class="feed_posted">Posted on:
>>               <xsl:apply-templates select="atom:updated"/></span>
>>       </h3>
>>             <xsl:value-of disable-output-escapting="yes"
>> select="atom:content"/>
>>   </xsl:template>
>>
>> It generates:
>>
>> <h3><a
>> href="http://blog.lib.umn.edu/huntx010/ici/2008/06/further_reflections_on_green_l.html">(Further)
>> Reflections on Green Living</a>
>> <span class="feed_posted">Posted on: 06/11/2008</span></h3>
>>       &lt;p&gt;Summer is a great time for taking stock of your&lt;br /&gt;
>>     eco-life, and for adding a little extra oomph to the good habits&lt;br
>> /&gt;
>>     you already have. For example, are there any "hard-copy"&lt;br /&gt;
>>     activities you could do online, such as bill paying or travel&lt;br
>> /&gt;
>>
>>     planning? Do you need multiple light sources in your office, or&lt;br
>> /&gt;
>>     would one do the job? Could you take mass transit to work two days&lt;br
>> /&gt;
>>     a week instead of just one? Take time to ask reflective questions&lt;br
>> /&gt;
>>     such as these--the Earth will thank you for it!&lt;/p&gt;
>>
>>
>> I want (We'll I'd really like to strip out the <br /> tags, but I think I
>> can do that. The part I'm struggling with is the escaping):
>>
>> <h3><a
>> href="http://blog.lib.umn.edu/huntx010/ici/2008/06/further_reflections_on_green_l.html">(Further)
>> Reflections on Green Living</a>
>> <span class="feed_posted">Posted on: 06/11/2008</span></h3>
>> <p>Summer is a great time for taking stock of your<br />
>>     eco-life, and for adding a little extra oomph to the good habits<br />
>>     you already have. For example, are there any "hard-copy"<br />
>>     activities you could do online, such as bill paying or travel<br />
>>     planning? Do you need multiple light sources in your office, or<br />
>>     would one do the job? Could you take mass transit to work two days<br />
>>     a week instead of just one? Take time to ask reflective questions<br />
>>     such as these--the Earth will thank you for it!</p>


Current Thread
Keywords