Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.trackback.getAutodiscoveryXml
on getAutodiscoveryXml (permalinkUrl, pingUrl, title="", subject="", description="", author="", postdate="") { <<Changes <<5/1/03; 12:57:03 PM by JES <<Created. Get the RDF snippet for Trackback auto-discovery. <<Parameters: <<permalinkUrl -- the permalinkUrl for the post <<pingUrl -- the URL to ping when sending a Trackback ping to this post <<title -- the title of the post -- default is the empty string <<Sample RDF snippet: <<<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <<<rdf:Description rdf:about="http://www.foo.com/archive.html#foo" dc:identifer="http://www.foo.com/archive.html#foo" dc:title="Foo Bar" trackback:ping="http://www.foo.com/tb.cgi/5" /> <<</rdf:RDF> local (xtext); on add (s) { xtext = xtext + (s + "\r");}; on entityEncode (s) { s = string.replaceAll (s, "&", "&"); s = string.replaceAll (s, "<", "<"); s = string.replaceAll (s, ">", ">"); s = string.replaceAll (s, "\"", """); s = string.replaceAll (s, "\'", "'"); return (s)}; on getShortString (s) { if sizeOf (s) > 255 { local (ix = 252); loop { if s[ix] == ' ' { s = string.mid (s, 1, ix - 1); break}; if ix == 1 { break}; ix--}; s = s + "..."}; return (s)}; if sizeOf (pingUrl) == 0 { //assume we ping the permalinkUrl pingUrl = permalinkUrl}; local (rdfns = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); local (dcns = "http://purl.org/dc/elements/1.1/"); local (tbns = "http://madskills.com/public/xml/rss/module/trackback/"); local (atts = ""); bundle { //build atts atts = atts + "\r\trdf:about=\"" + entityEncode (permalinkUrl) + "\""; atts = atts + "\r\tdc:identifier=\"" + entityEncode (permalinkUrl) + "\""; atts = atts + "\r\tdc:title=\"" + entityEncode (title) + "\""; atts = atts + "\r\ttrackback:ping=\"" + entityEncode (pingUrl) + "\""}; bundle { //if supplied, add subject, description, author and date to atts if sizeOf (subject) > 0 { atts = atts + "\r\tdc:subject=\"" + entityEncode (subject) + "\""}; if sizeOf (author) > 0 { atts = atts + "\r\tdc:creator=\"" + entityEncode (author) + "\""}; if sizeOf (description) > 0 { atts = atts + "\r\tdc:description=\"" + entityEncode (getShortString (description)) + "\""}; if sizeOf (postdate) > 0 { atts = atts + "\r\tdc:date=\"" + date.dateToIso8601String (postdate) + "\""}}; add ("<rdf:RDF xmlns:rdf=\"" + rdfns + "\"\r\txmlns:dc=\"" + dcns + "\"\r\txmlns:trackback=\"" + tbns + "\">"); add ("<rdf:Description " + atts + " />"); add ("</rdf:RDF>"); return (xtext)} <<bundle //test code <<wp.newTextObject (getAutodiscoveryXml ("http://jake.userland.com/2002/04/01.html#a123", "http://radio.xmlsotragesystem.com/trackbackPing?u=0001000&p=123", postDate:clock.now (), description:"<b>Foo</b>\r\r<i>bar</i>"), @workspace.xtext) <<edit (@workspace.xtext)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.