You're right with the validation issue. Still I think it's the best solution compared to having HTML spilled all over XQuery code (no offence anyone...) or having perf-heavy XSLT. JsonML implementation in BaseX also kills namespace information (no ns prefix prepended in my tests), as far as I tested. So this might be a problem if I wanted to send and receive data with mixed namespaces. But that can be worked around as well somehow... Also I don't know what is the perf impact of BaseX's JsonML mapping but I don't think it's too much of an issue.
Daniel
-- danielkvasnicka.net
On Nov 19, 2012, at 10:08 , Dirk Kirsten dk@basex.org wrote:
This is quite an interesting approach (I didn't know about AngularJS before). . In the end it looks like AngularJS does exactly what XForms was created for. However, I see your point of no existing 100% satisfying XForms implementation as well. But there is one problem with this approach in comparison to pure XForms I'd like to mention, though. XForms automatically does form validation on the client and server side, AngularJS in comparison is just validating on client side, i.e. you are responsible to validate it on server side. Depending on how much and what form elements you use this could significantly add work hours. Depending on the use case this might be negligible, but everyone thinking about the same problem should keep this in mind. And of course AngularJS puts some processing on the client, but I guess with nowadays JavaScript implementations in the browser this shouldn't be much of an issue.
Cheers, Dirk
On Mon, Nov 19, 2012 at 9:56 AM, Daniel Kvasnička daniel.kvasnicka@me.com wrote: Well, I've actually opted for a completely different solution - AngularJS & RESTXQ & JsonML. Very cool so far! It actually makes BaseX only a service layer and moves all UI composition and teplating to the client. Originally I wanted to make a pure XRX solution but I don't see any easily embeddable and widely supported XForms implementation on the market (XSLTForms comes close but I see too many "buts" and "ifs").
Daniel
-- danielkvasnicka.net
On Nov 19, 2012, at 9:47 , Michael Seiferle ms@basex.org wrote:
Hi Daniel,
thanks a lot for your observations, I know moustache.{xq,js} as well, and I'd be thrilled if we eventually come up with our own BaseX compatible implementation :-)
Anyway, until then, I'd like to let you know how we handle this at the moment: We introduce a template module that accepts a map of options and some content. Inside the template wrapping function, we wire our page elements with the map’s contents. This proved to be rather flexible while still being lightweight enough to be out of the way most of the time.
Please excuse the messed up highlighting: https://gist.github.com/e053068a41eb35e727bb
We chose maps, as they make it especially easy to provide default values that can be easily overridden from calling functions by combining a map:
let $defaults := map {"Foo" := "Bar", "foo" := "bar", "Bar" := "Foo"} let $options := map {"Foo" := "Override"} let $options := map:new(($defaults, $options)) return string-join(map:keys($options) ! (. || " := "|| $options(.)), " ")
I hope this helps feel free to discuss this issue more :)
Michael
Am 17.11.2012 um 19:27 schrieb Daniel Kvasnička daniel.kvasnicka@me.com:
Hi folks,
another thing I'm trying to solve while working on a XQuery web app. What kind of templating system do you use to separate HTML templates from the rest of your code?
XSLT - the only problem I have with this is performance. I tested the XSLT Module with Saxon 9 and a primitive page and it was more than 3x slower compared to pure XQuery templates (XQuery fn taking $model). Other than that I think it's the best built-in option. I actually don't have any users-per-second expectations and those templates will be quite small... do I overemphasize the perf. question?
pure XQuery - not aimed at templating at all and it shows I'm afraid... just can't come up with a solution that would be clean enough (plus HTML, JS & CSS highlighting withing xq files is not good at all, at least in Vim)
I looked at Mustache.xq and quite liked it - depends on MarkLogic though :(
Any hidden gem I haven't googled yet?
Leaning towards XSLT right now... Daniel
-- danielkvasnicka.net
BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
-- Dirk Kirsten, BaseX GmbH, http://basex.org |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: | Dr. Christian Grün, Alexander Holupirek, Michael Seiferle `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22