by Phil 'iwonder' Guerra
--- (Mission, KS) - I've wanted a better DNN internally generated news feed for quite some time. I had so much work in my queue that updating the DNN core code was one project held back. For the most part, I left the project up to the Core Team, afterall it is core code.
Well, I'm not satisified with the progress, and the DNN CT certainly has their priorities, and I'm not going to criticize the lack of attention, but I'm moving forward with taking on the project. It's not a very easy set of tasks to undertake, though. There's a lot involved, due to the coupling of the RSS feed generation to the Search mechanism, but I was surprised at how relatively fast I could deploy an improved news feed with a few minor changes to the RSSHandler, and the vw_Search SQL view. The results yield a much more rich RSSv2.0 feed, giving your public feed branding and support for many of the standard RSSv2.0 tags, not all mind you, but enough to allow you to syndicate with the internal methods, rather than a custom approach.
There's a lot more to be done, as I've only been targeting one module to incorporate the changes, the Announcements module. The enhanced approach requires some tweaking of a module's support of RSS, which is seriously deficient in most modules. I don't understand why most module's even have the ability to syndicate without providing support for it. Oh, well, that's another story.
I'll post more about the effort and provide the code in another post. Right now, it's time to celebrate my son's 21st birthday.
Cheers
Sunday, January 4, 2009
Saturday, January 3, 2009
DNN v5.0.0 Internal Syndication - Part 2
by Phil 'iwonder' Guerra
(Denver, CO) - Don't know if folks recognized this issue just yet, because it seems to be new with the DNNv5.0.0 release. In the Announcements module, I noticed that my generated newsfeed had changed somewhat. In previous versions, an syndicated news item had the following format: ModuleTitle - AnnouncementTitle. So, if you had setup an Announcements module to syndicate, what you got when you clicked on the syndicate icon was something like this:
Announcements - My Actual Announcement Title
In fact, I read a recent post on the Announcements forums where someone asked how to change that format, getting rid of the ModuleTitle. He was told by the project lead that it was not possible. Huh? Now, I don't mean to be disrespectful, because as a former DNN Core Team Memeber, I did not advocate changing DNN Core Code, unless there was a good business reason to do so. Changing Core Code means there's impact when the code is eventually upgraded, your mod will need to be redone at the very least, at worst- your mod will not buy you anything because the method you altered might be obsolete.
However, I knew there was a piece of code that could be tweaked to do it, so I set off on getting rid of this annoyance. Before I started work on it, I loaded up an Announcements module, put in some content, and hit the syndicate icon. Lo and behold, what did I see? Well, instead of the ModuleTitle - AnnouncementTitle being rendered as the Title in the news feed, I was getting just the ModuleTitle for every Announcement in the feed. Oh, man what a terrible implementation. I had to do something.
Anyways, I went about making the small tweak in the Announcements module I was set to do, because, it looked like that was something that still needed to be done. I really don't think folks want the ModuleTitle as part of any syndicated content, at least in the items listed. From what I could see this type of concatenated string was being populated into the SearchItem table, and at least I could change that piece.
Long story short, I made the change, and although, I could see that the SearchItem table reflected the change, the resulting news feed was unaffected. Now that set me off on a long search for the culprit. I was about to give up for the night, I simply could not find anything in the code that could cause this new format to be rendered. I decided to take another approach.
I brought up the database, and looked at the stored procedures, thinking maybe a call to one of those procs was responsible. Still no luck. Then, I thought, maybe there's a View causing this issue. Well, it didn't take long to verify my thinking (there aren't many views setup in the DNN database). I found the following View, vw_SearchItems that contained the following:
SELECT
si.SearchItemID,
m.PortalID,
tm.TabID,
m.ModuleID,
m.ModuleTitle As Title,
si.Description,
si.Author,
si.PubDate,
si.SearchKey,
si.Guid,
si.HitCount,
si.ImageFileId,
u.DisplayName AS AuthorName,
FROM
dbo.dnn_SearchItem AS si
LEFT OUTER JOIN
dbo.dnn_Users AS u ON si.Author = u.UserID
INNER JOIN
dbo.dnn_Modules AS m ON si.ModuleId = m.ModuleID
INNER JOIN
dbo.dnn_TabModules AS tm ON m.ModuleID = tm.ModuleID
As you can see, the offending line, in bold and red, was responsible. Instead of using the information directly from the SearchItem table for the item title element, the module name was being substituted. Well, I changed the view to use the si.title data, and the results were immediate. Now, my announcement's news feed was correctly displaying the Announcement Title as the newsfeed item 'title' element. Something like this example:
My Actual Announcement Title
Now, you'll have to make the change in the code and recompile for every module that you want to show up without the ModuleTitle in the 'title' element, and that's a heavy chore. I'm hoping that the DNN CT will listen to an appeal to change this implementation. In case you want to look for the code for the Announcements, look at the code:
Announcements\Components\AnnouncementsController.vb
Search for the Function GetSearchItems, and in that routine is a line:
SearchItem = New SearchItemInfo(ModInfo.ModuleTitle & " - " & .Title, strDescription, .CreatedByUser, .PublishDate, ModInfo.ModuleID, .ItemId.ToString, strContent, "ItemId=" & .ItemId.ToString)
Change it to this line, which gets rid of the concatenation of the ModuleTitle '-' to the .Title:
SearchItem = New SearchItemInfo(.Title, strDescription, .CreatedByUser, .PublishDate, ModInfo.ModuleID, .ItemId.ToString, strContent, "ItemId=" & .ItemId.ToString)
Compile the Announcements solution, and replace the existing Announcements.dll with the newly created one. Then, make your change to the SQL database View as described above.
You can do this change yourself, as well if you want, but it does alter the Core code, so unless the CT decides that this is a better approach, your change will get lost when you upgrade.
Also, from what I can tell, any module that assigns a 'title' that isn't the module name will be changed as well, becuase the View change is a global.
(Denver, CO) - Don't know if folks recognized this issue just yet, because it seems to be new with the DNNv5.0.0 release. In the Announcements module, I noticed that my generated newsfeed had changed somewhat. In previous versions, an syndicated news item had the following format: ModuleTitle - AnnouncementTitle. So, if you had setup an Announcements module to syndicate, what you got when you clicked on the syndicate icon was something like this:
Announcements - My Actual Announcement Title
In fact, I read a recent post on the Announcements forums where someone asked how to change that format, getting rid of the ModuleTitle. He was told by the project lead that it was not possible. Huh? Now, I don't mean to be disrespectful, because as a former DNN Core Team Memeber, I did not advocate changing DNN Core Code, unless there was a good business reason to do so. Changing Core Code means there's impact when the code is eventually upgraded, your mod will need to be redone at the very least, at worst- your mod will not buy you anything because the method you altered might be obsolete.
However, I knew there was a piece of code that could be tweaked to do it, so I set off on getting rid of this annoyance. Before I started work on it, I loaded up an Announcements module, put in some content, and hit the syndicate icon. Lo and behold, what did I see? Well, instead of the ModuleTitle - AnnouncementTitle being rendered as the Title in the news feed, I was getting just the ModuleTitle for every Announcement in the feed. Oh, man what a terrible implementation. I had to do something.
Anyways, I went about making the small tweak in the Announcements module I was set to do, because, it looked like that was something that still needed to be done. I really don't think folks want the ModuleTitle as part of any syndicated content, at least in the items listed. From what I could see this type of concatenated string was being populated into the SearchItem table, and at least I could change that piece.
Long story short, I made the change, and although, I could see that the SearchItem table reflected the change, the resulting news feed was unaffected. Now that set me off on a long search for the culprit. I was about to give up for the night, I simply could not find anything in the code that could cause this new format to be rendered. I decided to take another approach.
I brought up the database, and looked at the stored procedures, thinking maybe a call to one of those procs was responsible. Still no luck. Then, I thought, maybe there's a View causing this issue. Well, it didn't take long to verify my thinking (there aren't many views setup in the DNN database). I found the following View, vw_SearchItems that contained the following:
SELECT
si.SearchItemID,
m.PortalID,
tm.TabID,
m.ModuleID,
m.ModuleTitle As Title,
si.Description,
si.Author,
si.PubDate,
si.SearchKey,
si.Guid,
si.HitCount,
si.ImageFileId,
u.DisplayName AS AuthorName,
FROM
dbo.dnn_SearchItem AS si
LEFT OUTER JOIN
dbo.dnn_Users AS u ON si.Author = u.UserID
INNER JOIN
dbo.dnn_Modules AS m ON si.ModuleId = m.ModuleID
INNER JOIN
dbo.dnn_TabModules AS tm ON m.ModuleID = tm.ModuleID
As you can see, the offending line, in bold and red, was responsible. Instead of using the information directly from the SearchItem table for the item title element, the module name was being substituted. Well, I changed the view to use the si.title data, and the results were immediate. Now, my announcement's news feed was correctly displaying the Announcement Title as the newsfeed item 'title' element. Something like this example:
My Actual Announcement Title
Now, you'll have to make the change in the code and recompile for every module that you want to show up without the ModuleTitle in the 'title' element, and that's a heavy chore. I'm hoping that the DNN CT will listen to an appeal to change this implementation. In case you want to look for the code for the Announcements, look at the code:
Announcements\Components\AnnouncementsController.vb
Search for the Function GetSearchItems, and in that routine is a line:
SearchItem = New SearchItemInfo(ModInfo.ModuleTitle & " - " & .Title, strDescription, .CreatedByUser, .PublishDate, ModInfo.ModuleID, .ItemId.ToString, strContent, "ItemId=" & .ItemId.ToString)
Change it to this line, which gets rid of the concatenation of the ModuleTitle '-' to the .Title:
SearchItem = New SearchItemInfo(.Title, strDescription, .CreatedByUser, .PublishDate, ModInfo.ModuleID, .ItemId.ToString, strContent, "ItemId=" & .ItemId.ToString)
Compile the Announcements solution, and replace the existing Announcements.dll with the newly created one. Then, make your change to the SQL database View as described above.
You can do this change yourself, as well if you want, but it does alter the Core code, so unless the CT decides that this is a better approach, your change will get lost when you upgrade.
Also, from what I can tell, any module that assigns a 'title' that isn't the module name will be changed as well, becuase the View change is a global.
Friday, January 2, 2009
vs2005 Error - The project type is not supported
by Phil 'iwonder' Guerra
(Mesa, AZ) - As if there aren't enough problems to sort out... This morning on my development workstation, which has worked fine until today, vs2005 studio is giving me the following error message - 'The project type is not supported in this installation.' Now, I'm not sure what it is that changed a project over the holidays, while I was away, but last week, I had no trouble loading this project.
Oh, well, happy new year. More on the issue, when I've found a fix. Until then, keep your workstation unplugged when not is use, avoid those pesky Microsoft Updates.
(Mesa, AZ) - As if there aren't enough problems to sort out... This morning on my development workstation, which has worked fine until today, vs2005 studio is giving me the following error message - 'The project type is not supported in this installation.' Now, I'm not sure what it is that changed a project over the holidays, while I was away, but last week, I had no trouble loading this project.
Oh, well, happy new year. More on the issue, when I've found a fix. Until then, keep your workstation unplugged when not is use, avoid those pesky Microsoft Updates.
Thursday, January 1, 2009
DNN v5.0.0 Internal Syndication
by Phil 'iwonder' Guerra
--- (Phoenix, AZ) - With the New Year underway, I thought I'd start out right by installing and testing the new version of DNN v5.0.0. Installation went without a hitch, so no worries there. However, I'm just putting in some test content using the Announcements module to see what the DNN internal RSS news syndication is doing. Having been away from looking into that side of syndication with DNN, I was curious to see if anything new is available to us. Sadly, I can report that DNN internal RSS syndication is below par and is a real disappointment from an otherwise improved look and feel release.
Does anyone really think that a DNN news feed is worth anything? It's the barest form of RSS, and the implementation of what gets syndicated is really confusing. For example, the Announcements module has taken some strides in allowing a bit more flexibility, giving the user the ability to specify how much of the text content is used in the syndicated description. Trouble is - you can change this field, but it only affects items added after the change. Probably a caching issue somewhere, and not the Announcements module's fault, as there is no real indication that there is anything that limiting in the tables for it.
The other frustrating issue is how the syndicated content is built. With the Announcements module, the DNN created feed uses the module's Name for every entry as the title element. instead of the title of the actual announcement title, which is what I would expect. With this type of usage a DNN internal syndicated feed offers very little in the way of driving traffic to your site with it's lack of syndication features. Small wonder, then, that many DNN projects have gone to creating their own syndication routines. That's at least something, but it's not the best of world's. What is really needed is a standard syndication API that is followed by all DNN project module developers. Without this kind of API, DNN default projects and DNN syndication will always remain a mystery to users.
As I've blogged previously, there is a serious need to overhaul all of the default DNN standard modules to include better support of syndication. Every module capable of implementing syndication ought to have the basics information available to syndicate, title, pubDate, author, and description are really needed for a bare bones syndicated content. There are many many other useful options available, it's a real shame to see DNN so far behind in news syndication.
So far, I give it a failing grade, and hope that someone is working on improving it.
--- (Phoenix, AZ) - With the New Year underway, I thought I'd start out right by installing and testing the new version of DNN v5.0.0. Installation went without a hitch, so no worries there. However, I'm just putting in some test content using the Announcements module to see what the DNN internal RSS news syndication is doing. Having been away from looking into that side of syndication with DNN, I was curious to see if anything new is available to us. Sadly, I can report that DNN internal RSS syndication is below par and is a real disappointment from an otherwise improved look and feel release.
Does anyone really think that a DNN news feed is worth anything? It's the barest form of RSS, and the implementation of what gets syndicated is really confusing. For example, the Announcements module has taken some strides in allowing a bit more flexibility, giving the user the ability to specify how much of the text content is used in the syndicated description. Trouble is - you can change this field, but it only affects items added after the change. Probably a caching issue somewhere, and not the Announcements module's fault, as there is no real indication that there is anything that limiting in the tables for it.
The other frustrating issue is how the syndicated content is built. With the Announcements module, the DNN created feed uses the module's Name for every entry as the title element. instead of the title of the actual announcement title, which is what I would expect. With this type of usage a DNN internal syndicated feed offers very little in the way of driving traffic to your site with it's lack of syndication features. Small wonder, then, that many DNN projects have gone to creating their own syndication routines. That's at least something, but it's not the best of world's. What is really needed is a standard syndication API that is followed by all DNN project module developers. Without this kind of API, DNN default projects and DNN syndication will always remain a mystery to users.
As I've blogged previously, there is a serious need to overhaul all of the default DNN standard modules to include better support of syndication. Every module capable of implementing syndication ought to have the basics information available to syndicate, title, pubDate, author, and description are really needed for a bare bones syndicated content. There are many many other useful options available, it's a real shame to see DNN so far behind in news syndication.
So far, I give it a failing grade, and hope that someone is working on improving it.
Tuesday, December 30, 2008
DNN and Podcasting
by Phil 'iwonder' Guerra
- (Mission, KS) - Here's a bit of something I ran across while looking into a question about DNN and whether or not it supports podcasts. First, out of the box, DNN will support podcast with only the XML/XSL module, and you'll need a custom xsl to do it.
Secondly, the presentation and results vary by browser. I created a custom xsl that enables presentation of the information in a newsfeed that point (links) to the actual podcast, which is usually an mp3 or video file of some sort. It's pretty straightforward transformation of the enclosure element, which contains a URL, type, and size. All 3 attributes are important as there are some issues with downloading that content for some browsers, at least that's the case when IE7 is used. Firefox did not have a problem, but I ran into issues when I used IE7. Why?
Well, it took some googling, but here's a link to the secret, IE7 has a 'limit' on the size it will allow to be downloaded. No file larger than 15MB on servers that do not support HTTP range requests. Since, I'm using a test environment built on Windows XP, and using IIS v5.0, I'm not sure if that's the real problem or not. I'll toss the custom XSL I created to test and show how I'm doing this for a particular site, DNN Creative DotNetNuke Podcasts and give me feedback. (I don't have a public DNN website, it's a matter of controlling my expenses, which is why I blog freely.)
Anyway, using FireFox, tells me that DNN will support presentation of news feeds that include podcasts, and that's the good news.
Here's an example XSL to use with the DNN XML/XSL module to present the DNNCreative Podcast newsfeed. Just a couple notes:
1) I'm not advocating adding the ability to include enclosures wholesale on a website. There are a number of security issues with doing so. I provide this example as quick 'how-to' not as a reccommended practice. Above all know your newssource and test on a non-production site to aovid issues.
2) This example was specifically built to transform the DNN Creative DotNetNuke Podcast feed. As such, you would have to modify it for any other use. Also, feeds change formats from time to time, so it may not always work. However, if you are seriously considering doing this type of thing, you'll need to be more than a novice with XML and XSL to get the most of this type of transformation.
3) To use this code, cut and paste it into a text file using a simple text editor. Save it as PodcastEnabled.xsl, and then upload it to you site during the setup conversation of a DNN XML/XSL module. I know the formatting of this code is less than desireable, but that's a function of my blogger app, so sorry. If you have a lot of problems with the xsl example, leave a comment and I'll go over it.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:media="http://search.yahoo.com/mrss/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" >
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<!-- phil 'iwonder' guerra - PodcastEnabled.xsl - custom xsl for DnnCreative Podcasts -->
<xsl:template match="/">
<div>
<xsl:apply-templates select="rss/channel"/>
</div>
</xsl:template>
<xsl:template match="rss/channel">
<xsl:apply-templates select="item"/>
</xsl:template>
<xsl:template match="item">
<xsl:variable name="item_link" select="link"/>
<xsl:variable name="podlink" select="enclosure/@url"/>
<xsl:variable name="podmedia" select="enclosure/@type"/>
<xsl:variable name="altmedia" select="feedburner:origLink"/>
<xsl:variable name="item_title" select="description"/>
<div class="rssItemDescription">
<xsl:value-of select="description" disable-output-escaping="yes"/>
</div>
<div class="rssItemSub">
<xsl:if test="enclosure/@url">
<a href="{$podlink}">Listen Now</a> (<xsl:value-of select="$podmedia"/> - Size <xsl:value-of select="enclosure/@length"/>)<br></br>
</xsl:if>
<xsl:if test="not(enclosure/@url)">
<a href="{$altmedia}">See the Video</a>
</xsl:if>
(<xsl:value-of select="pubDate"/>) <hr/>
</div>
</xsl:template>
</xsl:stylesheet>
- (Mission, KS) - Here's a bit of something I ran across while looking into a question about DNN and whether or not it supports podcasts. First, out of the box, DNN will support podcast with only the XML/XSL module, and you'll need a custom xsl to do it.
Secondly, the presentation and results vary by browser. I created a custom xsl that enables presentation of the information in a newsfeed that point (links) to the actual podcast, which is usually an mp3 or video file of some sort. It's pretty straightforward transformation of the enclosure element, which contains a URL, type, and size. All 3 attributes are important as there are some issues with downloading that content for some browsers, at least that's the case when IE7 is used. Firefox did not have a problem, but I ran into issues when I used IE7. Why?
Well, it took some googling, but here's a link to the secret, IE7 has a 'limit' on the size it will allow to be downloaded. No file larger than 15MB on servers that do not support HTTP range requests. Since, I'm using a test environment built on Windows XP, and using IIS v5.0, I'm not sure if that's the real problem or not. I'll toss the custom XSL I created to test and show how I'm doing this for a particular site, DNN Creative DotNetNuke Podcasts and give me feedback. (I don't have a public DNN website, it's a matter of controlling my expenses, which is why I blog freely.)
Anyway, using FireFox, tells me that DNN will support presentation of news feeds that include podcasts, and that's the good news.
Here's an example XSL to use with the DNN XML/XSL module to present the DNNCreative Podcast newsfeed. Just a couple notes:
1) I'm not advocating adding the ability to include enclosures wholesale on a website. There are a number of security issues with doing so. I provide this example as quick 'how-to' not as a reccommended practice. Above all know your newssource and test on a non-production site to aovid issues.
2) This example was specifically built to transform the DNN Creative DotNetNuke Podcast feed. As such, you would have to modify it for any other use. Also, feeds change formats from time to time, so it may not always work. However, if you are seriously considering doing this type of thing, you'll need to be more than a novice with XML and XSL to get the most of this type of transformation.
3) To use this code, cut and paste it into a text file using a simple text editor. Save it as PodcastEnabled.xsl, and then upload it to you site during the setup conversation of a DNN XML/XSL module. I know the formatting of this code is less than desireable, but that's a function of my blogger app, so sorry. If you have a lot of problems with the xsl example, leave a comment and I'll go over it.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:media="http://search.yahoo.com/mrss/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" >
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<!-- phil 'iwonder' guerra - PodcastEnabled.xsl - custom xsl for DnnCreative Podcasts -->
<xsl:template match="/">
<div>
<xsl:apply-templates select="rss/channel"/>
</div>
</xsl:template>
<xsl:template match="rss/channel">
<xsl:apply-templates select="item"/>
</xsl:template>
<xsl:template match="item">
<xsl:variable name="item_link" select="link"/>
<xsl:variable name="podlink" select="enclosure/@url"/>
<xsl:variable name="podmedia" select="enclosure/@type"/>
<xsl:variable name="altmedia" select="feedburner:origLink"/>
<xsl:variable name="item_title" select="description"/>
<div class="rssItemDescription">
<xsl:value-of select="description" disable-output-escaping="yes"/>
</div>
<div class="rssItemSub">
<xsl:if test="enclosure/@url">
<a href="{$podlink}">Listen Now</a> (<xsl:value-of select="$podmedia"/> - Size <xsl:value-of select="enclosure/@length"/>)<br></br>
</xsl:if>
<xsl:if test="not(enclosure/@url)">
<a href="{$altmedia}">See the Video</a>
</xsl:if>
(<xsl:value-of select="pubDate"/>) <hr/>
</div>
</xsl:template>
</xsl:stylesheet>
Wednesday, December 24, 2008
Useful Site Links for RSS Info
by Phil 'iwonder' Guerra
--- (Mission, KS) - I've been asked about how one goes about learning about RSS in general, and how to learn more about DNN's usage of it. I'll post some links to sites, posts, and articles, I've found useful for folks from novice to advanced. Again, links change so frequently, just drop me a comment, or email if one goes sour.
DNN Creative - DNN and RSS content - Lee Sykes developed this site years back. He has a lot of information on RSS and DNN. Some content is free, while other is available via subscription. At last check the RSS information was still free, with some of it culled from DNN forums and smartly organized by Lee. Good info all around for RSS, a nice tutorial for newbies. Although, many of the examples are using the older RSS module, the basic info about RSS is still relevant.
RSS and Atom Specifications
If you are going to work with RSS, you'll want to examine the following sites, which speak to the actual specifications for RSS. DNN, currently uses RSS internally, and the new module is supposed to seamlessly support various RSS specifiations, but as I've mentioned before there are quite a few 'gotchas'. Whenever I'm in doubt about a particular news source's implementation, I refer to these sites for reference.
Now, truthfully, there is wide disagreement over which spec and version to adopt. In the end, the choice as a developer is up to you. The only thing that really matters is that you take the time to follow the specs. Nothing is worse than a feed that says it's a certain RSS or Atom feed implementation, and then does not follow the defined specs.
RSS v2.0 Specifications - Official RSS Advisory Board - The keeper of the specification changed, but the information is the same. Here on this site is a wealth of information about RSS v2.0, including samples, and explainations of the specification. If you are a developer writing a news generator for RSS v2.0, you really have no excuse for not learning all you can, which includes all of the information about what is and what is not valid usage. If you are using RSS newfeeds, you really need to understand the specification to get the most use out of any newsfeed that utilizes RSS v2.0. Other versions of RSS are archived and linked from this site, as well.
Atom v1.0 - This document specifies Atom, an XML-based Web content and metadata syndication format. It's not the user friendly format site, but the RFC document. Again, this spec should be something you know to get the most out of any Atom feed.
Atom Enabled v0.3 and v1.0 - This is a nice site with loads of information. Not as dry as the RFC, but I refer to it becuase it, also, describes the protocol for the publishing world.
Custom Namespaces
Namespace references are utilized within newsfeeds to extend the RSS version specifications. As RSS has evolved, the specs originally conceived with RSS could not envision the many usages that syndication adopters needed. The ability to extend the specifications was a way to offer the ability to allow for the future. Take a look at the source of your newsfeed, and I'd bet you'll find a custom namespace thrown in to use some custom xml tag contained in it. Just like the RSS specs, by definition a custom namespace needs a reference for developers to understand what is and isn't allowed. Most news readers will check the specs and fail to present any unknown tags or invalid usage. It isn't always clear cut, but understanding these custom tags begins with knowing about their implementation.
Dublin Core (DC) - The document in this link summarizes the updated definitions for the Dublin Core metadata elements as originally defined in [RFC2413]. These new definitions will be officially known as Version 1.1. The tags defined are used quite frequently in the more popular newsfeeds.
Newsfeed Validation
Many times you wonder about a news feed source. Especially, using DNN's latest version, which gives almost no worthwhile information if a feed fails. Just getting a 'download error' message does you no good. So, how can you tell what's going on? Well, as Ian Anderson from Jethro Tull proclaimed 'Nothing Is Easy'. If you continue to run into issues. One step I highly recommend is to validate your newsfeed source. You'll get an idea of the kind of errors that are likely to be thrown by a 'good' newsfeed reader.
W3C Feed Validation Service, for Atom and RSS - There are more than a couple of sites that allow validation on-line, and this is the one I use most often. The site pointed to in the above link is useful for Atom and RSS.
--- (Mission, KS) - I've been asked about how one goes about learning about RSS in general, and how to learn more about DNN's usage of it. I'll post some links to sites, posts, and articles, I've found useful for folks from novice to advanced. Again, links change so frequently, just drop me a comment, or email if one goes sour.
DNN Creative - DNN and RSS content - Lee Sykes developed this site years back. He has a lot of information on RSS and DNN. Some content is free, while other is available via subscription. At last check the RSS information was still free, with some of it culled from DNN forums and smartly organized by Lee. Good info all around for RSS, a nice tutorial for newbies. Although, many of the examples are using the older RSS module, the basic info about RSS is still relevant.
RSS and Atom Specifications
If you are going to work with RSS, you'll want to examine the following sites, which speak to the actual specifications for RSS. DNN, currently uses RSS internally, and the new module is supposed to seamlessly support various RSS specifiations, but as I've mentioned before there are quite a few 'gotchas'. Whenever I'm in doubt about a particular news source's implementation, I refer to these sites for reference.
Now, truthfully, there is wide disagreement over which spec and version to adopt. In the end, the choice as a developer is up to you. The only thing that really matters is that you take the time to follow the specs. Nothing is worse than a feed that says it's a certain RSS or Atom feed implementation, and then does not follow the defined specs.
RSS v2.0 Specifications - Official RSS Advisory Board - The keeper of the specification changed, but the information is the same. Here on this site is a wealth of information about RSS v2.0, including samples, and explainations of the specification. If you are a developer writing a news generator for RSS v2.0, you really have no excuse for not learning all you can, which includes all of the information about what is and what is not valid usage. If you are using RSS newfeeds, you really need to understand the specification to get the most use out of any newsfeed that utilizes RSS v2.0. Other versions of RSS are archived and linked from this site, as well.
Atom v1.0 - This document specifies Atom, an XML-based Web content and metadata syndication format. It's not the user friendly format site, but the RFC document. Again, this spec should be something you know to get the most out of any Atom feed.
Atom Enabled v0.3 and v1.0 - This is a nice site with loads of information. Not as dry as the RFC, but I refer to it becuase it, also, describes the protocol for the publishing world.
Custom Namespaces
Namespace references are utilized within newsfeeds to extend the RSS version specifications. As RSS has evolved, the specs originally conceived with RSS could not envision the many usages that syndication adopters needed. The ability to extend the specifications was a way to offer the ability to allow for the future. Take a look at the source of your newsfeed, and I'd bet you'll find a custom namespace thrown in to use some custom xml tag contained in it. Just like the RSS specs, by definition a custom namespace needs a reference for developers to understand what is and isn't allowed. Most news readers will check the specs and fail to present any unknown tags or invalid usage. It isn't always clear cut, but understanding these custom tags begins with knowing about their implementation.
Dublin Core (DC) - The document in this link summarizes the updated definitions for the Dublin Core metadata elements as originally defined in [RFC2413]. These new definitions will be officially known as Version 1.1. The tags defined are used quite frequently in the more popular newsfeeds.
Newsfeed Validation
Many times you wonder about a news feed source. Especially, using DNN's latest version, which gives almost no worthwhile information if a feed fails. Just getting a 'download error' message does you no good. So, how can you tell what's going on? Well, as Ian Anderson from Jethro Tull proclaimed 'Nothing Is Easy'. If you continue to run into issues. One step I highly recommend is to validate your newsfeed source. You'll get an idea of the kind of errors that are likely to be thrown by a 'good' newsfeed reader.
W3C Feed Validation Service, for Atom and RSS - There are more than a couple of sites that allow validation on-line, and this is the one I use most often. The site pointed to in the above link is useful for Atom and RSS.
Useful Developer Tools
by Phil 'iwonder' Guerra
--- (Mission, KS) - In this blog entry, I'll list some of the tools I use in working with XML and DNN. Due to the fast changing world of the internet, not all links my work, but at the time of this posting, all were functioning. I don't get paid for this kind of endorsement, so don't hound me, if you don't find the tool useful, or if you run into problems with using it. I can't offer any tutorials on them - because as my friend, Morris 'Uncle' Milton would say, 'Like man it's free!'.
1) PFE32 - Basic Text Editor - I use it because it's much handier than any other ascii text editor, including NotePad.
2) Xselerator - XML/XSL Debugging Tool - This is one great tool for developing and debugging XML and XSL. It used to be a free 30 day trial, but now is an open source project. Even if this tool cost money, I would recommend getting it. I use it most everyday. It's available at Sourceforge, so get it as soon as you can.
That's all for now. I'll post more as I think about it.
--- (Mission, KS) - In this blog entry, I'll list some of the tools I use in working with XML and DNN. Due to the fast changing world of the internet, not all links my work, but at the time of this posting, all were functioning. I don't get paid for this kind of endorsement, so don't hound me, if you don't find the tool useful, or if you run into problems with using it. I can't offer any tutorials on them - because as my friend, Morris 'Uncle' Milton would say, 'Like man it's free!'.
1) PFE32 - Basic Text Editor - I use it because it's much handier than any other ascii text editor, including NotePad.
2) Xselerator - XML/XSL Debugging Tool - This is one great tool for developing and debugging XML and XSL. It used to be a free 30 day trial, but now is an open source project. Even if this tool cost money, I would recommend getting it. I use it most everyday. It's available at Sourceforge, so get it as soon as you can.
That's all for now. I'll post more as I think about it.
Subscribe to:
Posts (Atom)
