On May 12, 2008, at 9:38 AM, Bjoern Hoehrmann wrote:

* Maciej Stachowiak wrote:
You can just use `function(p) { return namespaces[p]; }` then.

Sure, but there's no actual need to allow running arbitrary code and
all the risks that creates/

Which is no risks at all. You can simply parse the selector for the pre- fixes, resolve all the distinct ones and the default namespace, then use
the gathered information in the selection process. That's no different
than the calling script doing the same, filling a table in the process, and passing the table. If you want to do something more clever, you may
also cleverly shoot yourself in the foot, yes.

It is better API design to remove the possibility of some categories of errors.

(There are other problems with using an object like the one you propose,
like being unable to specify a default namespace, unless you introduce
some kind of magic prefix representing the default namespace; ultimately
you don't gain much; you could also just accept a simple string in the
form "prefix1=ns1 prefix2=ns2 ..." like MSXML does for XPath, but there
isn't really a problem worth solving with the resolver function.)

I'm convinced. I like the string better than my proposal. It removes the need to specify anything regarding setters or other language bindings.

Using a function does not seem to provide any value over providing the data in some trivial static form, and at least some complications. It seems like the only reason we have that design in the spec is inertia. Are you willing to argue that it is better than other solutions on the merits, for any reason other than it happens to be what is already in the draft spec?

Regards,
Maciej



Reply via email to