From 58c3cc32c8f2d63f53ca0a3e669f4f43d8ff8169 Mon Sep 17 00:00:00 2001 From: dlichteblau Date: Sun, 11 Dec 2005 19:27:59 +0000 Subject: [PATCH] importnode07 und namednodemapremovenameditemns02.xml geworkaroundet *nichtueberzeugtsei* --- DOMTEST | 7 +------ dom/dom-impl.lisp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/DOMTEST b/DOMTEST index 6501d8e..ce72930 100644 --- a/DOMTEST +++ b/DOMTEST @@ -714,7 +714,6 @@ implementationAttribute expandEntityReferences not supported, skipping test 681/808 importNode05.xml 682/808 importNode06.xml 683/808 importNode07.xml -TEST FAILED: The assertion (EQL (LENGTH DOMTEST::COLLECTION) 1) failed. 684/808 importNode08.xml 685/808 importNode09.xml 686/808 importNode10.xml @@ -753,10 +752,6 @@ TEST FAILED: The assertion (NULL DOMTEST-TESTS::|internal|) failed. 716/808 namednodemapgetnameditemns06.xml 717/808 namednodemapremovenameditemns01.xml 718/808 namednodemapremovenameditemns02.xml -TEST FAILED: There is no applicable method for the generic function - # - when called with arguments - (NIL). 719/808 namednodemapremovenameditemns03.xml 720/808 namednodemapremovenameditemns04.xml 721/808 namednodemapremovenameditemns05.xml @@ -864,4 +859,4 @@ implementationAttribute expandEntityReferences not supported, skipping test 803/808 setNamedItemNS04.xml 804/808 setNamedItemNS05.xml 805/808 systemId01.xml -10/763 tests failed; 45 tests were skipped \ No newline at end of file +8/763 tests failed; 45 tests were skipped \ No newline at end of file diff --git a/dom/dom-impl.lisp b/dom/dom-impl.lisp index 9148f58..3afd97d 100644 --- a/dom/dom-impl.lisp +++ b/dom/dom-impl.lisp @@ -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)