RE: Error processing

Cameron,
My understanding is that the SVG WG has concluded that it is too much to
require that conformant UAs need to render up to the first error in the
document. In other words, stopping rendering at the first element which
has an error is extra credit, but it is OK to simply provide a highly
visible indication of error.

Another related change is that with SVG 1.2 (certainly for Tiny,
probably for Full, also) there are fewer things which are considered "in
error". Some of the bad values such as "-1" for a radius which
previously were defined as errors are now becoming unsupported values,
which the UA must process as if the value had not been specified. The
'r' attribute for circle is a case in point:

http://www.w3.org/TR/SVG11/shapes.html#CircleElement
http://www.w3.org/TR/SVGMobile12/shapes.html#CircleElement
http://www.w3.org/TR/SVGMobile12/implnote.html#UnsupportedProps

A major contributor to this change was the realization that there was
poor interoperability for SVG 1.1's rules around bad values and too
great of an implementation burden on mobile device implementers, and
there was hope that there would be better interoperability with the
revised rules.

Jon

-----Original Message-----
From: www-svg-request@w3.org [mailto:www-svg-request@w3.org] On Behalf
Of Cameron McCormack
Sent: Tuesday, January 31, 2006 9:28 PM
To: www-svg@w3.org
Subject: Error processing


Hi.

In SVG 1.1 section F.2 Error Processing it states:

  The following error processing shall occur when a document is in
  error:

    * The document shall be rendered up to, but not including, the first
      element which has an error.

Let's say I have this document:

  <svg ...>
    <rect width="100" height="100" onclick="evt.target.width.baseVal =
-1"/>
    <circle cx="100" cy="100" r="50"/>
  </svg>

If I click on the rect should the circle disappear?

How about this one:

  <svg ...>
    <circle cx="100" cy="100" r="50" fill="url(#a)"/>
    <circle cx="200" cy="200" r="50" fill="url(#b)"
            onclick="document.getElementById('b')
                             .setAttributeNS(null, 'r', '-1')"/>
    <defs>
      <radialGradient id="b">
        <stop offset="0" stop-color="yellow"/>
        <stop offset="100%" stop-color="red"/>
      </radialGradient>
      <radialGradient id="a">
        <stop offset="0" stop-color="white"/>
        <stop offset="100%" stop-color="black"/>
      </radialGradient>
    </defs>
  </svg>

After clicking on the second circle, the 'b' radialGradient element is
in error.  The text says the document "shall be rendered up to" just
before the element in error.  Does processing of the 'a' radialGradient
count as being "rendered" and thus the first circle is in error, since
it references 'a'?

Thanks,

Cameron

-- 
 Cameron McCormack			ICQ: 26955922
 cam (at) mcc.id.au			MSN: cam (at) mcc.id.au
 http://mcc.id.au/			JBR: heycam (at) jabber.org

Received on Wednesday, 1 February 2006 17:32:14 UTC