Original Link: http://www.sqlservercentral.com/articles/XML/64135/CREATE FUNCTION GenerateRss20( @ch XML, -- Channel Information @itm XML -- Item Information)RETURNS XMLASBEGIN -- This is the variable that will hold the result (RSS feed) DECLARE @rss XML /* To make the process easier, let us transform Channel and Item information to a virtual table using CTE. */ ;WITH channel AS ( SELECT c.value('Title[1]','VARCHAR(500)') AS Title, c.value('Link[1]','VARCHAR(500)') AS Link, c.value('Description[1]','VARCHAR(MAX)') AS Description, c.value('Webmaster[1]','VARCHAR(50)') AS Webmaster, c.value('Language[1]','VARCHAR(20)') AS Language, c.value('ImageUrl[1]','VARCHAR(500)') AS ImageUrl, c.value('ImageTitle[1]','VARCHAR(500)') AS ImageTitle, c.value('ImageLink[1]','VARCHAR(500)') AS ImageLink, c.value('ImageWidth[1]','INT') AS ImageWidth, c.value('ImageHeight[1]','INT') AS ImageHeight, c.value('CopyRight[1]','VARCHAR(100)') AS CopyRight, c.value('LastBuildDate[1]','DATETIME') AS LastBuildDate, c.value('Ttl[1]','INT') AS Ttl FROM @ch.nodes('/Channel') ch(c) ), items AS ( SELECT i.value('Title[1]','VARCHAR(500)') AS Title, i.value('Link[1]','VARCHAR(500)') AS Link, i.value('Description[1]','VARCHAR(MAX)') AS Description, i.value('Guid[1]','VARCHAR(500)') AS Guid, i.value('PubDate[1]','DATETIME') AS PubDate FROM @itm.nodes('/Item/Items') itm(i) ) /* Generate the RSS feed and assign to the local variable */ SELECT @rss = ( SELECT '2.0' AS '@version', ( SELECT Title AS title, Link AS link, Description AS description, Webmaster AS webMaster, ISNULL(Language, 'en-us') AS language, ImageUrl AS 'image/url', ImageTitle AS 'image/title', ImageLink AS 'image/link', ImageWidth AS 'image/width', ImageHeight AS 'image/height', CopyRight AS copyright, LEFT(DATENAME(dw, ISNULL(LastBuildDate,GETDATE())),3) + ', ' + STUFF(CONVERT(nvarchar,ISNULL(LastBuildDate,GETDATE()),113),21,4,' GMT') AS lastBuildDate, Ttl AS ttl, ( SELECT Title AS title, Link AS link, Description AS description, CASE WHEN ISNULL(guid, Link) IS NULL THEN NULL ELSE 'true' END AS 'guid/@isPermaLink', ISNULL(Guid, Link) AS guid, LEFT(DATENAME(dw, ISNULL(PubDate,GETDATE())),3) + ', ' + STUFF(CONVERT(nvarchar,ISNULL(PubDate,GETDATE()),113),21,4,' GMT') AS pubDate FROM Items FOR XML PATH('item'), TYPE ) FROM channel FOR XML PATH('channel'), TYPE ) FOR XML PATH('rss') ) -- return the feed RETURN @rssEND