1.1 --- a/PKG-INFO Mon Aug 25 22:30:19 2008 +0200
1.2 +++ b/PKG-INFO Tue Aug 26 00:17:04 2008 +0200
1.3 @@ -1,19 +1,19 @@
1.4 Metadata-Version: 1.1
1.5 Name: libxml2dom
1.6 -Version: 0.4.6
1.7 +Version: 0.4.7
1.8 Author: Paul Boddie
1.9 Author-email: paul at boddie org uk
1.10 Maintainer: Paul Boddie
1.11 Maintainer-email: paul at boddie org uk
1.12 Home-page: http://www.boddie.org.uk/python/libxml2dom.html
1.13 -Download-url: http://www.boddie.org.uk/python/downloads/libxml2dom-0.4.6.tar.gz
1.14 +Download-url: http://www.boddie.org.uk/python/downloads/libxml2dom-0.4.7.tar.gz
1.15 Summary: PyXML-style API for the libxml2 Python bindings
1.16 License: LGPL (version 3 or later)
1.17 Description: The libxml2dom package provides a traditional DOM wrapper around the Python
1.18 bindings for libxml2. In contrast to the libxml2 bindings, libxml2dom provides
1.19 an API reminiscent of minidom, pxdom and other Python-based and Python-related
1.20 XML toolkits.
1.21 -Keywords: XML libxml2 SVG XMPP SOAP XPath XInclude
1.22 +Keywords: XML libxml2 SVG XMPP SOAP XPath XInclude Events validation validator
1.23 Platform: Any
1.24 Classifier: Development Status :: 3 - Alpha
1.25 Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
2.1 --- a/README.txt Mon Aug 25 22:30:19 2008 +0200
2.2 +++ b/README.txt Tue Aug 26 00:17:04 2008 +0200
2.3 @@ -65,6 +65,16 @@
2.4 libxml2dom.macrolib implementation, too). A way is needed to get libxml2 to do
2.5 the node copying itself.
2.6
2.7 +New in libxml2dom 0.4.7 (Changes since libxml2dom 0.4.6)
2.8 +--------------------------------------------------------
2.9 +
2.10 + * Fixed the ownerElement of attributes created by XPath queries, and in all
2.11 + other situations involving the implementation's get_node method.
2.12 + * Replaced the getElementById implementation with one based on libxml2's
2.13 + own support for finding attributes declared as identifiers.
2.14 + * Introduced support for validation, together with the libxml2dom.errors
2.15 + module.
2.16 +
2.17 New in libxml2dom 0.4.6 (Changes since libxml2dom 0.4.5)
2.18 --------------------------------------------------------
2.19
3.1 --- a/libxml2dom/__init__.py Mon Aug 25 22:30:19 2008 +0200
3.2 +++ b/libxml2dom/__init__.py Tue Aug 26 00:17:04 2008 +0200
3.3 @@ -19,7 +19,7 @@
3.4 with this program. If not, see <http://www.gnu.org/licenses/>.
3.5 """
3.6
3.7 -__version__ = "0.4.6"
3.8 +__version__ = "0.4.7"
3.9
3.10 from libxml2dom.macrolib import *
3.11 from libxml2dom.macrolib import \
3.12 @@ -29,7 +29,6 @@
3.13 toString as Node_toString, toStream as Node_toStream, \
3.14 toFile as Node_toFile
3.15 import urllib # for parseURI in HTML mode
3.16 -import xml.dom # for getElementById
3.17
3.18 # Standard namespaces.
3.19
3.20 @@ -427,12 +426,11 @@
3.21 return tmp
3.22
3.23 def getElementById(self, identifier):
3.24 - nodes = self.xpath(".//*[@xml:id='" + identifier.replace("'", "'") + "']",
3.25 - namespaces={"xml" : xml.dom.XML_NAMESPACE})
3.26 - if nodes:
3.27 - return nodes[0]
3.28 + _node = Node_getElementById(self.ownerDocument.as_native_node(), identifier)
3.29 + if _node is None:
3.30 + return None
3.31 else:
3.32 - return None
3.33 + return self.impl.get_node(_node, self)
3.34
3.35 def getElementsByTagName(self, tagName):
3.36 return self.xpath(".//" + tagName)
3.37 @@ -619,7 +617,7 @@
3.38 def createDocument(namespaceURI, localName, doctype):
3.39 return default_impl.createDocument(namespaceURI, localName, doctype)
3.40
3.41 -def parse(stream_or_string, html=0, htmlencoding=None, unfinished=0, impl=None):
3.42 +def parse(stream_or_string, html=0, htmlencoding=None, unfinished=0, validate=0, remote=0, impl=None):
3.43
3.44 """
3.45 Parse the given 'stream_or_string', where the supplied object can either be
3.46 @@ -636,6 +634,13 @@
3.47 documents will be parsed, even though such documents may be missing content
3.48 such as closing tags.
3.49
3.50 + If the optional 'validate' parameter is set to a true value, an attempt will
3.51 + be made to validate the parsed document.
3.52 +
3.53 + If the optional 'remote' parameter is set to a true value, references to
3.54 + remote documents (such as DTDs) will be followed in order to obtain such
3.55 + documents.
3.56 +
3.57 A document object is returned by this function.
3.58 """
3.59
3.60 @@ -643,11 +648,13 @@
3.61
3.62 if hasattr(stream_or_string, "read"):
3.63 stream = stream_or_string
3.64 - return parseString(stream.read(), html=html, htmlencoding=htmlencoding, unfinished=unfinished, impl=impl)
3.65 + return parseString(stream.read(), html=html, htmlencoding=htmlencoding,
3.66 + unfinished=unfinished, validate=validate, remote=remote, impl=impl)
3.67 else:
3.68 - return parseFile(stream_or_string, html=html, htmlencoding=htmlencoding, unfinished=unfinished, impl=impl)
3.69 + return parseFile(stream_or_string, html=html, htmlencoding=htmlencoding,
3.70 + unfinished=unfinished, validate=validate, remote=remote, impl=impl)
3.71
3.72 -def parseFile(filename, html=0, htmlencoding=None, unfinished=0, impl=None):
3.73 +def parseFile(filename, html=0, htmlencoding=None, unfinished=0, validate=0, remote=0, impl=None):
3.74
3.75 """
3.76 Parse the file having the given 'filename'. The optional parameters
3.77 @@ -662,13 +669,21 @@
3.78 documents will be parsed, even though such documents may be missing content
3.79 such as closing tags.
3.80
3.81 + If the optional 'validate' parameter is set to a true value, an attempt will
3.82 + be made to validate the parsed document.
3.83 +
3.84 + If the optional 'remote' parameter is set to a true value, references to
3.85 + remote documents (such as DTDs) will be followed in order to obtain such
3.86 + documents.
3.87 +
3.88 A document object is returned by this function.
3.89 """
3.90
3.91 impl = impl or default_impl
3.92 - return impl.adoptDocument(Node_parseFile(filename, html=html, htmlencoding=htmlencoding, unfinished=unfinished))
3.93 + return impl.adoptDocument(Node_parseFile(filename, html=html, htmlencoding=htmlencoding,
3.94 + unfinished=unfinished, validate=validate, remote=remote))
3.95
3.96 -def parseString(s, html=0, htmlencoding=None, unfinished=0, impl=None):
3.97 +def parseString(s, html=0, htmlencoding=None, unfinished=0, validate=0, remote=0, impl=None):
3.98
3.99 """
3.100 Parse the content of the given string 's'. The optional parameters described
3.101 @@ -683,13 +698,21 @@
3.102 documents will be parsed, even though such documents may be missing content
3.103 such as closing tags.
3.104
3.105 + If the optional 'validate' parameter is set to a true value, an attempt will
3.106 + be made to validate the parsed document.
3.107 +
3.108 + If the optional 'remote' parameter is set to a true value, references to
3.109 + remote documents (such as DTDs) will be followed in order to obtain such
3.110 + documents.
3.111 +
3.112 A document object is returned by this function.
3.113 """
3.114
3.115 impl = impl or default_impl
3.116 - return impl.adoptDocument(Node_parseString(s, html=html, htmlencoding=htmlencoding, unfinished=unfinished))
3.117 + return impl.adoptDocument(Node_parseString(s, html=html, htmlencoding=htmlencoding,
3.118 + unfinished=unfinished, validate=validate, remote=remote))
3.119
3.120 -def parseURI(uri, html=0, htmlencoding=None, unfinished=0, impl=None):
3.121 +def parseURI(uri, html=0, htmlencoding=None, unfinished=0, validate=0, remote=0, impl=None):
3.122
3.123 """
3.124 Parse the content found at the given 'uri'. The optional parameters
3.125 @@ -704,6 +727,13 @@
3.126 documents will be parsed, even though such documents may be missing content
3.127 such as closing tags.
3.128
3.129 + If the optional 'validate' parameter is set to a true value, an attempt will
3.130 + be made to validate the parsed document.
3.131 +
3.132 + If the optional 'remote' parameter is set to a true value, references to
3.133 + remote documents (such as DTDs) will be followed in order to obtain such
3.134 + documents.
3.135 +
3.136 XML documents are retrieved using libxml2's own network capabilities; HTML
3.137 documents are retrieved using the urllib module provided by Python. To
3.138 retrieve either kind of document using Python's own modules for this purpose
3.139 @@ -721,12 +751,14 @@
3.140 if html:
3.141 f = urllib.urlopen(uri)
3.142 try:
3.143 - return parse(f, html=html, htmlencoding=htmlencoding, unfinished=unfinished, impl=impl)
3.144 + return parse(f, html=html, htmlencoding=htmlencoding, unfinished=unfinished,
3.145 + validate=validate, remote=remote, impl=impl)
3.146 finally:
3.147 f.close()
3.148 else:
3.149 impl = impl or default_impl
3.150 - return impl.adoptDocument(Node_parseURI(uri, html=html, htmlencoding=htmlencoding, unfinished=unfinished))
3.151 + return impl.adoptDocument(Node_parseURI(uri, html=html, htmlencoding=htmlencoding,
3.152 + unfinished=unfinished, validate=validate, remote=remote))
3.153
3.154 def toString(node, encoding=None, prettyprint=0):
3.155
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/libxml2dom/errors.py Tue Aug 26 00:17:04 2008 +0200
4.3 @@ -0,0 +1,45 @@
4.4 +#!/usr/bin/env python
4.5 +
4.6 +"""
4.7 +Errors for DOM Level 3.
4.8 +See: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ERROR-Interfaces-DOMError
4.9 +
4.10 +Copyright (C) 2008 Paul Boddie <paul@boddie.org.uk>
4.11 +
4.12 +This program is free software; you can redistribute it and/or modify it under
4.13 +the terms of the GNU Lesser General Public License as published by the Free
4.14 +Software Foundation; either version 3 of the License, or (at your option) any
4.15 +later version.
4.16 +
4.17 +This program is distributed in the hope that it will be useful, but WITHOUT
4.18 +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
4.19 +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
4.20 +details.
4.21 +
4.22 +You should have received a copy of the GNU Lesser General Public License along
4.23 +with this program. If not, see <http://www.gnu.org/licenses/>.
4.24 +"""
4.25 +
4.26 +class DOMError:
4.27 +
4.28 + "DOM Level 3 Core exception."
4.29 +
4.30 + SEVERITY_WARNING = 1
4.31 + SEVERITY_ERROR = 2
4.32 + SEVERITY_FATAL_ERROR = 3
4.33 +
4.34 + def __init__(self, severity=None, message=None, type=None, relatedException=None, relatedData=None, location=None):
4.35 + self.severity = severity
4.36 + self.message = message
4.37 + self.type = type
4.38 + self.relatedException = relatedException
4.39 + self.relatedData = relatedData
4.40 + self.location = location
4.41 +
4.42 + def __repr__(self):
4.43 + return "DOMError(%d, %r, %r)" % (self.severity, self.message, self.type)
4.44 +
4.45 + def __str__(self):
4.46 + return repr(self)
4.47 +
4.48 +# vim: tabstop=4 expandtab shiftwidth=4
5.1 --- a/libxml2dom/macrolib/__init__.py Mon Aug 25 22:30:19 2008 +0200
5.2 +++ b/libxml2dom/macrolib/__init__.py Tue Aug 26 00:17:04 2008 +0200
5.3 @@ -19,7 +19,7 @@
5.4 with this program. If not, see <http://www.gnu.org/licenses/>.
5.5 """
5.6
5.7 -__version__ = "0.4.6"
5.8 +__version__ = "0.4.7"
5.9
5.10 # Expose all functions here.
5.11
6.1 --- a/libxml2dom/macrolib/macrolib.py Mon Aug 25 22:30:19 2008 +0200
6.2 +++ b/libxml2dom/macrolib/macrolib.py Tue Aug 26 00:17:04 2008 +0200
6.3 @@ -20,6 +20,7 @@
6.4 """
6.5
6.6 import xml.dom
6.7 +from libxml2dom.errors import DOMError
6.8
6.9 # Try the conventional import first.
6.10
6.11 @@ -488,6 +489,9 @@
6.12 "Node type '%s' (%d) not supported." % (_reverseNodeTypes[other.nodeType], other.nodeType)
6.13 )
6.14
6.15 +def Node_getElementById(doc, identifier):
6.16 + return libxml2mod.xmlGetID(doc, identifier)
6.17 +
6.18 def Node_xpath(node, expr, variables=None, namespaces=None):
6.19 expr = from_unicode(expr)
6.20
6.21 @@ -523,16 +527,17 @@
6.22 SERIALIZE_ERR = 82
6.23
6.24 def __repr__(self):
6.25 - return str(self)
6.26 + exctype, excdata = self.args[0:2]
6.27 + return "LSException(%d, %r)" % (exctype, excdata)
6.28
6.29 def __str__(self):
6.30 - exctype = self.args[0]
6.31 + exctype, excdata = self.args[0:2]
6.32 if exctype == self.PARSE_ERR:
6.33 - return "Parse error: LSException(%d)" % exctype
6.34 + return "Parse error: %r" % self
6.35 elif exctype == self.SERIALIZE_ERR:
6.36 - return "Serialize error: LSException(%d)" % exctype
6.37 + return "Serialize error: %r" % self
6.38 else:
6.39 - return Exception.__repr__(self)
6.40 + return repr(self)
6.41
6.42 class XIncludeException(Exception):
6.43
6.44 @@ -560,57 +565,52 @@
6.45 else:
6.46 return parseFile(stream_or_string, html=html, htmlencoding=htmlencoding, unfinished=unfinished)
6.47
6.48 -def parseFile(s, html=0, htmlencoding=None, unfinished=0):
6.49 - # NOTE: Switching off validation and remote DTD resolution.
6.50 +def parseFile(s, html=0, htmlencoding=None, unfinished=0, validate=0, remote=0):
6.51 if not html:
6.52 context = libxml2mod.xmlCreateFileParserCtxt(s)
6.53 - if context is None:
6.54 - raise LSException(LSException.PARSE_ERR)
6.55 - Parser_configure(context)
6.56 - Parser_parse(context)
6.57 - doc = Parser_document(context)
6.58 - if unfinished or Parser_well_formed(context):
6.59 - return doc
6.60 - else:
6.61 - raise LSException(LSException.PARSE_ERR)
6.62 + return _parseXML(context, unfinished, validate, remote)
6.63 else:
6.64 - return libxml2mod.htmlReadFile(s, htmlencoding, HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING | HTML_PARSE_NONET)
6.65 + return libxml2mod.htmlReadFile(s, htmlencoding,
6.66 + HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING | html_net_flag(remote))
6.67
6.68 -def parseString(s, html=0, htmlencoding=None, unfinished=0):
6.69 - # NOTE: Switching off validation and remote DTD resolution.
6.70 +def parseString(s, html=0, htmlencoding=None, unfinished=0, validate=0, remote=0):
6.71 if not html:
6.72 context = libxml2mod.xmlCreateMemoryParserCtxt(s, len(s))
6.73 - if context is None:
6.74 - raise LSException(LSException.PARSE_ERR)
6.75 - Parser_configure(context)
6.76 - Parser_parse(context)
6.77 - doc = Parser_document(context)
6.78 - if unfinished or Parser_well_formed(context):
6.79 - return doc
6.80 - else:
6.81 - raise LSException(LSException.PARSE_ERR)
6.82 + return _parseXML(context, unfinished, validate, remote)
6.83 else:
6.84 # NOTE: URL given as None.
6.85 html_url = None
6.86 return libxml2mod.htmlReadMemory(s, len(s), html_url, htmlencoding,
6.87 - HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING | HTML_PARSE_NONET)
6.88 + HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING | html_net_flag(remote))
6.89
6.90 -def parseURI(uri, html=0, htmlencoding=None, unfinished=0):
6.91 - # NOTE: Switching off validation and remote DTD resolution.
6.92 +def parseURI(uri, html=0, htmlencoding=None, unfinished=0, validate=0, remote=0):
6.93 if not html:
6.94 context = libxml2mod.xmlCreateURLParserCtxt(uri, 0)
6.95 - if context is None:
6.96 - raise LSException(LSException.PARSE_ERR)
6.97 - Parser_configure(context)
6.98 - Parser_parse(context)
6.99 - doc = Parser_document(context)
6.100 - if unfinished or Parser_well_formed(context):
6.101 - return doc
6.102 - else:
6.103 - raise LSException(LSException.PARSE_ERR)
6.104 + return _parseXML(context, unfinished, validate, remote)
6.105 else:
6.106 raise NotImplementedError, "parseURI does not yet support HTML"
6.107
6.108 +def _parseXML(context, unfinished, validate, remote):
6.109 + if context is None:
6.110 + raise LSException(LSException.PARSE_ERR, DOMError(DOMError.SEVERITY_FATAL_ERROR))
6.111 +
6.112 + Parser_configure(context, validate, remote)
6.113 + Parser_parse(context)
6.114 + doc = Parser_document(context)
6.115 +
6.116 + if validate and not Parser_valid(context):
6.117 +
6.118 + # NOTE: May not be the correct exception.
6.119 +
6.120 + raise LSException(LSException.PARSE_ERR,
6.121 + DOMError(DOMError.SEVERITY_FATAL_ERROR, "Document did not validate"))
6.122 +
6.123 + elif unfinished or Parser_well_formed(context):
6.124 + return doc
6.125 + else:
6.126 + raise LSException(LSException.PARSE_ERR,
6.127 + DOMError(DOMError.SEVERITY_FATAL_ERROR, "Document not well-formed"))
6.128 +
6.129 def toString(node, encoding=None, prettyprint=0):
6.130 return libxml2mod.serializeNode(node, encoding, prettyprint)
6.131
6.132 @@ -625,17 +625,37 @@
6.133 HTML_PARSE_NOERROR = 32
6.134 HTML_PARSE_NOWARNING = 64
6.135 HTML_PARSE_NONET = 2048
6.136 +XML_PARSE_DTDVALID = 16
6.137 XML_PARSE_NOERROR = 32
6.138 XML_PARSE_NOWARNING = 64
6.139 XML_PARSE_NONET = 2048
6.140
6.141 +def html_net_flag(remote):
6.142 + if remote:
6.143 + return 0
6.144 + else:
6.145 + return HTML_PARSE_NONET
6.146 +
6.147 +def xml_net_flag(remote):
6.148 + if remote:
6.149 + return 0
6.150 + else:
6.151 + return XML_PARSE_NONET
6.152 +
6.153 +def xml_validate_flag(validate):
6.154 + if validate:
6.155 + return XML_PARSE_DTDVALID
6.156 + else:
6.157 + return 0
6.158 +
6.159 def Parser_push():
6.160 return libxml2mod.xmlCreatePushParser(None, "", 0, None)
6.161
6.162 -def Parser_configure(context):
6.163 +def Parser_configure(context, validate, remote):
6.164 libxml2mod.xmlParserSetPedantic(context, 0)
6.165 - libxml2mod.xmlParserSetValidate(context, 0)
6.166 - libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET)
6.167 + #libxml2mod.xmlParserSetValidate(context, validate)
6.168 + libxml2mod.xmlCtxtUseOptions(context,
6.169 + XML_PARSE_NOERROR | XML_PARSE_NOWARNING | xml_net_flag(remote) | xml_validate_flag(validate))
6.170
6.171 def Parser_feed(context, s):
6.172 libxml2mod.xmlParseChunk(context, s, len(s), 1)
6.173 @@ -643,6 +663,9 @@
6.174 def Parser_well_formed(context):
6.175 return libxml2mod.xmlParserGetWellFormed(context)
6.176
6.177 +def Parser_valid(context):
6.178 + return libxml2mod.xmlParserGetIsValid(context)
6.179 +
6.180 def Parser_document(context):
6.181 return libxml2mod.xmlParserGetDoc(context)
6.182
7.1 --- a/packages/debian-etch/python-libxml2dom/debian/changelog Mon Aug 25 22:30:19 2008 +0200
7.2 +++ b/packages/debian-etch/python-libxml2dom/debian/changelog Tue Aug 26 00:17:04 2008 +0200
7.3 @@ -1,3 +1,16 @@
7.4 +libxml2dom (0.4.7-0ubuntu1) stable; urgency=low
7.5 +
7.6 + * Fixed the ownerElement of attributes created by XPath
7.7 + queries, and in all other situations involving the
7.8 + implementation's get_node method.
7.9 + * Replaced the getElementById implementation with one
7.10 + based on libxml2's own support for finding attributes
7.11 + declared as identifiers.
7.12 + * Introduced support for validation, together with the
7.13 + libxml2dom.errors module.
7.14 +
7.15 + -- Paul Boddie <paul@boddie.org.uk> Tue, 26 Aug 2008 00:12:15 +0200
7.16 +
7.17 libxml2dom (0.4.6-0ubuntu1) stable; urgency=low
7.18
7.19 * Exposed the libxml2 support for processing XInclude declarations.
8.1 --- a/packages/debian-sarge/python2.3-libxml2dom/debian/changelog Mon Aug 25 22:30:19 2008 +0200
8.2 +++ b/packages/debian-sarge/python2.3-libxml2dom/debian/changelog Tue Aug 26 00:17:04 2008 +0200
8.3 @@ -1,3 +1,16 @@
8.4 +libxml2dom (0.4.7-0ubuntu1) stable; urgency=low
8.5 +
8.6 + * Fixed the ownerElement of attributes created by XPath
8.7 + queries, and in all other situations involving the
8.8 + implementation's get_node method.
8.9 + * Replaced the getElementById implementation with one
8.10 + based on libxml2's own support for finding attributes
8.11 + declared as identifiers.
8.12 + * Introduced support for validation, together with the
8.13 + libxml2dom.errors module.
8.14 +
8.15 + -- Paul Boddie <paul@boddie.org.uk> Tue, 26 Aug 2008 00:12:33 +0200
8.16 +
8.17 libxml2dom (0.4.6-0ubuntu1) stable; urgency=low
8.18
8.19 * Exposed the libxml2 support for processing XInclude declarations.
9.1 --- a/packages/ubuntu-feisty/python-libxml2dom/debian/changelog Mon Aug 25 22:30:19 2008 +0200
9.2 +++ b/packages/ubuntu-feisty/python-libxml2dom/debian/changelog Tue Aug 26 00:17:04 2008 +0200
9.3 @@ -1,3 +1,16 @@
9.4 +libxml2dom (0.4.7-0ubuntu1) feisty; urgency=low
9.5 +
9.6 + * Fixed the ownerElement of attributes created by XPath
9.7 + queries, and in all other situations involving the
9.8 + implementation's get_node method.
9.9 + * Replaced the getElementById implementation with one
9.10 + based on libxml2's own support for finding attributes
9.11 + declared as identifiers.
9.12 + * Introduced support for validation, together with the
9.13 + libxml2dom.errors module.
9.14 +
9.15 + -- Paul Boddie <paul@boddie.org.uk> Tue, 26 Aug 2008 00:11:32 +0200
9.16 +
9.17 libxml2dom (0.4.6-0ubuntu1) feisty; urgency=low
9.18
9.19 * Exposed the libxml2 support for processing XInclude declarations.
10.1 --- a/packages/ubuntu-hoary/python2.4-libxml2dom/debian/changelog Mon Aug 25 22:30:19 2008 +0200
10.2 +++ b/packages/ubuntu-hoary/python2.4-libxml2dom/debian/changelog Tue Aug 26 00:17:04 2008 +0200
10.3 @@ -1,3 +1,16 @@
10.4 +libxml2dom (0.4.7-0ubuntu1) hoary; urgency=low
10.5 +
10.6 + * Fixed the ownerElement of attributes created by XPath
10.7 + queries, and in all other situations involving the
10.8 + implementation's get_node method.
10.9 + * Replaced the getElementById implementation with one
10.10 + based on libxml2's own support for finding attributes
10.11 + declared as identifiers.
10.12 + * Introduced support for validation, together with the
10.13 + libxml2dom.errors module.
10.14 +
10.15 + -- Paul Boddie <paul@boddie.org.uk> Tue, 26 Aug 2008 00:10:37 +0200
10.16 +
10.17 libxml2dom (0.4.6-0ubuntu1) hoary; urgency=low
10.18
10.19 * Exposed the libxml2 support for processing XInclude declarations.
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2 +++ b/tests/test_svg_invalid.xml Tue Aug 26 00:17:04 2008 +0200
11.3 @@ -0,0 +1,12 @@
11.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
11.5 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
11.6 +<svg width="40.000000mm" height="60.000000mm" id="svg1" xmlns="http://www.w3.org/2000/svg">
11.7 + <defs id="defs3"/>
11.8 + <horses>Oh yeah!</horses>
11.9 + <g id="layer1">
11.10 + <path style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ff0000;stroke-width:21.259844;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
11.11 + d="M 70.866142,26.574797 L 70.866142,186.02362 M 26.574803,26.574797 L 115.15748,26.574797"
11.12 + id="path10002" />
11.13 + </g>
11.14 +</svg>
11.15 +