summaryrefslogtreecommitdiffstats
path: root/Lib/xml/dom/minidom.py
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge with PyXML 1.82:Martin v. Löwis2003-01-261-8/+12
| | | | | Correct various typos. Fixes #674700. Set newly created attribute via setNamedItem.
* Merge with PyXML 1.80:Martin v. Löwis2003-01-251-327/+1287
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Basic minidom changes to support the new higher-performance builder, as described: http://mail.python.org/pipermail/xml-sig/2002-February/007217.html Use True/False where appropriate. isSupported(): Implemented from DOM Level 2. Support a variety of things from the DOM Level 3 draft, integrate with the xml.dom.xmlbuilder module for the new Document and DOMImplementation methods. Support the NODE_CLONED callback for the UserDataHandler set using setUserData(). Add Entity and Notation nodes to minidom. Add __getitem__() to ReadOnlySequentialNamedNodeMap to match NamedNodeMap. TupleType was used without being defined; rename to _TupleType and define. Add magic so that instances of the NamedNodeMap (and its read-only cousin) take a bit less memory in the new-style world of Python 2.2/2.3. Now, the assignments to __slots__ actually work. ;-) Add support for the Text.wholeText attribute. Document.createCDATASection(): Do not pass unsupported arg to CDATASection constructor. Implemented Text.replaceWholeText(). Updated minidom interfaces to work better with current 4Suite XPath and Xslt. * Added childNodes to class Attr * Added localName and prefix to all Nodes * Added specified on class Attr * Changed DOMImplementation.createDocument to all creating a document with no document element and a Null doctype * Changed CharacterData__setattr__ to keep nodeValue and data in synch * fixed typo of ownerDoc in createDocumentFragment * Changed Comment to inherit from CharacterData * Allowed mutation of name on PIs * Added importNode and rewrote cloneNode so both use same code base * Changed EmptyNodeList to be a list not a tuple Use a table-driven DOMImplementation.hasFeature(). Shorten lines longer than 80 characters. Rename CloneNode to _clone_node (better naming consistency within the module). When defining localName as a property, the defproperty() call is needed for each class that defined _get_localName(), otherwise only the first version is used for Python 2.2 and newer. Node.insertBefore(): When the reference node is not found, raise the exception defined by the DOM specification. Attr._set_value(): Added setter that does the right thing. Childless.removeChild(): Raise the exception defined by the specification, even though it seem less than intuitive. _clone_node(): Access nodeType constants so we actually find them. Add support for document fragments. Node.removeChild(), .replaceChild(): Fix exception raised when a reference node is not found. CharacterData._set_data(): Update the nodeValue attribute as well as the data attribute. Entity.attributes, .childNodes: Added these attributes. Document.removeChild(): Raise the right exception when the node being removed is not a child of this node. Element.removeAttributeNode(): Raise the right exception when the node isn't present on this element. Don't unlink the node unless it is present. Added support for the following methods and accessors: Node._get_childNodes(), Attr._get_specified(), Attr._set_prefix(), NamedNodeMap.has_key(), .getNamedItem(), .getNamedItemNS(), .removeNamedItem(), .removeNamedItemNS(), ProcessingInstruction._get_data(), ._get_target(), ._set_data(), ._set_target(), CharacterData.__len__(), Document.getElementById(). Add many more of the _get_*() accessors. Convert internal helpers to use a more consistent naming convention. Remove unused definition of _nssplit(); there can be only one! Move the Identified mixin up so it can be used by one more class. Remove comment about NamedNodeMap.__getitem__(); the API won't be changing now! Way too late for that. Preliminary support for getElementById() for DOMs built with xml.dom.expatbuilder. Not necessarily very efficient, but it works, and is still fast for Document instances that do not have the ID information. DOMImplementation.createDocument(): Don't forget to add the DocumentType node to the tree. This appearantly was lost in the previous release. DocumentType.writexml(): New function. Implement the final determination on the behaviors of importNode() and cloneNode() with regard to Document and DocumentType nodes. When cloning and importing, call the UserDataHandler with the right operation, not just blindly use NODE_CLONED. parse(), parseString(): When called with parser=None, use xml.dom.expatbuilder instead of xml.dom.pulldom, to get a performance boost (the main point of expatbuilder). Fix for calling parse / parseString with a given parser instance; the else-paths were ignored when refactoring the function signatures; pychecker found that error instantly, BTW (hint, hint) Added pickle support for NamedNodeMap, ReadOnlySequentialNamedNodeMap, and ElementInfo. Closes SF bug #609641. In _clone_node for elements, fixed arguments for getAttributeNodeNS At least make sure the DOM API won't allow you to modify the child node list of an entity node (since entity ndoes are supposed to be readonly). Add support for the DOM Level 3 (draft) DOMImplementationSource interface to the xml.dom and xml.dom.minidom modules. Note API issue: the draft spec says to return null when there is no suitable implementation, while the Python getDOMImplementation() function raises ImportError (minor). Implement the DOM Level 3 Attr.isId property. Refactor the lookup of the ElementInfo objects. Implement the schemaType attribute for Element and Attr nodes. Defined by the (draft) DOM Level 3 specification. getElementById(): Support caching of IDs found. This implementation is sufficient for DOM Level 2 compliance, but additional changes will be needed to support the setIdAttribute() and setIdAttributeNS() methods in DOM Level 3. Add support for Text.isWhitespaceInElementContent (draft Level 3). NamedNodeMap.removeNamedItem(), .removeNamedItemNS(): Pass the new tests: Return the removed node, or raise NotFoundErr if there was no matching node. When changing attributes via a NamedNodeMap, update the ID-cache appropriately. Added support for the DOM Level 3 (draft) Element.setIdAttribute*() methods. setAttributeNode(): Be more careful about not calling removeAttributeNode() twice for a single node. Do more to avoid creating new Attr nodes, so that attributes do not lose their ID-ness when set using setIdAttribute*(). Work harder to avoid calls to Attr.__setattr__() and CharacterData.__setattr__(). Attr.unlink(): Implement everything directly instead of calling to the base class, which does several things that aren't needed for Attr nodes. Change some remaining assignments that caused __setattr__() to be called when it can be avoided. expatbuilder can now perform DOM construction without __setattr__() interferance in common cases. Remove unused _make_parent_nodes logic.
* Remove bogus assignment to self.length in NamedNodeMap.__delitem__().Fred Drake2002-07-021-1/+0
|
* Implement the encoding argument for toxml and toprettyxml.Martin v. Löwis2002-06-301-8/+18
| | | | Document toprettyxml.
* Use more string methods, remove import stringNeal Norwitz2002-05-311-11/+6
|
* Wrap a couple of long lines.Fred Drake2002-03-151-2/+4
|
* Patch #527427: minidom fails to use NodeList sometimes.Martin v. Löwis2002-03-151-5/+5
|
* Attribute nodes did not always get their ownerDocument and ownerElementFred Drake2001-12-061-4/+11
| | | | properly set. This fixes that.
* Fix appendChild() and insertBefore() (and replaceChild() indirectly) whenFred Drake2001-12-061-2/+2
| | | | | the node being added is a fragment node. This closes SF bug #487929.
* Synchronize with minidom from PyXML (revision 1.35).Fred Drake2001-11-301-5/+5
|
* Remove obsolete __dynamic__ distinction.Tim Peters2001-10-151-2/+0
|
* For Python 2.2, do not use __getattr__(), only use computed properties.Fred Drake2001-09-291-31/+61
| | | | | | This is probably a little bit faster, but mostly is just cleaner code. The old-style support is still used for Python versions < 2.2 so this source file can be shared with PyXML.
* Tighten up the new NodeList implementation.Fred Drake2001-09-281-7/+7
| | | | | Clean up a little; do not create an alias that is only used once, or store attributes with constant values in an instance.
* For Python 2.2 and newer, actually support the full NodeList interface byFred Drake2001-09-281-2/+19
| | | | subclassing list to add the length and item() attributes.
* Keep tabnanny happy.Guido van Rossum2001-09-191-1/+1
|
* Patch to bug #461754: CDATA should not undergo entity subst.Martin v. Löwis2001-09-191-1/+1
|
* Make the implementations of getElementsByTagName() andFred Drake2001-07-041-11/+5
| | | | | getElementsByTagNameNS() consistent in form as well as functionality (cosmetic).
* Fix getElementsByTagNameNS:Martin v. Löwis2001-06-031-3/+7
| | | | | - actually return a result - Compare with tag.localName in getElementsByTagNameNSHelper
* Corrected default value of the DocumentType.internalSubset attribute basedFred Drake2001-04-051-1/+1
| | | | on a clarification sent to the www-dom list.
* CharacterData methods: Update self.length on changes instead of extendedFred Drake2001-04-041-4/+7
| | | | | | the __getattr__() handler. Text.splitText(): Update the length and nodeValue attributes.
* Add support for the CharacterData methods, CDATASection.Fred Drake2001-04-041-7/+73
|
* Initialize Attr.value with empty string in createAttribute*, as per DOMMartin v. Löwis2001-03-311-5/+7
| | | | | spec. Closes bug #412036. Also reindent toprettyxml.
* Patch #407965: Improve Level 2 conformance of minidomMartin v. Löwis2001-03-131-14/+74
| | | | | | | | | | | | | | - addition of a DocumentFragment implementation and createDocumentFragment method - proper setting of ownerDocument for all nodes - setting of namespaceURI to None in Element as a class attribute - addition of setAttributeNodeNS and removeAttributeNodeNS as aliases for setAttributeNode and removeAttributeNode - support for inheriting from DOMImplementation to extend it with additional features (to override the Document class) in pulldom: - support for nodes (comment and PI) that occur before he document element; that became necessary as pulldom now delays creation of the document until it has the document element.
* Patch #103885: Add dynamic registration and lookup of DOM implementations.Martin v. Löwis2001-02-221-0/+3
|
* Patch #103854: raises an exception if a non-Attr node is passed toAndrew M. Kuchling2001-02-211-0/+3
| | | | | | NamedNodeMap.setNamedItem(). Martin, should I sync the PyXML tree, too, or do you want to do it? (I don't know if you're wrapping the 0.6.4 release right now.)
* Do not allow empty qualifiedName in createDocument.Martin v. Löwis2001-02-061-11/+18
| | | | | | Rearrange pulldom to create documents with root element. Provide clear methods so that the ContentHandler releases its hold on the document.
* Add toprettyxml method into minidom, closes patch #103471.Martin v. Löwis2001-02-061-14/+24
|
* A couple of changes to make this more conformant. MvL and Uche agree.Guido van Rossum2001-02-051-13/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will make it incompatible with the version found in Python 2.0. Does this need to be done to PyXML too? Changes that might break existing code are marked with (!) below. - Formatting nit: no spaces inside parentheses: foo( a ) -> foo(a). - Break long lines. - (!) Fix getAttribute() and getAttributeNS() to return "" instead of raising KeyError when the attribute is not found. - (!) Fix getAttributeNodeNS() to return None instead of raising KeyError. (Curiously, getAttributeNode() already did this.) - Added hasAttributes(), which returns true iff the node has any attributes. )This is DOM level 3.) - (!) In createDocument(), if the qualified name is not empty, actually create and insert the first element with that name (this will become doc.documentElement). MvL believes that it should be an error to specify an empty qualified name; I'm not going there today, since it would require making a matching change to pulldom. Maybe MvL will do this. - In Document.writexml(), insert an xml declaration at the top. (This doesn't include the encoding since there's no way to specify the encoding. If that's preferred, all writexml() methods should be fixed to support an optional encoding argument that they pass to each other -- and they should use it to encode all text they write, too. Later.)
* Added Node.isSameNode() support.Fred Drake2001-02-021-0/+7
|
* Re-indent.Martin v. Löwis2001-01-271-12/+12
|
* Merge changes of PyXML 1.13:Martin v. Löwis2001-01-271-9/+10
| | | | | | Use nodeName, not tagName in attributes. Provide get method for dictionary-like objects. Use DOM exceptions instead of standard exceptions.
* Text.__init__(): Make sure the data parameter is a string (8-bit orFred Drake2001-01-081-0/+2
| | | | | | Unicode); raise TypeError if not. This closes SF bug #126866.
* Patch #102485 ] Check for legal children when adding children to a DOM nodeAndrew M. Kuchling2000-12-311-6/+30
|
* Merge changes up to 1.10 from PyXML:Martin v. Löwis2000-12-281-1/+11
| | | | | | | - implement hasAttribute and hasAttributeNS (1.7) - Node.replaceChild(): Update the sibling nodes to point to newChild. Set the .nextSibling attribute on oldChild instead of adding a .newChild attribute (1.9).
* Patch #102492, fixing bug #116677:Andrew M. Kuchling2000-12-201-0/+25
| | | | | | | | | | give minidom.py behaviour that complies with the DOM Level 1 REC, which says that when a node newChild is added to the tree, "if the newChild is already in the tree, it is first removed." pulldom.py is patched to use the public minidom interface instead of setting .parentNode itself. Possibly this reduces pulldom's efficiency; someone else will have to pronounce on that.
* Lots of small bug fixes and DOM API conformance improvements:Fred Drake2000-12-141-49/+145
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make Node inherit from xml.dom.Node to pick up the NodeType values defined by the W3C recommendation. When raising AttributeError, be sure to provide the name of the attribute that does not exist. Node.normalize(): Make sure we do not allow an empty text node to survive as the first child; update the sibling links properly. _getElementsByTagNameNSHelper(): Make recursive calls using the right number of parameters. Attr.__setattr__(): Be sure to update name and nodeName at the same time since they are synonyms for this node type. AttributeList: Renamed to NamedNodeMap (AttributeList maintained as an alias). Compute the length attribute dynamically to allow the underlying structures to mutate. AttributeList.item(): Call .keys() on the dictionary rather than using self.keys() for performance. AttributeList.setNamedItem(), .setNamedItemNS(): Added methods. Text.splitText(): Added method. DocumentType: Added implementation class. DOMImplementation: Added implementation class. Document.appendChild(): Do not allow a second document element to be added. Document.documentElement: Find this dynamically, so that one can be removed and another added. Document.unlink(): Clear the doctype attribute. _get_StringIO(): Only use the StringIO module; cStringIO does not support Unicode.
* Reduce the visibility of imported modules for cleaner "from ... import *"Fred Drake2000-11-211-76/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | behavior. Added support for the Attr.ownerElement attribute. Everywhere: Define constant object attributes in the classes rather than on the instances during object construction. This reduces the amount of work needed for object construction and destruction; these need to be lightweight operations on a DOM. Node._get_firstChild(), Node._get_lastChild(): Return None if there are no children (required for compliance with DOM level 1). Node.insertBefore(): If refChild is None, append the new node instead of failing (required for compliance). Also, update the sibling relationships. Return the inserted node (required for compliance). Node.appendChild(): Update the parent of the appended node. Node.replaceChild(): Actually replace the old child! Update the parent and sibling relationships of both the old and new children. Return the replaced child (required for compliance). Node.normalize(): Implemented the normalize() method. Required for compliance, but missing from the release. Useful for joining adjacent Text nodes into a single node for easier processing. Node.cloneNode(): Actually make this work. Don't let the new node share the instance __dict__ with the original. Do proper recursion if doing a "deep" clone. Move the attribute cloning out of the base class, since only Element is supposed to have attributes. Node.unlink(): Simplify handling of child nodes for efficiency, and remove the attribute handling since only Element nodes support attributes. Attr.cloneNode(): Extend this to clear the ownerElement attribute in the clone. AttributeList.items(), AttributeList.itemsNS(): Slight performance improvement (avoid lambda). Element.cloneNode(): Extend Node.cloneNode() with support for the attributes. Clone the Attr objects after creating the underlying clone. Element.unlink(): Clean out the attributes here instead of in the base class, since this is the only class that will have them. Element.toxml(): Adjust to create only one AttributeList instance; minor efficiency improvement. _nssplit(): No need to re-import string. Document.__init__(): No longer needed once constant attributes are initialized in the class itself. Document.createElementNS(), Document.createAttributeNS(): Use the defined constructors rather than directly access the classes. _get_StringIO(): New function. Create an output StringIO using the most efficient available flavor. parse(), parseString(): Import pulldom here instead of in the public namespace of the module.
* Make reindent.py happy (lots of trailing whitespace removed).Fred Drake2000-10-231-9/+8
|
* Clear siblings, now that they are being set.Paul Prescod2000-10-131-0/+2
|
* Paul Prescod <paul@prescod.net>:Fred Drake2000-10-091-0/+7
| | | | Correct the chaining between siblings.
* Don't use string methods to allow sharing this code with PyXML.Martin v. Löwis2000-10-071-1/+2
|
* Record bugs found when comparing the module with DOM Core Level 2.Martin v. Löwis2000-10-071-1/+4
|
* minidom: access attribute value before printing itMartin v. Löwis2000-10-061-2/+2
| | | | | | correct order of constructor args in createAttributeNS pulldom: use symbolic names for uri and localnames correct usage of createAttribute and setAttributeNode signatures.
* Conform to the Python style guide.Fred Drake2000-09-241-237/+246
|
* Fixed bug that disallowed processing instructions before and afterPaul Prescod2000-09-151-4/+5
| | | | document element.
* Added a few docstringsPaul Prescod2000-07-211-0/+7
|
* Used original SAX handling form.Paul Prescod2000-07-041-2/+2
|
* Misc fixes and improvements.Paul Prescod2000-07-011-4/+16
|
* Reference cycle fixesPaul Prescod2000-07-011-67/+116
|
* Paul Prescod <paul@prescod.net>:Fred Drake2000-06-291-0/+385
W3C DOM implementation for Python.