Hi,
I think it should be something similar to the following:
<?php
$doc = new DOMDocument();
$feed = $doc->appendChild($doc->createElement('feed'));
$feed->setAttribute('xmlns', 'http://www.w3.org/2005/Atom');
$summary = $feed->appendChild($doc->createElement('summary'));
$summary->setAttribute('type', 'xhtml');
$xml = <<<EOF
<div xmlns="http://www.w3.org/1999/xhtml">
<p>test<br/>test</p>
</div>
EOF;
$summaryDoc = new DOMDocument();
$summaryDoc->loadXml($xml);
$summary->appendChild($doc->importNode($summaryDoc->documentElement, true));
echo $doc->saveXml();
returns
<feed xmlns="http://www.w3.org/2005/Atom">
<summary type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>test<br/>test</p>
</div>
</summary>
</feed>
BTW, Atom format supports different types of content, not only html/xhtml.
Of course, it is not required to support it right now, but API can accept
type as one of {html|xhtml|MIME TYPE}, not as boolean parameter as it is
now.
Sincerely,
On 4/3/07, Alexander Netkachev <[EMAIL PROTECTED]> wrote:
Hi,
It does not work but I'm not sure that I did everything correctly...
Well, I applied the patch and change the default builder:
Builder.php
348 $entry = new Zend_Feed_Builder_Entry($row['title'],
$row['link'], $row['description'], true);
And run the test:
$feedArray = array(
'title' => $blog['title'],
'link' => MYSPHERE_URL . '/blog/' . $id . '/atom',
'lastUpdate' => $feedUpdateDate,
'charset' => 'utf-8',
'author' => 'Alexander Netkachev',
'email' => '[EMAIL PROTECTED] ',
'copyright' => 'Alexander Natkachev, all rights reserved',
'generator' => 'Zend Framework Zend_Feed',
'language' => 'en',
'entries' => array()
);
foreach ($posts as &$post) {
$feedArray['entries'][] = array(
'title' => $post['title'],
'link' => '...',
'description' => $post['description'],
'lastUpdate' => strtotime($post['modified'])
);
}
$feed = Zend_Feed::importArray($feedArray, 'atom');
$feed->send();
and it returned the following feed:
<feed xmlns="
http://www.w3.org/2005/Atom" xmlns:feed="http://www.w3.org/1999/xhtml">
<id>http://projects:8081/MySphere/blog/2/atom
</id>
<title><![CDATA[Blog]]></title>
<author>
<name>Alexander Netkachev</name>
<email>[EMAIL PROTECTED]
</email>
</author>
<updated>2007-03-18T13:19:45+00:00</updated>
<link rel="self" href="http://projects:8081/MySphere/blog/2/atom
" hreflang="en"/>
<rights>Alexander Natkachev, all rights reserved</rights>
<generator>Zend Framework Zend_Feed</generator>
<entry xmlns:feed="
http://www.w3.org/1999/xhtml">
<id>http://projects:8081/MySphere/blog/2/2007/03/18/zend-framework-beta-0-9-0-is-released
</id>
<title><![CDATA[Zend Framework Beta 0.9.0 is released]]></title>
<updated>2007-03-18T13:19:45+00:00</updated>
<link rel="alternate" href="
http://projects:8081/MySphere/blog/2/2007/03/18/zend-framework-beta-0-9-0-is-released"/>
<feed:summary xmlns:feed="
http://www.w3.org/1999/xhtml"
type="xhtml"><p>test</p></feed:summary>
</entry>
</feed>
As I see:
1. summary should not be in feed namespace
2. div is missed. It looks like it should be provided by the builder or
user's code but it is ok if is documented.
3. summary tag content is escaped when should not.
I'll experiment with it more when have more time.
Sincerely,
On 4/2/07, Olivier Sirven <[EMAIL PROTECTED] > wrote:
>
> Hi,
>
> I see it is much more complicated than I thought ;)
> Can you try the following patch to see if it fits your needs?
> To apply it, just set the current directory to the root of your Zend
> Framework
> package and call patch command this way:
> patch -p0 < /path/to/the/patch/zend_feed.patch
>
> To enable the support of xhtml atom content, you have to create your
> entry
> node like this:
> <?php
> // declare the summary as a valid xhtml content
> $node = new Zend_Feed_Builder_Entry($title, $link, $summary, true);
>
> // add a valid xhtml data the the atom content node
> $node->setContent($content, true);
> ?>
>
> Olivier
>
> Le samedi 31 mars 2007, Alexander Netkachev a écrit :
> > Hi,
> >
> > Atom has tree formats for text element content: text, html, xhtml.
> >
> > "text" means that the content of the element should be displayed as it
> is,
> > so if you write <summary
> type="text"><![CDATA[<em>test</em>]]></summary>
> > then you see exactly that is in the summary.
> >
> > "html" means that the content of the element is processed like it is
> html
> > with encoded entities.
> > So, either of <summary type="html"><![CDATA[<em>test</em>]]></summary>
> and
> > <summary type="html"><em<test</em></summary> are the same.
>
> >
> > "xhtml" means that the content of the entity is valid xhtml within
> <div
> > xmlns="...">...</div> tag.
> > See RFC 4287: 3.1.1.3. XHTML
> > <summary type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> This
> is
> > <b>XHTML</b> content. </div> </summary>
> > So, CDATA does not help in this case because
> > <summary type="xhtml"><![CDATA[<div></div>]]></summary> = <summary
> > type="xhtml"><div<</div></summary>
> > and it is incorrect format of the atom feed.
> >
> > Check the following feed:
> > <feed xmlns="http://www.w3.org/2005/Atom">
> > <title type="xhtml"><![CDATA[<div
> > xmlns="http://www.w3.org/1999/xhtml">Alex @ Net
> articles</div>]]></title>
> > <updated>2006-07-20T20:07:00Z</updated>
> > <author>
> > <name>Alexander Netkachev</name>
> > </author>
> > <id>http://alexatnet.com/blog/2</id>
> > </feed>
> > using the http://validator.w3.org/feed/.
> > It says that "Missing xhtml:div element" and "title claims to be
> inline,
> > but may contain html: div".
> >
> > So, the very right way to add the XML is to use type="xhtml" but it is
> not
> > possible with current Zend_Feed nor in <summary/> nor in <content/>.
> > My Atom toolkit (
> > http://www.alexatnet.com/blog/2/2006/06/02/atom-syndication-framework)
> has
> > not nice Api, but it supports XHTML content as follows:
> >
> > $entry = $feed->Add(new Ant_Atom_Entry());
> > $content = $entry->Add(Ant_Atom_Content::Inline( '<p><i>[Update: The
> Atom
> > draft is finished.]</i></p>', Ant_Atom_PlainText::Xhtml));
> > $content->SetAttribute('xml:lang', 'en');
> > $content->SetAttribute('xml:base', '
http://diveintomark.org/'<http://diveintomark.org/%27>
> );
> >
> >
> > Sincerely,
>
>
--
Alexander
http://www.alexatnet.com/ - Blog and CMS created with Zend Framework and
Ajax.
--
Alexander
http://www.alexatnet.com/ - Blog and CMS created with Zend Framework and
Ajax.