+(defun xml-cdata (str)
+ (concatenate 'string "<![CDATA[" str "]]>"))
+
+(defun write-xml-cdata (str s)
+ (declare (simple-string str) (optimize (speed 3) (safety 0)))
+ (do* ((len (length str))
+ (i 0 (1+ i)))
+ ((= i len) str)
+ (declare (fixnum i len))
+ (let ((c (schar str i)))
+ (case c
+ (#\< (write-string "<" s))
+ (#\& (write-string "&" s))
+ (t (write-char c s))))))
+