summaryrefslogtreecommitdiffstats
path: root/utils_xml.py
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2014-10-13 22:38:31 +0200
committerJan Pokorný <jpokorny@redhat.com>2014-10-21 16:12:58 +0200
commit3254273b3982e0a406088cb30a194e9eca2c0239 (patch)
tree5d5476a9191f4bb69f4408666e3a1b7a880fc2e2 /utils_xml.py
parentf91fcefb648006daf4137ccfd33b413d89db102d (diff)
downloadclufter-3254273b3982e0a406088cb30a194e9eca2c0239.tar.gz
clufter-3254273b3982e0a406088cb30a194e9eca2c0239.tar.xz
clufter-3254273b3982e0a406088cb30a194e9eca2c0239.zip
utils_xml: have the namespaces represented as symbols, too
+ propagate actually use these symbols Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'utils_xml.py')
-rw-r--r--utils_xml.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/utils_xml.py b/utils_xml.py
index d849ff3..d8f823d 100644
--- a/utils_xml.py
+++ b/utils_xml.py
@@ -18,6 +18,11 @@ NAMESPACES = {
'xsl': 'http://www.w3.org/1999/XSL/Transform',
}
+# X=x and X_NS=url for each (x, url) in NAMESPACES
+map(lambda ns: globals().setdefault(ns.upper(), ns), NAMESPACES.iterkeys())
+map(lambda (ns, url): globals().setdefault(ns.upper() + '_NS', url),
+ NAMESPACES.iteritems())
+
class UtilsXmlError(ClufterPlainError):
pass
@@ -38,14 +43,14 @@ def nselem(ns, tag, **kwargs):
return etree.Element(namespaced(ns, tag), **kwargs)
rng_get_start = etree.ETXPath("/{0}/{1}"
- .format(namespaced('rng', 'grammar'),
- namespaced('rng', 'start')))
+ .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
-RNG_ELEMENT = ("/{0}//{1}".format(namespaced('rng', 'grammar'),
- namespaced('rng', 'element'))
+RNG_ELEMENT = ("/{0}//{1}".format(namespaced(RNG, 'grammar'),
+ namespaced(RNG, 'element'))
.replace('{', '{{').replace('}', '}}')
+ "[@name = '{0}']")
@@ -117,16 +122,16 @@ def rng_pivot(me, et, tag):
label = me.__name__ + '_' + localname
# target's content place directly under /grammar wrapped with new define...
- new_define = nselem('rng', 'define', name=label)
+ new_define = nselem(RNG, 'define', name=label)
new_define.append(target)
parent_start.append(new_define)
# ... while the original occurrence substituted in-situ with the reference
- new_ref = nselem('rng', 'ref', name=label)
+ new_ref = nselem(RNG, 'ref', name=label)
parent_target.insert(index_target, new_ref)
# ... and finally /grammar/start pointed anew to refer to the new label
- start_ref = nselem('rng', 'ref', name=label)
+ start_ref = nselem(RNG, 'ref', name=label)
start.clear()
start.append(start_ref)