[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Skeleton Merge
I think instead of adopting a merging approach, you could hardcode element creation in the XSLT (shown as below).. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" /> <!-- identity template --> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*" /> </xsl:copy> </xsl:template> <xsl:template match="branches"> <email/> <website/> <branches> <xsl:apply-templates /> </branches> </xsl:template> <xsl:template match="branch/name"> <name><xsl:apply-templates /></name> <address/> </xsl:template> </xsl:stylesheet> Regards, Mukul On 8/23/05, Saran Toochinda <sarantoo@xxxxxxxxx> wrote: > I'm using XForms to collect XML data (company data, 1 file per > company). A skeleton of blank XML file which is based on a schema is > use to present the data input forms. Our schema is change from time to > time with additional data structure as well as corresponding XForms > control. There is no problem with the new file because it always based > on a new skeleton file. The problem arise on the existing files > because XForms bound it's control to existance of data element in > existing document. The newly added XForms controls don't get display > because there is no such data exist before. > > My question is how can I merge newly added, blank element to an > existing file using XSLT to reflect the new data structure. For > example: merging existing.xml with skeleton.xml and looking for > somethink like the output below: > > File existing.xml: > > <company id="123"> > <name>ABC</name> > <address>NJ</address> > <phone>123456</phone> > <fax>56789</fax> > <branches> > <branch> > <name>Branch A</name> > </branch> > <branch> > <name>Branch B</name> > </branch> > </branch> > </company> > > File skeleton.xml with newly added element: > > <company id=""> > <name/> > <address/> > <phone/> > <fax/> > <email/> <!-- added --> > <website/> <!-- added --> > <branches> > <branch> > <name/> > <address/> <!-- added --> > </branch> > </branch> > </company> > > This is a needed output: > > <company id="123"> > <name>ABC</name> > <address>NJ</address> > <phone>123456</phone> > <fax>56789</fax> > <email/> <!-- added --> > <fax/> <!-- added --> > <branches> > <branch> > <name>Branch A</name> > <address/> <!-- added --> > </branch> > <branch> > <name>Branch B</name> > <address/> <!-- added --> > </branch> > </branch> > </company> > > > The actual schema is very complex and there are many schemas so > looking for a universal transform solution rather than hard coded per > element/file. > > Many thanks in advance!
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|