- From: Dirk Schulze <dschulze@adobe.com>
- Date: Thu, 8 Aug 2013 22:58:06 -0700
- To: Cameron McCormack <cam@mcc.id.au>
- CC: "Tab Atkins Jr." <jackalmage@gmail.com>, www-svg <www-svg@w3.org>
On Aug 9, 2013, at 1:36 AM, Cameron McCormack <cam@mcc.id.au> wrote: > Tab Atkins Jr. wrote: >> Some comments on the proposal at >> <http://dev.w3.org/SVG/proposals/improving-svg-dom/>. >> >> 1. The proposal currently says that SVG elements in either HTML or the >> null namespace opt into the new DOM. This appears to be because of a >> belief that createElement() run in an XML document creates an element >> in the null namespace. Per spec, at least, this is wrong - >> createElement() always puts elements in the HTML namespace, so we can >> just drop the "null namespace" part and only care about the HTML >> namespace. > > As I saw it, there were two advantages to allowing the elements to be in > either the HTML namespace or no namespace. One is createElement doing > the right thing, regardless of whether you were in an HTML or XML > document, though as you point out if it's meant to put things in the > HTML namespace always, then that's one advantage removed. The second > was to allow > > <graphics> > </graphics> > > in image/svg+xml documents, rather than requiring > > <graphics xmlns="http://www.w3.org/1999/xhtml"> > </graphics> > > (Or <svg>, if you don't buy in to the need for a new root element.) > >> 3. I'm not convinced on the<viewport> element. I have found it >> slightly clumsy before that some attributes are only useful on the >> root<svg> and others are only useful on nested<svg>s, but I don't >> know how bad this is. Shrug, I can be convinced either way. > > Three alternatives to <viewport>: continue allowing <svg> as the > viewport establishing element inside an SVG fragment; allow <graphics> > in the middle of the document; add the viewport-defining attributes to <g>. Hm, we discussed putting elements like <circle> in the normal HTML flow. Maybe these elements that have an HTML ancestor create a viewport automatically. This way it might be easier to define that they contribute to the CSS boxing model. The crux is again with elements like <g> that has no dimension. At the end it should not be that different to <div> elements with auto sizing. > >> 4. I strongly agree on the clean break between old interfaces and new. >> There are too many things where we'd either need clumsy overloads, or >> do really bizarre subclassing, or just add new "good" names for >> attributes. (For example, there's no non-hacky way to change rect.x >> or a.href to let you avoid the baseVal/animVal stuff.) > > Per IRC discussion, we need to look into "value objects" from ES.next, > to see if they might be able to solve this problem. If they can, I > wonder if that solves much of what this proposal aims to achieve. > >> 5. I don't like the precise shape of the length/etc new stuff. The >> functionality is great, but the API shape is different from what we >> were aiming towards for CSS, and is somewhat clumsy in some aspects >> (as you note in an issue). We should just work together with CSSOM >> and define something consistent. Maybe this is something for FXTF? >> (I don't care where it happens, I just want us to coordinate.) > > I agree we should coordinate to have things represented the same as in > CSSOM. > We already have some attributes that got transformed to presentation attributes. I think we should drive this indecent of the decision on Camerons proposal. We discussed this in Sydney as well, and I am very much supportive to replace the SVG DOM with CSS OM. But this means we would need to work on CSS OM 2 sooner than later. We should contact the CSS WG on that. Greetings, Dirk >> For example, the CSSWG knows from experience that things which start >> out as simple values often expand later to become list-valued or >> map-valued, and shaped its proposal to allow for this kind of >> expansion in a natural way. For example, list-valued properties >> actually return an object for just the first item, but with a .l >> property hanging off that returns the whole list. >> >> On a related note, one of the possible directions we've thought about >> for the CSSOM Values API was just defining all the values interfaces >> as subclassing DOMString, so you can still interact with the value as >> a string, but can also hang off properties like .px (for lengths) or >> .red (for colors). >> >> Taking these together, we can, for example, have .transform be a >> DOMString subclass. I guess it has [PutForwards] on it so it can be >> set to a string directly. It exposes the transform properties for its >> first item, and has a .l property on it to expose a (live?) list of >> transforms. > > Also per IRC, I don't think this is a great way to go, unless value > objects solve some fundamental problems with string-ish objects: you > can't compare two string-ish objects for string equality using "==", > since that would compare object identity, and "!" would always return false. >
Received on Friday, 9 August 2013 05:58:40 UTC