[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: xslt simple question
Garland foster wrote: > Hi, sorry but I can't figure out the xslt group and I know I can get a > quick question here. > > It's something common so I want to know which is the best well-known > approach. > > Let's say I have: > > <exported-data> > <department name="accounting"> > <member> > <name>foo</name> > </member> > <member> > <name>Peter</name> > </member> > </department> > <department name="other"> > .... > </exported-data> > > And I want to create an xslt stylesheet to transform the XML into SQL > statements for the tables: > department(id,name) > members(id,name,deptid) > > I can assume the tables are empty > > Which is the best approach? obviously the problem is dealing with ids, > you have to mantain the id for each member of the > department and "increment" ids as you create new departments/ members. > > Thanks! > Garland You can use generate-id() like 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="text"/> <xsl:template match="/"> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="department"> <xsl:variable name="id" select="generate-id(.)"/> <xsl:text>insert into department values ('</xsl:text> <xsl:value-of select="$id"/> <xsl:text>', '</xsl:text> <xsl:value-of select="@name"/> <xsl:text>') </xsl:text> <xsl:apply-templates select="*"> <xsl:with-param name="depid" select="$id"/> </xsl:apply-templates> </xsl:template> <xsl:template match="member"> <xsl:param name="depid"></xsl:param> <xsl:variable name="id" select="generate-id(.)"/> <xsl:text>insert into person values ('</xsl:text> <xsl:value-of select="$id"/> <xsl:text>', '</xsl:text> <xsl:value-of select="name"/> <xsl:text>', '</xsl:text> <xsl:value-of select="$depid"/> <xsl:text>') </xsl:text> </xsl:template> </xsl:stylesheet> Regards, George ------------------------------------------------------------- George Cristian Bina mailto:george@s... COO - sync.ro Phone +40-51-461480(1) Fax +40-51-461482 Mobile +40-93-224067 SyncRO Soft srl, Bd N. Titulescu 170, Craiova, 1100 - Romania http://www.sync.ro <oXygen/> XML Editor - http://oxygen.sync.ro/
|
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
|