Copyright © 2005 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
This document specifies WICD Core 1.0, a device independent Compound Document profile based on XHTML, CSS and SVG.
Compound Document is the W3C term for a document that combines multiple formats.
WICD stands for Web Integration Compound Document and is based on the idea of integrating existing markup language formats in preference to inventing new markup.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This is the 21 November 2005 W3C Working Draft of the WICD Core. This is the first publication of the specification in this form. Previously this document formed part of the Compound Document Framework and WICD Profiles.
The Compound Document Formats Working Group explicitly requests comments on this specification. Please send them to public-cdf@w3.org, the public email list for issues related to compound documents on the Web. This list is archived and acceptance of this archiving policy is requested automatically upon first post. To subscribe to this list send an email to public-cdf-request@w3.org with the word subscribe in the subject line.
This document has been produced by the Compound Document Formats Working Group as part of the Rich Web Client Activity within the W3C Interaction Domain.
This document was produced under the 5 February 2004 W3C Patent Policy. The Working Group maintains a public list of patent disclosures relevant to this document; that page also includes instructions for disclosing [and excluding] a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy.
Per section 4 of the W3C Patent Policy, Working Group participants have 150 days from the title page date of this document to exclude essential claims from the W3C RF licensing requirements with respect to this document series. Exclusions are with respect to the exclusion reference document, defined by the W3C Patent Policy to be the latest version of a document in this series that is published no later than 90 days after the title page date of this document.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
1 Introduction
1.1 About this Document
1.2 Scope of this Specification
1.3 Related Documents
2 Root Document
3 Child Object Formats
3.1 SVG
3.2 Other Formats
4 Child Object Use Cases
4.1 Scalable Foreground Icon Object
4.2 Scalable Background Image
4.3 Scalable Overlay Objects (Sprites)
5 Child Object Layout
5.1 Rightsizing
5.2 Leftover Margins
5.3 Transparency
5.3.1 Introduction
5.3.2 Foreground Scalable Child Object over XHTML Background
5.3.3 Foreground Scalable Child Object over Background Scalable Child Object
5.3.4 Foreground Bitmap Object over Animating Background
5.3.5 Foreground Bitmap Object over Non-Animating Background
6 Focus Support
6.1 Focusable Child Objects
6.2 Focus Event triggered Child Object Animations
6.3 Focus Navigation
6.3.1 Two Dimensional Focus Navigation (Flat, Graphical, Joystick)
6.3.2 One Dimensional Focus Navigation (Linear, Focus Ring, Tab)
7 Font Support
7.1 System Fonts
7.2 Font Naming
7.3 Font Sharing
8 Content Packaging, Encoding and Transfering
8.1 Content Encoding
8.2 Content Packaging
8.3 Caching Directives
9 Other User Agent Behavior
9.1 Temporal Synchronisation of Media
9.2 Play Animations while Document is loading
10 Events
10.1 XHTML Legacy Event Attributes
10.2 Attaching Events to WICD Documents
11 Identification
11.1 Profile Name
11.2 Media Queries
11.2.1 Media Features
A Definitions
B References
C Authoring Guidelines (Non-Normative)
D Acknowledgements (Non-Normative)
E Changes Log (Non-Normative)
(This section is informative)
All non normative sections are headed by: "(This section is informative)".
(This section is informative)
This document defines WICD Core 1.0. WICD Core is the foundation of rich multimedia content and describes rules for combining Hypertext Markup Language (XHTML), CSS and scalable child objects, such as Scalable Vector Graphics (SVG) in non device specific manner. WICD Core 1.0 builds upon the CDR Framework 1.0.
Profiles based on WICD Core support presentation of rich multimedia content as having the following characteristics:
Graphically rich content, possibly including animated background image.
Content author/provider has exact control of the presentation, including fonts, layout, color, etc.
Layout adaptation: layout can be based upon device characteristics - screen size, color depth, resolution, orientation.
Navigation (forward/backwards tab, up/down/left/right, accesskey, pointer, voice), graphical menus, interactivity and animations.
Graphical menu systems where items have an animated action when focused on.
Portable user interface.
Presentation can be customized to reflect a brand or user's personality.
Skinnable user interface: the ability to use animations and interactivity as a user interface "skin" or template around other content.
Rich content for different contexts.
Dynamic content: documents that are generated on the fly or which change over time
Interaction with mixed content, for example interacting with all the parts (graphics, text, images, audio, video, voice and multimodal interaction) of the mixed document.
Content adaptation, such as when a portal delivers a mixed document with varying capabilities (textual content and interactive animated content, for example) to a user which has been aggregated from multiple rich content sources.
Many of the requirements herein are related to this definition. XHTML and SVG have been chosen according to analysis of existing specifications and their applicability to rich multimedia content.
(This section is informative)
The image below shows the relation between WICD and CDF documents.
CDF describes generic rules and behaviour for combining sets of standalone XML formats.
NOTE: The Compound Document Framework is language-independent. While it is clearly meant to serve as the basis for integrating W3C's family of XML formats within its Interaction Domain (e.g., CSS, MathML, SMIL, SVG, VoiceXML, XForms, XHTML, XSL) with each other, it can also be used to integrate non-W3C formats with W3C formats or integrate non-W3C formats with other non-W3C formats.
WICD Mobile 1.0 is designed to enable rich multimedia content on mobile handset devices. It may also be appropriate for other handheld devices. However, WICD Mobile addresses the special requirements of mass market, one-hand operation devices and enables publishers to target these type of devices without having to evaluate user agent identification string. In this profile, child objects are embedded by reference (CDR = Compound Document by Reference).
WICD Mobile 1.0 builds upon WICD Core 1.0.
WICD Full 1.0 is designed to enable rich multimedia content on desktop type agents. It may also be appropriate for high capability handheld devices with a pointing device. In this profile, child objects are embedded by reference (CDR).
WICD Full 1.0 builds upon WICD Core 1.0.
The root document of any profile, that is based on WICD Core 1.0 must be a XHTML document.
WICD Child Objects are rectangular objects which, in their normal presentation, fit the screen, usually because they are scalable and ment to be looked at as a whole. Child Objects can be documents (e.g. SVG). They can also be non documents (have a binary format or be applications).
WICD 1.0 mandates one specific child object format: SVG. Later versions of WICD Core may mandate additional child object formats.
Multiple SVG child objects may be referenced from the same XHTML document.
Multiple SVG child objects may animate in parallel.
It may be necessary to transfer parameters declaratively to a SVG child document. The following is a list of possible parameters/values:
The child object will only render the first frame for time zero (0) and then suspend animation indefinitely.
This may be used for SVG objects that are non-animating to allow the user agent for performance and memory optimizations.Child objects can be referenced from a parent document as foreground icon objects, as background images or as overlays objects. Any Child Object Format must support these three use cases.
Scalable foreground icon objects are embedded using the XHTML <object> element and appear on the main XHTML layer, just like bitmap objects.
The following example shows how a SVG object is displayed as part of the XHTML document:
SVG referenced from XHTML:
<object data="icon.svg" type="image/svg+xml" width="100" height="100" />
User agents must support scalable icon objects which may be animating, interactive and may include embedded links.
Non-animating scalable images (SVG) must be supported for CSS background images. Conformant content must not include animated background (SVG) images. A scalable background image will not provide support for interaction, such as zooming, panning, linking and user interaction events.
The relevant SVG conformance requirement http://www.w3.org/TR/SVGMobile12/conform.html#ConformingSVGViewers says: "If the user agent includes an XHTML or SMIL viewing capability, then a Conforming SVG Viewer must support resources of MIME type "image/svg+xml" wherever raster image external resources can be used, such as in the XHTML 'img' element.
The following example shows how a SVG object is placed on the XHTML background, using the CSS background-image attribute:
Use of background-image:
<html> <body style="background-image:url(noanim.svg);background-attachment:fixed"> <p>This in foreground</p> </body> </html>
The following example will set an svg image noanim.svg as a fixed, non-repeating (ie, not tiled) non-scrolling ('pinned') background, using the individual properties:
Pinned background:
body { background-color: white; background-image: url(noanim.svg); background-repeat: no-repeat; background-attachment: fixed; background-position: center center }
or using the shorthand (the order is then significant):
Pinned background, shorthand:
body { background: white url(noanim.svg) no-repeat fixed center center }
If noanim.svg has width and height in px, then this is well defined. If it is (the default) 100% 100% then it will display, as large as will fit, where the background area to cover is seen as a viewport.
WICD UAs must support content layering using CSS absolute positioning in x, y and z order. This will detach a child object from main XHTML layer and create a new transparent layer.
WICD UAs must make all visible and focusable points in the XHTML layer and the positioned child documents reachable and activatable.
WICD UAs must support transparency for child documents.
Child documents referred to from the XHTML page may be put in front of, or behind, the default XHTML layer. Any transparent areas in the child document and in XHTML root documents must make the layer behind visible.
A detailed description of the stacking level for different layers can be found in Appendix E in the [CSS 2.1] Specification.
Example:
.svg-sprite { position: absolute; left: 0; top: 0; width: 100%; border: 0px; } <body> <div> <object class="svg-sprite" data="sprite.svg" type="image/svg+xml" /> <p>Hello 1</p> <object data="foo.svg" type="image/svg+xml" width="100" height="50" /> <p>Hello 2</p> </div> </body>
User agents must support interactivity in overlay objects.
User agents must support overlay images with embedded links.
The use of absolute positioning often involves assumptions on the screen size. The WICD authoring guides will encourage the use of positioning relative to the screen size.
Scalable child objects allow the creation of truly screen resolution independent content.
For this purpose, scalable child objetcs are referenced, by using width and/or height attributes with values relative to their destination box (which may be the full available rendering area (canvas) of the user agent or maybe a table cell). In case the scalable child object has it's own fixed aspect ratio, it is meaningful to provide only one size attribute value (width -or- height) of the XHTML object element, when referencing it. The child object will then get 'rightsized' proportionally.
[CSS 2.1] contains a detailed description of the required Visual formatting model.
Example:
<object data="icon.svg" type="image/svg+xml" width="100%" />
The following illustration shows, how a square, scalable object, with a fixed aspect ratio, is being scaled into an available area with a requested width of 100%.
The following illustration shows, how two scalable objects with fixed aspect ratio, are being scaled into an available area, both with a requested width of 100%.
The final dimensions of the scalable child object are determined by the following rules:
a. If the object element has width and/or height attributes set (through CSS or directly in XHTML), these values will be used.
b. Else, if the child object has it's own (intrinsic) width and/or height values set, these values will be used.
c. Else, the child object will be rendered into the full available region (destination box), made available by the outer container.
By setting only one of the XHTML object-element size attributes (width or height), the intrinsic size of the child object will be overridden.
When an embedded child object (such as SVG) specifies its horizontal width and omits a height specification, then the actual extent of the image is defined by the objects within it. On placing such an image into a UA, the viewport is usually a window on a 'galley' view of the entire document. In such cases, the object should float to the top of the available galley as no height is specified. This is shown in the illustrations above. Where the aspect ratio rules for the embedded graphic force the width to be less than the UA window width, the image should be centered horizontally (see 'Leftover Margins' below). If the dominant text layout direction is vertical text, the aforementioned rules should be adapted to the different layout flow direction in the case of 'height' being the only sizing specification.
Rendering scalable, but fixed aspect-ratio content into a fixed-sized destination area will often result in non filled margins. In case of SVG child objects: When the viewbox and the resulting viewport do not have the same aspect ratio, and preserveAspectRatio is not set to 'none' (the default being 'xMidyMid') some space is left in between the borders of the viewbox and that of the viewport.
The following illustration shows, how a square, scalable object, with a fixed aspect ratio, is being scaled into an available area (destination box) with a requested width of 100%. However, this request cannot be completely fulfilled, because the height of the resulting viewport would rise above the height of the available destination area. As a result, the child object viewport will gain the width and height of the destination box, but the width and height of the resulting viewbox will be equal to the height of the available area.
Visible leftover margins will appear to the left and right of the child objects viewbox.
Editorial note | |
The statement above still needs to be verified against CSS 2.1. (The square SVG could scale larger and grow outside the scree/destinationbox but when would we ever see leftovers then? |
The following illustration shows, how a square, scalable object, with a fixed aspect ratio, is being scaled into an available area with a requested height of 100%. However, this request cannot be completely fulfilled, because the width of the resulting viewport would rise above the width of the available destination area. As a result, the child object viewport will gain the width and height of the destination box, but the width and height of the resulting viewbox will be equal to the width of the available area.
Visible leftover margins will appear above and below the child objects viewbox. (?)
The child object must render any leftover margins.
Child document transparency composite onto the parent document transparency.
In the absence of a background colour or image on the element that established the viewport (abbr html:object or svg:svg) it's background is transparent. This is in order to maximize the visual quality of content the parent document should be visible through the leftovers (as well as through the child document itself where it is transparent).
A defined background applies to the entire viewport (including the leftovers) so that content that spills outside of the viewbox into the leftovers is still on the correct background.
Any UI event, such as a mouse click, that hits on the leftover areas, goes straight to the document that contains the element that established that viewport.
No additional features (not currently available with SVG and CSS) are required. The current set of features is sufficient to cater to the use cases that we have.(This section is informative)
The rendered results of a WICD document may result in overlap of content originating from different namespaces, for example an SVG graphic on top of some XHTML.
Some user agents may provide monolithic implementations for all namespaces whilst others provide rendering for each namespace in a separate block of executable code such as for example by providing a so-called 'plug-in' interface for each renderer.
In the case where an existing XHTML implementation is to be extended via the addition of a namespace supporting transparency such as SVG it is possible to provide a combined output using alpha-compositing by allowing the SVG implementation access to the output of the XHTML rendering. This would assume the XHTML base layer is opaque and the SVG layer on top would be responsible for retrieving the rendered output pixel data from the XHTML renderer and combine it with the SVG to support SVG layering on top of the XHTML. Such an approach removes the need to add any transparency support to an existing XHTML implementation whilst adding support for transparency support when new namespaces are added.
Such an approach to supporting a foreground transparency layer can be easily implemented given access to the result of rendering output of an existing implementation. In order to support such a feature the XHTML implementation would need to notify a plugin that its rendering is complete.
If animation in the XHTML was supported, then it would also be required to notify the plugin every time a change in the rendered output occured. Such a change would most likely require an off-screen buffer to be used in order to 'double-buffer' so as to avoid flicker.
Given access to the rendered output of an XHTML implementation, foreground scalable child object over XHTML background using transparency on the foreground object must be supported.
Given that transparency information for the output of the background object may be unavailable, foreground scalable child object over background scalable child object requiring transparency on the background and foreground objects may be supported.
User agents must provide a way for the end user to navigate to each focusable object within the root document and its descendents. Which elements qualify as focusable objects must be defined by by this specification or by the profiles that are build upon this specification.
Editorial note | |
These statements are still under discussion. |
Child objects must be by default not focusable.
This means that there needs to be a reason like a specified element or attribute to make some parts of the document focusable. The referencing alone is not a valid reason.
For a child object to become focusable, it must advertises itself as being focusable.
Advertising focusable property depends on the used namespace. For example in XHTML, this can be done using an anchor element. In a similar way in SVG, elements advertise that they are focussable by setting the focussable attribute [SVGMobile12] or by using embedded links.
A user agent may enable some content to become focusable based on use context.
In situations where a user agents provide some additional functionality, it may enable more content to be focusable than what is specified by the author. For example, this may happen in selecting images for saving when there are no other means to do it. Another example of this case is making child objects focusable in order to enable user to scroll its content. However, this is only applicable for extended features. Normally, a user agent should support author's intent and not make other content focusable.
A focusable property can be used to trigger additional functionality in a user agent.
One often used function for focusable content is a link navigation. In many cases, user agent can provide additional functionality for content. For example, an embedded SVG graphic may provide the ability to zoom and pan within its viewport.
A navigation anchor around the object should not trigger additional content dependent features.
Child-specific functionality should be restricted to preserve the authors intent. Should object specific functionality be desired, the object must advertise itself as being focusable or be turned to focusable by a user agent.
An example of focus event triggered animations is the implementation of scalable buttons which render their own visual feedback. Such buttons are allowed to contain animation, but no interaction. They will provide a scalable alternative to the use of images as the source of links that can be traversed.
Focus events are enabled for each child object by setting a specific object element parameter:
<object type="image/svg+xml" data="focus-button.svg"> <param name="animation" value="onfocusevent" /> </object>
With the "animation" parameter set to "onfocusevent",
the child object must render the first frame for time zero (0)
If the root element does not have focus, then the root element must then be paused at time zero(0)
Upon receiving focus, the root element is resumed
Upon losing focus, the root element is paused
The following SVG example applies to declarative animation:
<svg id="SVGRoot"> ... <rect ... > <animate begin="SVGRoot.focusin" ... /> <animate begin="SVGRoot.focusout" ... /> </rect> ... </svg>
The following XHTML code makes use of focus events in order to implement SVG child object rendered focus animations on multiple anchor objects. The UA's default focus outline is disabled using CSS.
<style type="text/css"> a.svglink:focus { outline: none } </style> <object type="image/svg+xml" data="header.svg" /> <!-- defaults to 'play' --> <a href="foo1.html" class="svglink"> <object type="image/svg+xml" data="foo1.svg"> <param name="animation" value="onfocusevent" /> </object> </a> <a href="foo2.html" class="svglink"> <object type="image/svg+xml" data="foo2.svg"> <param name="animation" value="onfocusevent" /> </object> </a>
The 'focusin'-animation is not timewise limited and may loop any number of times.
The 'focusout'-animation should be limited to one second.
The 'focusout'-animation must not loop.
(This section is informative)
In a WICD document, the focusable items, i.e., items which can form part of a focus traversal, are defined by the respective document types being combined. For example, focusable items in an SVG document are defined by the SVG 1.2 focusable attribute [SVGMobile12, interact].
Vendors of handset devices that do not provide a pointing input device are encouraged to implement this model of a two dimensional, flat graphical focus navigation.
Mobile handset devices in general don't provide a pointing device. On these type of devices, the joystick must replace mouse or stylus, cursor keys, tab keys and page up/down keys. The benefits of the flat graphical focus navigation come into effect, when a web document needs to be operated with a joystick device.
In this model a union of all focusable objects within each component of a compound document is presented as a so-called flattened set. All focusable objects in a compound document act equivalently and are used without any dependency based on which component document they were defined in. Therefore, all focusable objects in child documents are used in the same way as focusable objects in a parent document.
Two dimensional, graphical focus navigation is not based on the concept of a linear focus ring. The traversal order is not related to the position of a focusable object in the source document.
The graphical foucs navigation always needs to consider the current state of the rendered document. For example, scripts and animations may change the document's presentation at any time. Therefore, any focus navigation action is calculated at the moment, when the user interacts with the document.
The following examples show specific navigation issues with WICD documents.
Example 1: The images below show two similar WICD documents. The 1st image shows a WICD document with a parent document, that does not have any focusable objects. The first focusable object is located inside the SVG child document. The 2nd image shows focusable objects in both parent and child. The positioning of the focusable objects requires focus traversal to go through the child document.
Example 2: The image below shows again two WICD documents. The focusable objects in both documents are identical. But the rendered location of the child document differs in both examples. This results in highly different focus traversal. The arrows in both images show just one of many ways a user can navigate through these WICD documents.
Example 3: The image below shows one WICD document with two child documents. The issue here is, that Link-4 of SVG-1 is positioned just above Link-1 of SVG-2. Ideally, the agent will allow the user to navigate directly from one child object to the next.
The main idea of the flat graphical focus navigation is the concept of an invisible 'current focus point' inside the page and inside the currently focused object. This 'current focus point' can be visualized to indicate the position inside the currently focused object (using a UI component such as a pointer or some other type of icon). It can also be presented by highlighting visual objects around the current focus point. The current focus point is used as a starting location for calculating a distance function towards the other focusable objects when navigating.
When user navigates (e.g. presses navigation input controls), the current focus point is moved and a different object receives focus. The focus point movement depends on current movement direction and available focusable content in that direction.
The concept of the invisible current focus point enables a very natural navigation behavior between focusable objects of different size. The arrows in the upper right in the following image show how focus traversal always moves back from the 'Attitude' object to the originating object.
The focus navigation algorithm consists of three phases: finding candidates for focus movements, calculating and adjusting movement based on a distance function, and moving the current focus point with possibly changing focusable object.
Phase 1. At first, focusable objects are searched from the direction of navigation. The search includes content that is currently visible in that direction and content that becomes visible if viewport changes.
Phase 2. At second, the current focus point is moved to the direction of navigation. This movement may keep the point within the current focusable object or it may move it out of the current focusable object. Then, the current focus point movement is adjusted by distance function. The distance function takes location of current focus point, and locations and shapes of available focusable content in the area, and calculates most suitable location for the point movement. The distance function enables selection of near focusable objects in cases where more unintuitive selection would otherwise be made.
Phase 3. Finally, there is a check that when focus point moves to another object, focused object is changed accordingly.
The distance function takes into account the following metrics:
The distance function (df) is:
df = dotDist + dx + dy + 2 * (xdisplacement + ydisplacement) - sqrt(Overlap)
Desktop agents, Tablet's and PDA's usually allow navigation of a Web document using a pointing device (mouse or stylus). On desktop agents, the tab-key can be used additionally, to navigate over focusable objects. Here, all focusable objects of a single Web document are chained in one linear path, based on the order of accurence in the source document. This creates the so called focus navigation ring, where advancing over the last focusable element brings the focus back to the first focusable element.
XHTML and SVG have methods for linear one dimensional focus traversal. XHTML provides a default traversal order, and allows it to be changed with the use of tabindex attribute within one XHTML document. SVG's provides the focusNext and focusPrev elements which may be used to provide similar functionality within an SVG document. However, neither of these methods can be used when XHTML and SVG are combined. Therefore in the case of a WICD document by reference, combining XHTML with SVG, some alternate form of navigation is required.
When navigating an XHTML document it is possible to assign so-called access keys to links in order to provide a 'hot-key' navigation ability. It is unclear how such access keys work in the case of a referenced XHTML document containing access keys. Similarly if multiple parts of a WICD document contained access keys, should the user agent provide access key navigation into the child document or restrict it to the parent document only.
Standalone components or renderers, such as SVG engines, do not always provide a default system font.
In the context of WICD Core, however, UA's must at least provide one default system font (including a missing glyph) to all components, such as browsers, SVG engines and other renderers.
If there isn't info in the font to display a particular character then the missing glyph is used.
Whatever I18N support a WICD implementation provides should not be worse than that of the platform on which it is running.
WICD Core specification cannot mandate any particular font, nor a specific font technology. But it mandates the availability of at least one default font available to all renderers, so that content providers can print text in any component (or render), as simple, as in XHTML.
The default system font(s) may be bitmap or vector based. Ideally, the same default system font(s) are made available for all components.
The following SVG sample markup must generate visible text:
<svg ...> <text x="20" y="20" font-size="medium" fill="#000">Fahrvergnuegen*</text> </svg>
In both XHTML (using CSS) and SVG, font selection is done by the font-family property, which takes a list of font family names. (This is combined with other properties such as font-weight to select a specific font face). The family names must match exactly - Times will not match Tymes or 'New Times'.
In desktop usage, authors frequently choose fonts that they know are installed by default on particular platforms.
On mobile:
Conforming WICD Core 1.0 content should specify serif, sans-serif, or monospaced (three of the 'generic font families') as the last item in the list of font family names.
In SVG, named fonts, or subsets of fonts, can be supplied along with the content. This ensures that the desired look and feel is preserved regardless of the fonts available on a particular platform.
Content (XHTML, SVG, CSS, script, etc) may be compressed with gzip [RFC 1952] or deflate [RFC 1951]. Conforming WICD viewers must correctly support gzip-encoded and deflate-encoded content.
If they support HTTP/1.1, they must support these encodings according to the HTTP/1.1 specification [RFC2616]; in particular, the client must specify with an "Accept-Encoding:" request header [HTTP-ACCEPT-ENCODING] with those encodings that it accepts, including at minimum gzip and deflate, and then decompress any gzip-encoded and deflate-encoded data streams.
If the content is compressed with gzip or deflate, conforming WICD servers must indicate this with the "Content-Encoding: gzip" or "Content-Encoding: deflate" headers, as appropriate.
Multipart/related packaging must be supported by all agents implementing any WICD Profile. These agents will advertise "multipart/related" capability with their HTTP request accept headers.
MIME implementations must in general treat unrecognized subtypes of "multipart" as being equivalent to Multipart/mixed. Agents supporting the WICD Profile are therefor expected to support both, related and mixed.
Implementations preceding this specification may support only Multipart/mixed. These agents advertise "multipart/mixed" with their HTTP request accept headers.
User Agents must allow synchronization of referenced media via events. Events that correspond to the following actions must be available in the containing document:
Similarly, the User Agent must allow the containing document to control the playback of referenced media using at least the following actions:
Note: This technique is not optimal. The more appropriate way to achieve temporal synchronization is using the SMIL synchronization attributes. However, these are not available in this profile. Another technique is to reference all the media elements from a single SVG file.
The behavior of playing animations while loading a document is dependent on the capabilities of the root namespace of the document.
For example, HTML starts processing the document immediately using a parse and process in parallel model. While XML can use a parse first then process model where the entire DOM is built and then handed to the application, or can also the parse and process in parallel model.
When loading more than one animation during document load synchronization of animations may be desirable. However, HTML and XHMTL have no inherent capability to provide this synchronization HTML and XHTML eventing cannot guarantee synchronization of animations while the document is loading.
SVG, SVGT, and SMIL have synchronization capabilities that can be used when these namespaces are the root or enclosing schema of a document.
Editorial note | |
The text above may change. Most likely scripting will have to be used in order to display/animate one objects, while loading a replacement object. |
In WICD Core, HTML's event attributes (e.g., onclick and onload) map to equivalent DOM3 Events features. Each event attribute represents the creation and registration of an EventListener. The corresponding element represents the EventTarget. For these event listeners, useCapture is set to false. If the attribute representing the event listener is changed, this corresponds to the removal of the previously registered EventListener and the registration of a new one. The relative order of event listeners due to HTML event attributes versus other event listeners is not defined.
The following defines the mapping from HTML event attributes to corresponding DOM3 events:
(This section is informative)
For WICD documents where in one language the legacy focus
event in the http://www.w3.org/2001/xml-events
is used and in
the other the DOMFocusIn
in the same namespace authors have to
take note of the fact that the directly after the focus
event
is dispatched the DOMFocusIn
event is dispatched but not the
other way around. Equivalent for blur
and DOMFocusOut
.
Authors are thus advised to use the DOMFocusIn
and DOMFocusOut
events.
Authors are encouraged to attach event listeners either via the DOM addEventListenerNS method or (for SVG content) XML Events.
(This section is informative)
The WICD 1.0 profile mandates support of SVG child objects being referenced from XHTML, but it does not mandate support of XHTML child objects being referenced from SVG. WICD 1.0 also doesn't support SVG as the root document. Specific WICD 1.0 capabilities, which result from the Compound Document nature of this profile, can only be used reliably by authors, with the knowledge that a user agent provides support for it. For instance, it is often not possible to provide a fallback for animated or interactive SVG content. It is also not possible to provide a fallback, when making use of event driven focus navigation and turning off the default focus outline. It is therefor essential for CDF agents, compliant with the WICD profile, to advertise the WICD profile name. See also: CDF: User Agent Identification.
Editorial note | |
The following is still under discussion. |
The unique user agent profile name for this profile is "wicd".
A user agent, advertising the "wicd" profile name, indicates full conformance with this WICD specification.
Conforming user agents must implement [Media Queries].
Editorial note | |
The following is still under discussion. |
Conforming user agents must must implement the "wicd" Media Feature.
The following example shows the use of Media Queries to allow authors to provide four different stylesheets, for different user agent presentation.
<link rel="stylesheet" media="only screen and (wicd)" href="wicd-screen.css"/> <link rel="stylesheet" media="screen and (wicd:0)" href="screen.css"/> <link rel="stylesheet" media="only handheld and (wicd)" href="wicd-handheld.css"/> <link rel="stylesheet" media="handheld and (wicd:0)" href="handheld.css"/>
Agents, not conforming to [Media Queries] will ignore all media id's starting with "only ...".
Agents, conforming to the WICD profile, will not consider media id's specified using "(wicd:0)".
Agents, not conforming to the WICD profile, will not make use of the media id's specified using "(wicd)".
European Computer Manufacturers Association, "ECMAScript Language Specification 3rd Edition", December 1999, http://www.ecma-international.org/publications/standards/Ecma-262.htm
Also available as ISO/IEC 16262: 199
IETF, "Scripting Media Types", 06 June 2005 http://www.ietf.org/internet-drafts/draft-hoehrmann-script-types-03.txt
http://www.w3.org/TR/DOM-Level-2-HTML/
latest version: http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/
http://www.w3.org/TR/DOM-Level-3-Core/
latest version: http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/
OMG IDL Syntax and Semantics" defined in The Common Object Request Broker: Architecture and Specification, version 2, Object Management Group. The latest version of CORBA version 2.0 is available at http://www.omg.org/technology/documents/formal/corba_2.htm
This is a place holder for links to MWI authoring guidelines.
The editors would like to thank the contributors: