[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [wsbpel] Issue 157 - XSLT and copy/replace semantics
Hi all, Below is a proposal which pulls together several ideas on using XSLT to perform <copy> - thanks to Alex, Ron and Ugo for the input they provided into this. > On reviewing this issue I would like to propose that we adopt the > use of XSLT functionality to perform <copy>. This would involve > using said XSLT functionality in <from>. Note that this is > different from my understanding of Assaf and Yuzo's original > proposal/thoughts which would use this functionality in <to>. > > By using XSLT functionality in the <copy> from-spec, we accomplish > the economy of defining the copy/replace semantics which is > generating the greatest churn with respect to fully defining the > current copy concept. This XSLT functionality provides a rich set > of copy/replace semantics which in this context can be used to > achieve the same results as the current copy concept while > addressing the lingering questions in the current concept and > providing semantic simplification. At the same time, current copy > functionality is maintained. > > The idea is that we essentially replace the original source tree > with the new tree created by the XSLT transform. This covers both > copy/replace as follows: > 1) The result is semantically a new tree, where the original source > tree distinctly existed. > 2) The result tree is semantically a modification of the original > source tree, where the result tree replaces the original. > > This achieves the same as the current copy concept, but delegating > the responsibility to XSLT functionality. To use this, we would > have to assign a stylesheet to the from-spec in order to associate > it with the copy/replace. > > To illustrate, let's take Yuzo and Ugo's example: > > var1: > <invoice test="false"> > <invoiceNumber>9876</invoiceNumber> > <orderNumber>0000</orderNumber> > <amount/> > <billingAddress><street/></billingAddress> > </invoice> > > Lets assume we wish to modify this variable as follows: > > <invoice test="false"> > <invoiceNumber>9876</invoiceNumber> > <orderNumber>1234</orderNumber> > <amount/> > <billingAddress><street>1 > Somewhere</street><state>SW</state></billingAddress> > </invoice> > > We would use XSLT as follows: > > Stylesheet: > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="orderNumber"> > <xsl:element name="orderNumber"> > <xsl:value-of select="1234"/> > </xsl:element> > </xsl:template> > > <xsl:template match="billingAddress"> > <xsl:element name="billingAddress"> > <xsl:copy-of select= ... node corresponding to > "<billingAddress><street>1 > Somewhere</street><state>SW</state></billingAddress>" ... /> > </xsl:element> > </xsl:template> > > <xsl:template match="@*|node()"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > > </xsl:template> > > </xsl:stylesheet> > > Applying the XSLT transform to the tree contained in var1 (i.e. > tree1) to produce tree2, we would then replace the contents of var1 > with tree2 This achieves XSLT-based copy - var1's contents are the > same as if we had used the copy operations based on the current > concept. This achieves the same copy/replace semantics of the > current concept without violating XSLT semantics of XSLT > transformations (i.e. no modification of tree1). This is how the > source tree is "modified" while generating a distinct result tree. Please provide any feedback you may have on this. Cheers, -Charlton. Charlton Barreto P 1.408.536.4496 cbarreto@adobe.com www.adobe.com
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]