Accessing attribute values directly

Accessing values without going through attribute nodes:
(defun attribute-value (element name &optional uri) ...)
(defun (setf attribute-value) (newval element name &optional uri) ...)

with-attributes is like with-accessors:
(let ((e (stp:document-element
	  (cxml:parse "<foo a='quux'/>" (stp:make-builder)))))
  (stp:with-attributes ((a "a") (b "x:b" "http://foo")) e
    (setf b (concatenate 'string ".oO(" a ")"))
    e))
#.(CXML-STP:ELEMENT
   :ATTRIBUTES '(#.(CXML-STP:ATTRIBUTE
                    :VALUE ".oO(quux)"
                    :LOCAL-NAME "b"
                    :NAMESPACE-PREFIX "x"
                    :NAMESPACE-URI "http://foo")
                 #.(CXML-STP:ATTRIBUTE
                    :VALUE "1"
                    :LOCAL-NAME "a"))
   :LOCAL-NAME "foo")