summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--utils_xml.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/utils_xml.py b/utils_xml.py
index f835dae..a93165c 100644
--- a/utils_xml.py
+++ b/utils_xml.py
@@ -54,8 +54,13 @@ rng_get_start = etree.ETXPath("/{0}/{1}"
.format(namespaced(RNG, 'grammar'),
namespaced(RNG, 'start')))
xml_get_root_pi = etree.XPath("/*/processing-instruction()")
-xmltag_get_localname = lambda tag: etree.QName(tag).localname
-xmltag_get_namespace = lambda tag: etree.QName(tag).namespace
+
+# tag can also be a subclass of etree._Element when applied on `element.tag`
+# --> return an empty string in such non-string cases
+xmltag_get_localname = lambda tag: etree.QName(tag).localname \
+ if isinstance(tag, basestring) else ''
+xmltag_get_namespace = lambda tag: etree.QName(tag).namespace \
+ if isinstance(tag, basestring) else ''
RNG_ELEMENT = ("/{0}//{1}".format(namespaced(RNG, 'grammar'),
namespaced(RNG, 'element'))