summaryrefslogtreecommitdiffstats
path: root/utils_xml.py
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2015-05-29 13:43:13 +0200
committerJan Pokorný <jpokorny@redhat.com>2015-05-29 20:01:18 +0200
commitc89db45c8c2a48b798557706b85cf05dd0f1dc4a (patch)
tree59e5c04d3a8a4d3e2b6ae248a86e53593dcbfa1e /utils_xml.py
parentb315071bf19fe9fd9c1d6c2739854da1c92f4d9f (diff)
downloadclufter-c89db45c8c2a48b798557706b85cf05dd0f1dc4a.tar.gz
clufter-c89db45c8c2a48b798557706b85cf05dd0f1dc4a.tar.xz
clufter-c89db45c8c2a48b798557706b85cf05dd0f1dc4a.zip
utils_xml: xmltag_get_{localname,namespace}: make more robust
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'utils_xml.py')
-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'))