Hi again,
I'm using cl-who for generating a lot of HTML and lowercase XML, and a tiny bit of mixed-case XML. (I don't know who thought up mixed-case XML schemas, but I swear it's not my fault. For that matter, neither is the XML. :-)
To generate mixed-case XML, I should turn off *downcase-tokens-p*, and then wrap every existing :foo like :|foo| in all my cl-who calls, just to be able to generate a couple mixedCase XML attributes. This idea doesn't thrill me. (Or I could change the readtable-case, but that'll mean changing all my code to upper-case, and I'm not excited about that, either.)
What if there was another mode (call it, say, *downcase-tokens-unless-mixedcase-p*) for case handling, whose rule was: - "downcase tokens, *unless* the token's string representation is mixed-case (in which case leave it alone)" That way, I could say (:a :href "/foo") like normal, but also (:|feGaussianBlur| :|stdDeviation| 2), and everything would work like it looks and like I want.
I suppose it would be impossible to generate all-uppercase tags in this mode, but (a) I don't think I've ever seen an XML schema that required any all-caps tags, and (b) in *downcase-tokens-p* mode, there are tags it's impossible to generate, so I'm thinking "any tag in any mode" isn't a strict requirement.
Thoughts? I could whip up a patch, if somebody else thought this was a decent approach...
- Ken