Update of /project/cxml/cvsroot/cxml/dom
In directory common-lisp.net:/tmp/cvs-serv8594/dom
Modified Files:
dom-impl.lisp
Log Message:
importnode07 und namednodemapremovenameditemns02.xml geworkaroundet
*nichtueberzeugtsei*
Date: Sun Dec 11 20:28:00 2005
Author: dlichteblau
Index: cxml/dom/dom-impl.lisp
diff -u cxml/dom/dom-impl.lisp:1.23 cxml/dom/dom-impl.lisp:1.24
--- cxml/dom/dom-impl.lisp:1.23 Sun Dec 11 19:47:28 2005
+++ cxml/dom/dom-impl.lisp Sun Dec 11 20:28:00 2005
@@ -1045,7 +1045,11 @@
dtd))))
(when e
(dolist (a (cxml::elmdef-attributes e))
- (when (and a (listp (cxml::attdef-default a)))
+ (when (and a
+ (listp (cxml::attdef-default a))
+ (not (dom:get-attribute-node
+ element
+ (cxml::attdef-name a))))
(add-default-attribute element a))))))
(defun add-default-attribute (element adef)
@@ -1055,6 +1059,15 @@
(text (dom:create-text-node owner value)))
(setf (slot-value anode 'specified-p) nil)
(setf (slot-value anode 'owner-element) element)
+ (multiple-value-bind (prefix local-name)
+ (handler-case
+ (cxml::split-qname (cxml::attdef-name adef))
+ (cxml:well-formedness-violation (c)
+ (dom-error :NAMESPACE_ERR "~A" c)))
+ ;; das ist fuer importnode07.
+ ;; so richtig ueberzeugend finde ich das ja nicht.
+ (setf (slot-value anode 'prefix) prefix)
+ (setf (slot-value anode 'local-name) local-name))
(dom:append-child anode text)
(push anode (slot-value (dom:attributes element) 'items))))
@@ -1292,6 +1305,7 @@
(dom:set-attribute result
(dom:name attribute)
(dom:value attribute)))))
+ (add-default-attributes result)
result))
(defmethod dom:import-node ((document document) (node entity) deep)