Apps are cobbled together from sub-systems and libraries.  Some of those 
may use clojure.data.xml, either to share their products with their client 
or for their internal purposes.  As soon as two libraries on Clojars differ 
in their namespace-URI to keyword-namespace mapping, has the ship sunk?  

Nonetheless, value equality might sometimes be useful.  How to achieve it?  

There is already a globally distinct, agreed, and unambiguous way to refer 
to each well-known XML namespace URI.  It is the URI itself.  If the 
keyword-namespace must have the same properties, it ought to follow from 
the URI, not be left to the discretion of individual consumers.  

Could there be a well-known translation from namespace-URI to 
keyword-namespace and back?  These keyword namespaces would be cumbersome 
(as they must include the whole URI and also avoid colliding with the 
namespace of any other namespaced keywords anywhere), but consumers could 
alias them conveniently without impacting value comparisons:

(->> 'xmlns.http.www.w3.org.n1999.xhtml
     create-ns
     ns-name
     symbol
     (alias 'xhtml))

To account for the whole space of URIs, without violating the Clojure or 
EDN keyword namespace spec or compromising reverse translation back to the 
URI, you might have to go further.  For example, combine a legible symbol 
name computed with some loss (as an assertion) and a Base-64 encoding...

(->> 
'xmlns.http.maven.apache.org.POM.4.0.0.aHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wCg==
     create-ns
     ns-name
     symbol
     (alias 'pom))

A well-known formula for namespace keywords representing XML namespaces 
could replace the ad-hoc mutable map and satisfy your dual aims that 
clojure.data.xml applications might use keywords for convenience while also 
maintaining strict value equality of the XML data structures all the way to 
the horizon.  (The data structure would use such keywords for all element 
tags.)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to