libxml2dom

Annotated README.txt

336:92d6d68675cb
2008-08-29 Paul Boddie Introduced stricter checking of unfinished documents. Introduced more generic testing and reporting of fatal errors in parsing.
paulb@108 1
Introduction
paulb@108 2
------------
paulb@108 3
paulb@20 4
See docs/index.html for the libxml2dom documentation.
paulb@35 5
paulb@245 6
Compatibility Warnings
paulb@245 7
----------------------
paulb@245 8
paulb@245 9
From libxml2dom 0.4, nodeValue now returns different results in some cases.
paulb@245 10
Previously, it was possible to get the textual contents of an element using
paulb@245 11
the nodeValue property, although this is incompatible with the DOM
paulb@245 12
specifications. Instead, you should now use the textContent property to get
paulb@245 13
such data.
paulb@245 14
paulb@108 15
Contact, Copyright and Licence Information
paulb@108 16
------------------------------------------
paulb@108 17
paulb@108 18
The current Web page for libxml2dom at the time of release is:
paulb@108 19
paulb@108 20
http://www.boddie.org.uk/python/libxml2dom.html
paulb@108 21
paulb@108 22
Copyright and licence information can be found in the docs directory - see
paulb@292 23
docs/COPYING.txt, docs/lgpl-3.0.txt and docs/gpl-3.0.txt for more information.
paulb@108 24
paulb@108 25
Dependencies
paulb@108 26
------------
paulb@108 27
paulb@108 28
libxml2     Tested with libxml2 2.6.17.
paulb@108 29
            Use --with-python=<path to python executable> if building from
paulb@108 30
            source. Previous releases of libxml2 in the 2.6 series may work,
paulb@108 31
            but releases before 2.6.16 are not recommended.
paulb@222 32
paulb@222 33
            For Windows users, see also the packages for libxml2, available
paulb@222 34
            from the following site:
paulb@222 35
paulb@222 36
            http://users.skynet.be/sbi/libxml-python/
paulb@222 37
paulb@108 38
Python      Tested with Python 2.4.
paulb@108 39
            Python releases from 2.2 onwards should be compatible with
paulb@108 40
            libxml2dom. The principal requirement from such releases is the
paulb@108 41
            new-style class support which permits the use of properties in
paulb@108 42
            the libxml2dom implementation.
paulb@108 43
paulb@64 44
Testing
paulb@64 45
-------
paulb@64 46
paulb@64 47
Some of the tests require libxml2macro.py to be run on the test source code
paulb@64 48
first. Read the docstrings for the various test files before attempting to run
paulb@145 49
any of them. See also docs/NOTES_libxml2macro.txt for more information. Note
paulb@145 50
that such tests are retained for historical purposes and/or curiosity since
paulb@145 51
libxml2macro.py is no longer supported.
paulb@64 52
paulb@35 53
Issues
paulb@35 54
------
paulb@35 55
paulb@178 56
The presence of xmlns attributes in serialised documents was called into
paulb@191 57
question, and the tests/namespace*.py files attempt to show the current
paulb@191 58
behaviour of libxml2dom.
paulb@178 59
paulb@35 60
Use of importNode seems to cause some kind of memory issue, probably related
paulb@41 61
to nodes being shared across documents. This was observed in libxml2 2.6.0 but
paulb@41 62
appears to be fixed in libxml2 2.6.16.
paulb@50 63
paulb@78 64
Even compared to minidom, importNode may seem very slow (even the
paulb@50 65
libxml2dom.macrolib implementation, too). A way is needed to get libxml2 to do
paulb@50 66
the node copying itself.
paulb@50 67
paul@332 68
New in libxml2dom 0.4.7 (Changes since libxml2dom 0.4.6)
paul@332 69
--------------------------------------------------------
paul@332 70
paul@332 71
  * Fixed the ownerElement of attributes created by XPath queries, and in all
paul@332 72
    other situations involving the implementation's get_node method.
paul@332 73
  * Replaced the getElementById implementation with one based on libxml2's
paul@332 74
    own support for finding attributes declared as identifiers.
paul@332 75
  * Introduced support for validation, together with the libxml2dom.errors
paul@332 76
    module.
paul@332 77
paulb@322 78
New in libxml2dom 0.4.6 (Changes since libxml2dom 0.4.5)
paulb@322 79
--------------------------------------------------------
paulb@322 80
paulb@322 81
  * Exposed the libxml2 support for processing XInclude declarations.
paulb@322 82
paulb@303 83
New in libxml2dom 0.4.5 (Changes since libxml2dom 0.4.4)
paulb@303 84
--------------------------------------------------------
paulb@303 85
paulb@317 86
  * Fixed crashes when parsing empty documents.
paulb@303 87
  * Fixed operations involving the standard XML_NAMESPACE value, particularly
paulb@303 88
    setAttributeNS.
paulb@303 89
  * Introduced deletion of conflicting attributes in setAttributeNS.
paulb@303 90
  * Added slightly nicer errors for parsing and serialising.
paulb@306 91
  * Added some support for SOAP and XML-RPC message processing.
paulb@303 92
paulb@288 93
New in libxml2dom 0.4.4 (Changes since libxml2dom 0.4.3)
paulb@288 94
--------------------------------------------------------
paulb@288 95
paulb@292 96
  * Relicensed under the LGPL version 3 or later (fixing PKG-INFO file).
paulb@288 97
  * Improved XMPP support for messages, presence and events.
paulb@297 98
  * Added Ubuntu Feisty (7.04) package support.
paulb@288 99
paulb@261 100
New in libxml2dom 0.4.3 (Changes since libxml2dom 0.4.2)
paulb@261 101
--------------------------------------------------------
paulb@261 102
paulb@267 103
  * Enforced well-formedness in parse operations unless otherwise requested.
paulb@275 104
  * Fixed access to null doctype properties.
paulb@275 105
  * Added getElementById, firstChild and lastChild to the Node class.
paulb@261 106
  * Added a __hash__ method to the Node class.
paulb@275 107
  * Moved document checking into the Node class.
paulb@275 108
  * Added an iterator for the NamedNodeMap class.
paulb@261 109
  * Expanded the svg and events modules, including a test of SVG events.
paulb@279 110
  * Split the debian-stable packages into debian-sarge and debian-etch.
paulb@261 111
paulb@255 112
New in libxml2dom 0.4.2 (Changes since libxml2dom 0.4.1)
paulb@255 113
--------------------------------------------------------
paulb@255 114
paulb@255 115
  * Added missing impl attribute to NamedNodeMap, fixing attribute retrieval.
paulb@255 116
  * Added documentElement to Document.
paulb@255 117
  * Fixed and expanded the events module.
paulb@255 118
  * Added lots of functionality to the svg module.
paulb@255 119
paulb@250 120
New in libxml2dom 0.4.1 (Changes since libxml2dom 0.4)
paulb@250 121
------------------------------------------------------
paulb@250 122
paulb@250 123
  * Fixed the absence of CDATA node creation and importing.
paulb@250 124
paulb@217 125
New in libxml2dom 0.4 (Changes since libxml2dom 0.3.6)
paulb@217 126
------------------------------------------------------
paulb@217 127
paulb@222 128
  * Changed the nodeValue property to return None for various node types, as
paulb@222 129
    specified in the DOM specification (Level 3).
paulb@226 130
  * Fixed various "not supported" exceptions and added tests which can raise
paulb@226 131
    "wrong document" exceptions.
paulb@217 132
  * Introduced an Implementation class, permitting specialised node creation.
paulb@217 133
  * Added SVG-specific document support.
paulb@231 134
  * Made parseURI work for HTML documents.
paulb@231 135
  * Fixed getElementsByTagName(NS), as reported by Christian Seiler.
paulb@239 136
  * Fixed previousSibling, nextSibling and parentNode crashes using
paulb@239 137
    suggestions from Christian Seiler.
paulb@239 138
  * Reintroduced node comparisons using suggestions from Christian Seiler.
paulb@242 139
  * Fixed the absence of the CDATA node type.
paulb@234 140
  * Added the textContent property to nodes.
paulb@239 141
  * Added a getDOMImplementation function.
paulb@234 142
  * Added an experimental events module.
paulb@245 143
  * Added an htmlencoding parameter to the parse functions, as requested by
paulb@245 144
    Iliyan Peychev.
paulb@217 145
paulb@207 146
New in libxml2dom 0.3.6 (Changes since libxml2dom 0.3.5)
paulb@207 147
--------------------------------------------------------
paulb@207 148
paulb@207 149
  * Added cloneNode almost as a synonym for importNode (which, unlike in the
paulb@207 150
    DOM specification, is present on all nodes).
paulb@210 151
  * Introduced Debian stable package details - suggested by Robert Siemer.
paulb@213 152
  * Changed libxml2mod import details to try libxmlmods - suggested by Lucian
paulb@213 153
    Wischik.
paulb@207 154
paulb@201 155
New in libxml2dom 0.3.5 (Changes since libxml2dom 0.3.4)
paulb@201 156
--------------------------------------------------------
paulb@201 157
paulb@201 158
  * Fixed nodeType for HTML document elements - reported by Robert Siemer.
paulb@201 159
  * Fixed string results from XPath expressions - reported by Robert Siemer.
paulb@201 160
paulb@191 161
New in libxml2dom 0.3.4 (Changes since libxml2dom 0.3.3)
paulb@191 162
--------------------------------------------------------
paulb@191 163
paulb@191 164
  * Attempted to introduce generated prefixes for attributes having namespaces
paulb@191 165
    but whose names are unprefixed.
paulb@195 166
  * Added support for xmlns attribute retrieval (getAttributeNS) and detection
paulb@195 167
    (hasAttributeNS).
paulb@197 168
  * Added the length attribute to NamedNodeMap; renamed the length method on
paulb@197 169
    NodeList, adding a length attribute.
paulb@191 170
paulb@187 171
New in libxml2dom 0.3.3 (Changes since libxml2dom 0.3.2)
paulb@187 172
--------------------------------------------------------
paulb@187 173
paulb@187 174
  * Removed redundant weakref usage.
paulb@187 175
  * Added explicit copyright and licensing information to source files.
paulb@187 176
paulb@183 177
New in libxml2dom 0.3.2 (Changes since libxml2dom 0.3.1)
paulb@183 178
--------------------------------------------------------
paulb@183 179
paulb@183 180
  * Improved the xmlns attribute creation controls.
paulb@183 181
paulb@165 182
New in libxml2dom 0.3.1 (Changes since libxml2dom 0.3)
paulb@165 183
------------------------------------------------------
paulb@165 184
paulb@165 185
  * Fixed empty namespace declarations on elements created with namespaceURI
paulb@165 186
    set to None. Previously, such declarations were missing.
paulb@178 187
  * Fixed attribute creation and introduced stricter controls over the
paulb@178 188
    construction of xmlns attributes.
paulb@165 189
paulb@158 190
New in libxml2dom 0.3 (Changes since libxml2dom 0.2.4)
paulb@158 191
------------------------------------------------------
paulb@153 192
paulb@158 193
  * Imposed much stricter tests on strings used with the libxml2dom API.
paulb@158 194
    Strings given as arguments to methods and functions must now only contain
paulb@158 195
    ASCII characters; any other character data must be provided as Unicode
paulb@158 196
    objects. This change fixes various issues with XPath expressions, and
paulb@158 197
    quite probably various other things.
paulb@153 198
  * Fixed parentNode on Document objects (which caused xml.dom.ext.PrettyPrint
paulb@153 199
    to crash).
paulb@153 200
  * Added some support for the doctype attribute and related information.
paulb@158 201
  * libxml2dom is now licensed under the LGPL - see docs/COPYING.txt for
paulb@158 202
    details.
paulb@153 203
paulb@148 204
New in libxml2dom 0.2.4 (Changes since libxml2dom 0.2.3)
paulb@148 205
--------------------------------------------------------
paulb@148 206
paulb@148 207
  * Fixed Unicode conversions in the Node's xpath method.
paulb@148 208
paulb@135 209
New in libxml2dom 0.2.3 (Changes since libxml2dom 0.2.2)
paulb@135 210
--------------------------------------------------------
paulb@135 211
paulb@135 212
  * Fixed the parse function's docstring.
paulb@139 213
  * Added the owner element to obtained attribute nodes.
paulb@142 214
  * Fixed Debian package changelog distribution identifiers.
paulb@135 215
paulb@129 216
New in libxml2dom 0.2.2 (Changes since libxml2dom 0.2.1)
paulb@129 217
--------------------------------------------------------
paulb@129 218
paulb@129 219
  * Fixed exception raising in parseURI, adding a docstring to explain the
paulb@129 220
    current limitations around HTML parsing.
paulb@129 221
paulb@108 222
New in libxml2dom 0.2.1 (Changes since libxml2dom 0.2)
paulb@108 223
------------------------------------------------------
paulb@108 224
paulb@118 225
  * Moved libxml2macro script to the tools directory.
paulb@118 226
  * Added getElementsByTagNameNS.
paulb@123 227
  * Added a normalize implementation.
paulb@118 228
  * Added HTML parsing support.
paulb@120 229
  * Added prettyprinting support.
paulb@118 230
  * Fixed parseURI.
paulb@118 231
  * Introduced better testing for Unicode objects, especially since things
paulb@118 232
    like rdflib like to subclass the unicode type, and it might be more
paulb@118 233
    convenient to detect such subclasses and convert their values
paulb@118 234
    automatically.
paulb@118 235
  * Improved some of the API documentation.
paulb@118 236
  * Introduced better suppression of warnings, network access, and other
paulb@118 237
    potentially intrusive libxml2 features.
paulb@118 238
  * Reorganised the documentation, expanding the README.txt file at the
paulb@118 239
    expense of the HTML documentation, but removing older, less relevant
paulb@118 240
    information.
paulb@118 241
  * Added Debian package support.
paulb@50 242
paulb@108 243
New in libxml2dom 0.2 (Changes since libxml2dom 0.1.3)
paulb@108 244
------------------------------------------------------
paulb@108 245
paulb@118 246
  * Adopted libxml2macro code within the libxml2dom classes, removing any
paulb@118 247
    dependencies on the libxml2 module - this makes everything much faster
paulb@118 248
    and virtually removes any necessity to use libxml2macro.
paulb@118 249
  * Improved attribute and document node handling.
paulb@118 250
  * Introduced document reference management.
paulb@118 251
  * Introduced NodeList wrapper objects.
paulb@59 252
paulb@108 253
New in libxml2dom 0.1.3 (Changes since libxml2dom 0.1.2)
paulb@108 254
--------------------------------------------------------
paulb@108 255
paulb@118 256
  * Fixed createElement.
paulb@118 257
  * Introduced experimental libxml2macro tools, tests and libraries.
paulb@108 258
paulb@108 259
New in libxml2dom 0.1.2 (Changes since libxml2dom 0.1.1)
paulb@108 260
--------------------------------------------------------
paulb@59 261
paulb@118 262
  * Fixed getAttributeNode and getAttributeNodeNS.
paulb@118 263
  * Added comment node creation.
paulb@118 264
  * Fixed empty namespace usage with elements and attributes.
paulb@118 265
  * Introduced usage of the libxml2 file and memory parsing features.
paulb@118 266
  * Introduced suppression of DTD retrieval and validation as the default
paulb@118 267
    behaviour.
paulb@118 268
  * Added experimental XPath method support.
paulb@59 269
paulb@108 270
New in libxml2dom 0.1.1
paulb@108 271
-----------------------
paulb@59 272
paulb@118 273
  * Fixed text node creation.
paulb@118 274
  * Fixed setAttributeNS.
paulb@118 275
  * Added encoding parameters to convenience methods.
paulb@118 276
  * Added the missing previousSibling property.
paulb@118 277
  * Added release number to the package.
paulb@59 278
paulb@108 279
Release Procedures
paulb@108 280
------------------
paulb@59 281
paulb@108 282
Update the libxml2dom/__init__.py and libxml2dom/macrolib/__init__.py
paulb@108 283
__version__ attributes.
paulb@108 284
Change the version number and package filename/directory in the documentation.
paulb@108 285
Change code examples in the documentation if appropriate.
paulb@108 286
Update the release notes (see above).
paulb@108 287
Update the package release notes (in the packages directory).
paulb@108 288
Check the setup.py file and ensure that all package directories are mentioned.
paulb@183 289
Check the release information in the PKG-INFO file.
paulb@108 290
Tag, export.
paulb@108 291
Archive, upload.
paulb@108 292
Make packages (see below).
paulb@108 293
Update PyPI, PythonInfo Wiki, Vaults of Parnassus entries.
paulb@59 294
paulb@108 295
Making Packages
paulb@108 296
---------------
paulb@59 297
paulb@125 298
To make Debian-based packages:
paulb@59 299
paulb@125 300
  1. Create new package directories under packages if necessary.
paulb@118 301
  2. Make a symbolic link in the distribution's root directory to keep the
paulb@210 302
     Debian tools happy; choose one of the following:
paulb@59 303
paulb@125 304
     ln -s packages/ubuntu-hoary/python2.4-libxml2dom/debian/
paulb@322 305
     ln -s packages/ubuntu-feisty/python-libxml2dom/debian/
paulb@285 306
     ln -s packages/debian-sarge/python2.3-libxml2dom/debian/
paulb@285 307
     ln -s packages/debian-etch/python-libxml2dom/debian/
paulb@108 308
paulb@118 309
  3. Run the package builder:
paulb@108 310
paulb@118 311
     dpkg-buildpackage -rfakeroot
paulb@108 312
paulb@118 313
  4. Locate and tidy up the packages in the parent directory of the
paulb@118 314
     distribution's root directory.