+(defun atom-xhtml-convert-links (node base)
+ "Make all links in NODE (a fragment of an XHTML document)
+absolute, in the context of BASE, an URL."
+ (dolist (attr-name (list 'href 'src))
+ (let ((attr (assoc attr-name (xml-node-attributes node))))
+ (when attr (setcdr attr (url-canonalize (cdr attr) base)))))
+ (dolist (child (xml-node-children node))
+ (when (listp child) (atom-xhtml-convert-links child base))))
+
+(defun url-canonalize (address base)
+ "Make ADRESS an absolute URL, taking it in the BASE context."
+ ;; I feel such a function should exist in `url-parse'. Did I miss it?
+ (let ((url-base (url-generic-parse-url base))
+ (url-address (url-generic-parse-url address)))
+ (if (url-host url-address)
+ address
+ (setf (url-filename url-base)
+ (expand-file-name address
+ (file-name-directory (url-filename url-base))))
+ (url-recreate-url url-base))))