anchor.diff:  ;; |    S           ::= (see XML spec)
   ;; |
   ;; | Attributes are in lexicographical order (in Unicode bit order).
  -;; |  
  +;; |
   ;; | A canonical XML document is encoded in UTF-8.
  -;; |  
  +;; |
   ;; | Ignorable white space is considered significant and is treated
   ;; | equivalently to data.
   ;;
  
positive.code: ;; bisschen unschoen hier die ganze api zu duplizieren, aber die
  ;; ystreams sind noch undokumentiert
  (macrolet ((define-maker (make-sink make-ystream &rest args)
  	     `(defun ,make-sink (,@args &rest initargs
  				        &key encoding &allow-other-keys)
  		(let* ((encoding (or encoding "UTF-8"))
  		       (ystream (,make-ystream ,@args)))
  		  (setf (ystream-encoding ystream)
  			(runes:find-output-encoding encoding))
  		  (apply #'make-instance
  			 'sink
  			 :ystream ystream
  			 :encoding encoding
  			 initargs)))))
    (define-maker make-octet-vector-sink make-octet-vector-ystream)
    (define-maker make-octet-stream-sink make-octet-stream-ystream stream)
    (define-maker make-rod-sink make-rod-ystream)
  
negative.code:        for i from start below end
         for c = (rune rod i)
         do
           (case c
             (#/& (ystream-write-escapable-rod #.(string-rod "&amp;") y))
             (#/< (ystream-write-escapable-rod #.(string-rod "&lt;") y))
             (#/> (ystream-write-escapable-rod #.(string-rod "&gt;") y))
             (#/\" (ystream-write-escapable-rod #.(string-rod "&quot;") y))
             (#/U+0009 (ystream-write-escapable-rod #.(string-rod "&#9;") y))
             (#/U+000A (ystream-write-escapable-rod #.(string-rod "&#10;") y))
             (#/U+000D (ystream-write-escapable-rod #.(string-rod "&#13;") y))
             (t (ystream-write-escapable-rune c y))))))
  
  (defun sink-write-escapable-rod/dtd
      (rod sink &key (start 0) (end (length rod)))
  