- From: Didier PH Martin <martind@netfolder.com>
- Date: Tue, 08 Jun 2004 13:06:22 -0400
Hi Dean, > dhtml behaviors and xbl aren't a million miles apart. basically they > define extensions to existing elements. they also contain a bunch of > code to implement these extensions. the only thing that is different is > the markup. i've successfully ported microsoft dhtml behaviors to > mozilla without conversion: > http://dean.edwards.name/moz-behaviors/ Thanks a lot Dean, I will take a look at the behavior implementation I didn't know somebody did it. > it is possible to do the reverse. it would be possible to define any > components required by web forms in xbl. then transform them (possibly > xslt) to dhtml behaviors. it would require a certain amount of > discipline on behalf of the developer but the benefits are huge. one > code set to maintain. another advantage is that the *actual* source code > exists in xbl (an open source technology). this is probably easier said > than done but it is definitely very doable. > I started to write a very basic xform processor in XSLT and ended up instead to encode the binding in the end HTML element (That I consider for rich internet apps as a visual object). Here is the XSLT construct I am using to include the binding to the XML element. As you know, both in Moz and IE, there are three simultaneous DOMS: XSLT, XML and HTML. The binding attribute help me find the XML element mapped into the visual object. For instance, I am using Xlink extended elements to create collection of links. Then in the mapped HTML element (i.e. a DIV) I include a bind attribute to map it to the model incarnated by the XML element. The bind attribute includes the Xpath location of the XML element. For example, the following DIV is linked to its model counterpart. <div bind="pdml/object[3]"> So when my stylesheet is creating the DIV element, I include an extra attribute named bind into the DIV element. Do a call-template to create the XPATH value to be associated to the bind attribute. Bottom line, I discovered that this mechanism is much more extensible and adaptable than Xform and can be adapted to any XML domain language. Here is the template I use to create the Xpath bind. <xsl:template name="generateXPath"> <xsl:for-each select="ancestor::*">/<xsl:value-of select="name()"/> <xsl:variable name="number"><xsl:number/></xsl:variable> <xsl:if test="current() != /">[<xsl:value-of select="$number - 1"/>]</xsl:if> </xsl:for-each> <xsl:text>/</xsl:text> <xsl:variable name="number"><xsl:number/></xsl:variable> <xsl:value-of select="name()"/>[<xsl:value-of select="$number - 1"/><xsl:text>]</xsl:text> </xsl:template> Cheers Didier PH Martin
Received on Tuesday, 8 June 2004 10:06:22 UTC