summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2015-11-25 23:28:12 +0100
committerJan Pokorný <jpokorny@redhat.com>2015-12-17 23:34:26 +0100
commit9880da710603fe1d18dfac732b904bca4cc26f5f (patch)
tree7c784fbd0b0ab9316a874a822e7d0ae89b3d8252
parent30b591ccc46645944dfe690c844c1137347c7c5b (diff)
downloadclufter-9880da710603fe1d18dfac732b904bca4cc26f5f.tar.gz
clufter-9880da710603fe1d18dfac732b904bca4cc26f5f.tar.xz
clufter-9880da710603fe1d18dfac732b904bca4cc26f5f.zip
utils_xslt: xslt_id_friendly: new helper
Some offending ASCII characters are translated to '_', the remaining ones (all or almost) are simply removed. Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
-rw-r--r--utils_xslt.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/utils_xslt.py b/utils_xslt.py
index 2e09582..de4ec02 100644
--- a/utils_xslt.py
+++ b/utils_xslt.py
@@ -41,3 +41,18 @@ def xslt_params(**d):
k, xslt_boolean(v) if isinstance(v, bool) else v
)
return ret
+
+
+def xslt_id_friendly(inner):
+ """Make the passed XPath expression yielding string XML ID friendly"""
+ # XXX apostrophe missing
+ return '''\
+ translate(
+ translate(
+ {0},
+ ' -/:',
+ '____'
+ ),
+ '!&#x22;#$&#x25;&#x26;()*+,;&#x3c;=&#x3e;?@[\]^`{{|}}~',
+ ''
+ )'''.format(inner)