[Lxml-checkins] r46158 - in lxml/trunk: . src/lxml
scoder at codespeak.net
scoder at codespeak.net
Wed Aug 29 14:29:42 CEST 2007
Author: scoder
Date: Wed Aug 29 14:29:41 2007
New Revision: 46158
Modified:
lxml/trunk/CHANGES.txt
lxml/trunk/src/lxml/builder.py
Log:
let ElementMaker accept 'namespace' and 'nsmap' keywords as in objectify
Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt (original)
+++ lxml/trunk/CHANGES.txt Wed Aug 29 14:29:41 2007
@@ -87,6 +87,10 @@
Features added
--------------
+* The ``ElementMaker`` in ``lxml.builder`` now accepts the keyword arguments
+ ``namespace`` and ``nsmap`` to set a namespace and nsmap for the Elements it
+ creates.
+
* The ``docinfo`` on ElementTree objects has new properties ``internalDTD``
and ``externalDTD`` that return a DTD object for the internal or external
subset of the document respectively.
Modified: lxml/trunk/src/lxml/builder.py
==============================================================================
--- lxml/trunk/src/lxml/builder.py (original)
+++ lxml/trunk/src/lxml/builder.py Wed Aug 29 14:29:41 2007
@@ -121,7 +121,18 @@
</html>
"""
- def __init__(self, typemap=None, makeelement=None):
+ def __init__(self, typemap=None,
+ namespace=None, nsmap=None, makeelement=None):
+ if namespace is not None:
+ self._namespace = '{' + namespace + '}'
+ else:
+ self._namespace = None
+
+ if nsmap:
+ self._nsmap = dict(nsmap)
+ else:
+ self._nsmap = None
+
if makeelement is not None:
assert callable(makeelement)
self._makeelement = makeelement
@@ -160,7 +171,9 @@
def __call__(self, tag, *children, **attrib):
get = self._typemap.get
- elem = self._makeelement(tag)
+ if self._namespace is not None and tag[0] != '{':
+ tag = self._namespace + tag
+ elem = self._makeelement(tag, nsmap=self._nsmap)
if attrib:
get(dict)(elem, attrib)
More information about the lxml-checkins
mailing list