Proposal to extend (s)XBL definition elements

Dear Scalable Vector Graphics Working Group,

After reading the working draft, my first impression is that the 
technologies in sXBL are very much similar to what has been already 
standardized by ISO within the VRML'97 standard [1], and later reused in 
MPEG-4 XMT (BIFS-XML) [2]. These technologies are gathered in the VRML 
notion of PROTO. However, VRML PROTOs have some nice features that I 
would like to propose for consideration into sXBL.

But before going into the details of the proposal, I encourage 
interested readers to go and look at the many tutorials on VRML PROTO 
available on the web since they deal with problems that might pop-up in 
XBL (scopes of id, cascading of events, scopes of scripting ...).

My analysis of sXBL is that the VRML equivalent of the XBL 
'definition'/'template' elements seems to be the construct called 
'PROTO' (see example below). The equivalent of the 'ref' attribute in 
'definition' would be the construct called 'EXTERNPROTO'. This latter 
allows to create external libraries of widgets. Then, the equivalent of 
the 'content' is comprised in the notion of PROTO interface. Coming to 
this latter interface, I would like to propose to extend the 
definition/template elements to match what is currently possible in VRML 
and not in sXBL.

The following - simplified - XMT example demonstrates the new feature.
Here is the PROTO declaration equivalent to the XBL definition. The 
'ProtoDeclare' element declares the binding in terms of VRML construct 
associated with the name of the PROTO:

<ProtoDeclare name="MyHelloWorld">
<field name="myColor" type="Color" vrml97Hint="exposedField" 
colorValue="1 1 1"/>
<Shape>
<appearance><Appearance><material><Material2D>
<IS><connect nodeField="emissiveColor" protoField="Color"/></IS>
</Material2D>
</material>
</Appearance>
</appearance>
<geometry>
<Text string="Hello World from a VRML Proto"/>
</geometry>
</Shape>
</ProtoDeclare>

The instantiation of a PROTO is made as if the MyHelloWorld element was 
an element built-in the standard as follows:

<OrderedGroup>
<children>
<ProtoInstance name="MyHelloWorld">
<fieldValue name="myColor" colorValue="1 0 0"/>
</ProtoInstance>
<ProtoInstance name="MyHelloWorld">
<fieldValue name="myColor" colorValue="0 1 0"/>
</ProtoInstance>
<ProtoInstance name="MyHelloWorld">
<fieldValue name="myColor" colorValue="0 0 1"/>
</ProtoInstance>
</children>
</OrderedGroup>

I agree the XML syntax could be nicer. This is just to give you an idea 
of what is possible in VRML. As you can see, during declaration of the 
PROTO, you declare the interface of this PROTO which is used when 
instantiating the PROTO. The 'ProtoInstance' Element is replaced by the 
content of the 'ProtoDeclare' element (shadow content). But the values 
of the fields in the shadow content are replaced by the values of the 
corresponding fields of the PROTO interface, if given, or by default 
values, defined in the interface.

So what I am proposing is an extension of the behavior of the 'content' 
element. This extension would permit the customization of the binding 
(i.e. of some attributes in the shadow tree) depending on some 
attributes in the bound element. The result in sXBL syntax could be 
something like:

<svg:svg xmlns:svg="http://www.w3.org/2000/svg" version="1.2"
             xmlns:xbl="http://www.w3.org/2004/xbl">
   <svg:defs>
    <xbl:xbl>
     <xbl:definition element="xblText" attributes="textColor">
      <xbl:template>
       <svg:text fill="@textColor"><xbl:content/></svg:text>
      </xbl:template>
     </xbl:definition>
    </xbl:xbl>
   </svg:defs>

   <xblText textColor="red"> Red text. </xblText>
   <xblText textColor="green"> Green text. </xblText>
   <xblText textColor="blue"> Blue text. </xblText>

</svg:svg>

Questions and comments are welcome.
Regards,

Cyril Concolato


[1]http://web3d.org/x3d/specifications/vrml/ISO_IEC_14772-All/index.html
[2]The MPEG-4 Book, Fernando Pereira, Touradj Ebrahimi

-- 
Cyril Concolato
Dept. Comelec
Ecole Nationale Supérieure des Télécommunications, Paris
46, rue Barrault 75013 Paris
Tel: +33145817991    Fax: +33145804036

Received on Tuesday, 21 September 2004 13:20:43 UTC