
<specification xmlns='http://berjon.com/ns/re-spec/'
               xmlns:rs='http://berjon.com/ns/re-spec/'
               version='1.0'
               xml:lang='en'>
  <metadata>
    <title>Remote Events for XML (REX) Requirements</title>
    <styling type='W3C' status='N'/>
    <date year='2006' month='02' day='02'/>
    <editors>
      <person>
        <name>Robin Berjon</name>
        <email>robin.berjon@expway.fr</email>
        <url>http://berjon.com/</url>
        <company>Expway</company>
        <company-url>http://expway.com/</company-url>
      </person>
    </editors>
    <versions>
      <current>http://www.w3.org/TR/2006/NOTE-rex-reqs-20060202</current>
      <latest>http://www.w3.org/TR/rex-reqs</latest>
      <!-- <previous>http://www.w3.org/TR/2006/NOTE-rex-reqs-200YMMDD</previous> -->
    </versions>
  </metadata>

  <section xml:id='abstract' type='w3c-abstract'>
    <title>Abstract</title>
    <p>
      This document lists the requirements for an <acronym title='Extensible Markup Language'>XML</acronym>
      grammar intended for representing events as they are defined in
      <acronym title='Document Object Model'>DOM</acronym> 3 Events, 
      primarily but not exclusively for purposes of transmission or synchronisation
      of remote documents. Such a vocabulary would enable one endpoint to interact 
      remotely with another endpoint holding a DOM representation by sending it DOM 
      Events as if they had occurred directly at the same location.
    </p>
  </section>

  <section xml:id='sotd' type='w3c-sotd'>
    <title>Status of this Document</title>

    <p>
      <em>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 
      <a href='http://www.w3.org/TR/'><acronym title='World Wide Web Consortium'>W3C</acronym>
      technical reports index</a> at http://www.w3.org/TR/.</em>
    </p>
    <p>
      This document is produced by a joint task force of the 
      <a href='http://www.w3.org/Graphics/SVG/'><acronym title='Scalable Vector Graphics'>SVG</acronym> 
      <acronym title='Working Group'>WG</acronym></a> (part of the 
      <a href='http://www.w3.org/Graphics/Activity'>Graphics Activity</a>) and the
      <a href='http://www.w3.org/2006/webapi'>Web API WG</a> (part of the
      <a href='http://www.w3.org/2006/rwc/Activity'>Rich Web Clients Activity</a>).
      Please send comments to <a href='mailto:public-webapi@w3.org'>public-webapi@w3.org</a>
      (<a href='http://lists.w3.org/Archives/Public/public-webapi/'>Archive</a>),
      the public email list for issues related to Web APIs.
    </p>
    <p>
      The patent policy for this document is the 
      <a href='http://www.w3.org/Consortium/Patent-Policy-20040205/'>5 February 2004 W3C Patent Policy</a>. 
      Patent disclosures relevant to this specification may be found on the 
      <a href='http://www.w3.org/Graphics/SVG/Disclosures' rel='disclosure'>SVG Working Group's patent disclosure page</a>
      and <a href='http://www.w3.org/2004/01/pp-impl/38482/status' rel='disclosure'>Web API Working Group's patent
      disclosure page</a>. 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 <a href='http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure'>section 6
      of the W3C Patent Policy</a>.
    </p>
    <p>
      This document does not necessarily represent the full and complete consensus of the 
      REX Task Force, the Web API Working Group, or the SVG Working Group at the time of 
      its publication, some issues being still considered to some degree contentious.
      It is made available for public review in the hope that access from a wider audience
      early in the process will help increase the quality and timeliness of the 
      specification.
    </p>
    <p>
      Publication as a Working Group Note 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.
    </p>
  </section>

  <section xml:id='contents' type='toc'>
    <title>Table of Contents</title>
    <?respec-toc?>
  </section>

  <section xml:id='functional-requirements'>
    <title>Functional Requirements</title>
    <p>
      These requirements cover what pertains directly to the functionality
      desired in REX.
    </p>
    <dl>
      <dt>MUST permit a document tree to be modified, locally or remotely</dt>
      <dd>
        It must be possible, through use of REX, to cause a remote document tree
        to be updated as if by manipulation through the DOM 3 Core API. This does
        not entail that all of the DOM 3 Core API needs be exposed, simply that
        it must be possible to perform modifications corresponding to the
        following DOM 3 Events events: DOMNodeInserted, DOMNodeRemoved, 
        DOMAttrModified, and DOMCharacterDataModified.
      </dd>
      <dt>MUST rely on an event-based processing model</dt>
      <dd>
        The chosen method of providing orthogonality across W3C specifications
        covering interaction languages is to communicate both across and
        within language boundaries using events. This ensures the integrity of
        the processing model, and that minimal information be available
        between the various parts that may be integrated within a user-agent.
        This is of specific importance where REX is concerned, since it cannot
        be useful without a tree to target that is presumably in another
        language. The baseline event specification with which to conform
        is DOM 3 Events.
      </dd>
      <dt>MUST support multiple Document Object Model variants</dt>
      <dd>
        Multiple technologies on the Web support multiple Document Object
        Models, some of which are standard or being standardised (e.g. DOM
        3 Core, DOM 2 HTML, SVG DOM 1.1, SVG Tiny 1.2 uDOM) while others are
        found "in the wild" and may be de facto variants specific to a domain
        or to an implementation. In as far as technically reasonable, REX must
        support targeting multiple such object models.
      </dd>
      <dt>MUST specify a minimal timing model</dt>
      <dd>
        In order to properly support the ability to be transmitted over
        streaming protocols, REX must support timing facilities (at least
        to differentiate between delivery time and activation time). However 
        these facilities must be limited to the strict set that is required
        to achieve the ability to be streamed and must not overlap with
        existing protocols.
      </dd>
      <dt>MUST support addressing nodes using XPath</dt>
      <dd>
        The proven way of addressing nodes in the XML stack is to rely
        on XPath. The support for XPath required in REX may be a subset
        of XPath 1.0.
      </dd>
    </dl>
  </section>

  <section xml:id='format-requirements'>
    <title>Format Requirements</title>
    <p>
      These requirements cover how the functionality available in REX
      is to be captured by a format, and what constraints this format
      is to follow.
    </p>
    <dl>
      <dt>MUST be specified in a declarative manner</dt>
      <dd>
        REX must support functionality that is currently possible using
        scripting, but without introducing the level of complexity and
        functionality that a scripting language permits. A simpler, more limited
        declarative approach is easier to handle on constrained platforms
        and high-performance environments.
      </dd>
      <dt>MUST be expressed in an XML syntax </dt>
      <dd>
        In order to better integrate into the XML and Web stacks, and
        as a straightforward manner of specifying a declarative language
        compared to inventing a completely new syntax, REX needs to be 
        expressed in XML.
      </dd>
      <dt>MUST be extensible</dt>
      <dd>
        It must be possible to create new versions of REX as well as
        proprietary extensions to it without interfering with the way in
        which an implementation of the current version that is unaware of
        extensions processes the parts of the content that are not
        extensions. Such extensions cover both the markup in which REX
        is expressed and the events that it captures.
      </dd>
      <dt>MUST support be forwards and backwards compatibility</dt>
      <dd>
        REX must be specified in such a way that new vocabulary items
        (e.g. elements, attributes) and new events can be easily added
        in version n+1 content without causing implementations of version 
        n to abort processing, and so that implementations of versions 
        n+1 can still process the entirety of version n content.
      </dd>
      <dt>MUST precisely define error handling</dt>
      <dd>
        Error handling must be defined in such a way that user-agents 
        will interpret non-conformant content in an interoperable 
        manner.
      </dd>
    </dl>
  </section>

  <section xml:id='ecosystem-requirements'>
    <title>Ecosystem Requirements</title>
    <p>
      These requirements cover the way in which REX needs to integrate
      with the existing ecosystem of surrounding specifications.
    </p>
    <dl>
      <dt>MUST integrate into the QA framework </dt>
      <dd>
        The REX specification must take into account all relevant
        QA requirements, in such a manner that these requirements
        can be easily verified.
      </dd>
      <dt>MUST be applicable to any XML language</dt>
      <dd>
        REX needs to be specified so that it is not a silo technology 
        that only operates on one XML language, or a subset of possible
        XML languages, but rather a general technology that can be
        reused across the board.
      </dd>
      <dt>SHOULD be implementable on top of SVG Tiny 1.2 uDOM</dt>
      <dd>
        The SVG Tiny 1.2 uDOM provides a convenient measure of a
        DOM subset that corresponds to the requirements of constrained
        devices. Ensuring that this specification can be implemented
        on the uDOM is a practical way of assessing whether it can
        be supported on mobile devices.
      </dd>
      <dt>MUST integrate into the XML ecosystem and reuse XML technology</dt>
      <dd>
        The XML stack is now so vast that checking a new specification
        for applicability to others is at best impractical. This requirement
        is to support the 
        <a href='http://www.w3.org/TR/xbc-properties/#integratable-into-xml-stack'>Integratable into XML Stack</a>
        property as defined in the <a href='http://www.w3.org/TR/xbc-properties/'>XBC Properties</a>
        document: <cite>XML as a data format is surrounded by a large body of 
        specifications that provide additional features considered to form the 
        XML Stack. A format is said to integrate well into the XML Stack if it 
        can easily find its place into the large body of XML-related technologies, 
        with minimal effort in defining new or modified specifications.</cite>
      </dd>
      <dt>MUST be transport independent</dt>
      <dd>
        In order to be reusable across a large set of varied networks, REX must
        not rely on excessive requirements from the transport layer that it is
        being delivered on top of. This requirement is to support the
        <a href='http://www.w3.org/TR/xbc-properties/#transport-independence'>Transport Independence</a>
        property as defined in the <a href='http://www.w3.org/TR/xbc-properties/'>XBC Properties</a>
        document: <cite>A format is transport independent if the only assumptions 
        of transport service are error-free and ordered delivery of messages 
        without any arbitrary restrictions on the message length.</cite>
      </dd>
      <dt>MUST integrate in the Architecture of the WWW</dt>
      <dd>
        REX needs to support the requirements set forth in the
        <a href='http://www.w3.org/TR/webarch/'>Architecture of the World Wide 
        Web: Volume One</a>.
      </dd>
    </dl>
  </section>

</specification>

