Interesting. Definitely keep us posted on progress.

Thanks for this Herwig.


Tim Washington
Interruptsoftware.com <http://interruptsoftware.com>


On Sat, May 10, 2014 at 7:25 AM, Herwig Hochleitner
<[email protected]>wrote:

> test_namespace.clj just contains some unit tests for now. The final patch
> will have usage examples.
>
> With the proposal, you can define your xml namespaces on a
> clojure-namespace level and refer them via keyword namespaces:
>
> (ns thing)
>
> (xml-default-prefix *ns* "thing")
> (xml-prefix *ns*
>   "thing" "http://thing";)
>
> (def e4 (xml/sexp-as-element
>           [::first {} [::second {}]]))
>
> This improves on handling raw xml-prefixes in two ways:
> - The full xml namespace "http://thing"; is known for an xml name like
> ::first, ::second, not just the prefix you happened to assign in code.
> - You can combine xml fragments from different parts of code, without
> worrying about prefix assignment. The emitter takes care of assigning xmlns
> declarations.
>
> cheers
>
>
> 2014-05-10 0:22 GMT+02:00 Timothy Washington <[email protected]>:
>
>> Thanks Herwig. I take it 
>> test_namespace.clj<https://github.com/bendlas/data.xml/blob/master/src/test/clojure/clojure/data/xml/test_namespace.clj>is
>>  the interesting file. Given the example in my previous message, is there
>> a more idiomatic way of defining namespaces with this proposal?
>>
>>
>> Thanks again
>>
>> Tim Washington
>> Interruptsoftware.com <http://interruptsoftware.com>
>>
>>
>>
>> On Thu, May 8, 2014 at 10:54 AM, Herwig Hochleitner <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> I'm the guy working on the newer proposal, which is almost done (TM). It
>>> seems you have found the way to emulate namespacing with the current
>>> data.xml impl: by taking care of xmlns attributes and prefixes yourself. I
>>> definitely want to keep compatibility with that representation. Feel free
>>> to check out my proposal branch here https://github.com/bendlas/data.xml
>>>
>>> cheers
>>>
>>>
>>> 2014-05-06 21:53 GMT+02:00 Timothy Washington <[email protected]>:
>>>
>>>> Ok, scratch that. I got it working, lol :)
>>>>
>>>> Sorry for the false alarm. For future reference, this:
>>>>
>>>> (def e4 (xml/sexp-as-element
>>>>          [:thing:first {:xmlns:thing "http://thing"}
>>>>          [:thing:second {}]]))
>>>>
>>>>
>>>> ...gives you this:
>>>>
>>>> user> (process/print-esequel process/e4)
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <thing:first xmlns:thing="http://thing";>
>>>>   <thing:second/>
>>>> </thing:first>
>>>>
>>>>
>>>>
>>>> Tim Washington
>>>> Interruptsoftware.com <http://interruptsoftware.com>
>>>>
>>>>
>>>> On Tue, May 6, 2014 at 3:45 PM, Timothy Washington 
>>>> <[email protected]>wrote:
>>>>
>>>>> Got a bit further here. I want to be able to get tag namespaces
>>>>> without a :root tag (that includes the namespace definition). Assume the
>>>>> below code has (require '[clojure.data.xml :as xml]).
>>>>>
>>>>>
>>>>> Working with attributes is fine.
>>>>>
>>>>> (def e1 (xml/element :use {:xmlns:xlink "http://testing";,
>>>>>                            :xlink:href "#whiskers",
>>>>>                            :transform "scale(-1 1) translate(-140
>>>>> 0)"}))
>>>>>
>>>>>
>>>>> Namespace prefixes is possible with tags; however, I had to add the
>>>>> unwanted :root tag (that includes ns definition)
>>>>>
>>>>> (def e2 (xml/element :root {:xmlns:thing "http://thing"}
>>>>>                      (xml/element :thing:use {})))
>>>>>
>>>>> (def e3 (xml/element :root {:xmlns:thing "http://thing"}
>>>>>                      (xml/sexp-as-element
>>>>>                       [:thing:first {}
>>>>>                        [:thing:second {}]])))
>>>>>
>>>>> (defn print-esequel [elem]
>>>>>   (println (xml/indent-str elem)))
>>>>>
>>>>>
>>>>>
>>>>> The resulting XML is close. But we want the tag namespaces, without
>>>>> the root node
>>>>>
>>>>> user> (print-esequel process/e2)
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <root xmlns:thing="http://thing";>
>>>>>   <thing:use/>
>>>>> </root>
>>>>>
>>>>> user> (print-esequel process/e3)
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <root xmlns:thing="http://thing";>
>>>>>   <thing:first>
>>>>>     <thing:second/>
>>>>>   </thing:first>
>>>>> </root>
>>>>>
>>>>>
>>>>>
>>>>> Tim Washington
>>>>> Interruptsoftware.com <http://interruptsoftware.com>
>>>>>
>>>>>
>>>>> On Tue, May 6, 2014 at 3:24 PM, Timothy Washington <[email protected]
>>>>> > wrote:
>>>>>
>>>>>> Hi there,
>>>>>>
>>>>>>
>>>>>> *A)* I'm just writing some SOAP XML, trying to use 
>>>>>> data.xml<https://github.com/clojure/data.xml>.
>>>>>> This SO 
>>>>>> thread<http://stackoverflow.com/questions/10868050/clojure-data-xml-create-key-named-xlinkhref>
>>>>>>  outlines
>>>>>> how to write out namespace aware XML. But the example is for a namespace 
>>>>>> on
>>>>>> an attribute. I'm combing through the code now, but does anyone know how 
>>>>>> to
>>>>>> set this up?
>>>>>>
>>>>>>
>>>>>> *B)* There's actually this Fuller XML 
>>>>>> Support<http://dev.clojure.org/display/DXML/Fuller+XML+support>proposal 
>>>>>> (referring to this
>>>>>> thread<https://groups.google.com/forum/#!msg/clojure-dev/3_jkBrdQKgs/dUwtevWqlwkJ>),
>>>>>> and this Namespaced 
>>>>>> XML<http://dev.clojure.org/display/DXML/Namespaced+XML>proposal. But I 
>>>>>> don't see that namespaces are fully implemented in any of
>>>>>> the core libs.
>>>>>>
>>>>>> I only see this ArmageDOM <https://github.com/pepijndevos/ArmageDOM>lib, 
>>>>>> which supports namespaces. Anything else out there that I've missed?
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Tim Washington
>>>>>> Interruptsoftware.com <http://interruptsoftware.com>
>>>>>>
>>>>>>  --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to [email protected]
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> [email protected]
>> 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 [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to [email protected]
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> [email protected]
> 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 [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to