Looking deeper at <script>, externalResourcesRequired=""

While looking at ACTION-2063 again, I have a question about
externalResourcesRequired="".

The first paragraph of 5.9.1 says:

  Documents often reference and use the contents of other document and
  other web resources as part of their rendering or processing. In some
  cases, authors want to specify that particular resources are required
  for a document to be considered correct.
   — http://www.w3.org/WWW/Graphics/SVG/Group/repository/spec/mobile/1.2/1.2NG/publish/struct.html#ExternalResourcesRequiredAttribute

So this sounds like it is introducing a feature that can control the
rendering and/or processing of an element given an external resource.
The following paragraph says:

  Attribute 'externalResourcesRequired' is available on all container
  elements except 'defs' and on all elements which potentially can
  reference external resources. It specifies whether referenced
  resources that are not part of the current document are required for
  proper rendering of the given element.

This mentions rendering, but not processing.  <script> elements don’t
render, but they can have an eRR attribute on them.  Should eRR="true"
on <script> prevent the rest of the document from rendering?
(Probably.)  Should eRR="true" on anything with a bad external reference
cause subsequent <script> elements not to execute?  (Not sure.)


Another interesting test I just tried is mutating the document from
script:

  http://dev.w3.org/SVG/profiles/1.1F2/ua-tests/script-modify-document.svg

This is a document whose rendering in Batik is different from
Firefox/Opera.  In the latter, the <script> appends the blue <rect> to
the <svg> before the red <rect> is parsed, so the red one is inserted
into the document after the blue one.  In Batik however, the whole
document is available before the <script> is executed, resulting in the
blue <rect> being appended after the red one.

We’ll have to specify this as well.  Currently the only language in the
spec that I could find that talks about constructing the document is in
the Progressive Rendering section:

  When loading a document following the start element event on a node,
  that node becomes part of the document tree in the unresolved state.
   — http://www.w3.org/WWW/Graphics/SVG/Group/repository/spec/mobile/1.2/1.2NG/publish/struct.html#ProgressiveRendering

That doesn’t say where it goes in the document.  Maybe we can just
change this to say that during loading, the node is appended as a child
of the element corresponding to the most recently parsed start tag.


Also, it is currently unclear whether a load event should be dispatched
to a <script> element with a bad external reference, when eRR="false".
The steps in 15.2.1 do not deal with the case when the external script
cannot be retrieved, and just mentions load event dispatching at the
end.  In the Interactivity chapter, under the description for the load
event, there is this:

  The event is triggered at the point at which the user agent finishes
  loading the element and any dependent resources (such as images, style
  sheets, or scripts). In the case the element references a script, the
  event will be raised only after an attempt to interpret the script has
  been made. Dependent resources that fail to load will not prevent this
  event from firing if the element that referenced them is still
  accessible via the DOM unless they are designated as
  externalResourcesRequired.
   — http://www.w3.org/www.w3.org/WWW/Graphics/SVG/Group/repository/spec/mobile/1.2/1.2NG/publish/interact.html#LoadEvent

I’m not sure if that means load should be fired or not for
<script xlink:href="bad-ref" externalResourcesRequired="false">.  (My
guess is it shouldn’t.)


Answers to the above questions welcomed.

Thanks,

Cameron

-- 
Cameron McCormack ≝ http://mcc.id.au/

Received on Monday, 23 June 2008 04:00:47 UTC