href IDL attribute when animation xlink:href

Hi,

I made some edits to deprecate xlink:href. The behavior when using the 
IDL attribute, however, probably needs work.

Originally I thought, the following should continue to work:

  <image xlink:href="abc.png">
    <set attributeName="xlink:href" to="def.png"/>
  </image>

  image.getAttribute("href"); // ""
  image.getAttributeNS("http://www.w3.org/1999/xlink",
                       "href"); // "abc.png"
  image.href.baseVal // "abc.png"
  image.href.animVal // "def.png"

So I specced the behavior of the IDL attribute so that it returns a 
SVGAnimatedString object which corresponds to either 'href' or 
'xlink:href' depending on which was in use at the time the attribute was 
accessed (but preferring href if both were in use).[1]

On further thought, I think I should probably change that so that 'href' 
always returns the same SVGAnimatedString object and there's a single 
animVal regardless of whether you animate 'xlink:href' or 'href'. That 
is, the following two declarations target the same value:

   <set attributeName="xlink:href" to="1.png"/>
   <set attributeName="href" to="2.png"/>

Here the usual SMIL override rules apply (in this case the second 
declaration wins since they have the same start time and no syncbase 
dependencies so document order it used). I don't think we should 
complicate the sandwich model any further so that, for example, the 
'href' version in the following wins:

   <set attributeName="href" to="2.png"/>
   <set attributeName="xlink:href" to="1.png"/>

The baseVal member would return 'xlink:href' if set and 'href' was not 
set, otherwise 'href'. i.e. Only the baseVal member switches.

Setting the baseVal member sets whatever attribute it would read from 
(i.e. 'href' unless 'xlink:href' was already set and 'href' was not).

Since strings aren't additive for animation we don't need to worry about 
where the animation gets its underlying value from.

Essentially you'd have a somewhat special SVGAnimatedString but I think 
this is probably better.

Let me know if you have any suggestions, otherwise I'll go ahead and 
spec something along these lines.

Best regards,

Brian

[1] https://svgwg.org/svg2-draft/types.html#InterfaceSVGURIReference

Received on Friday, 17 April 2015 02:26:13 UTC