Subject: Re: [xsl] transforming xml to tables From: Niclas Hedhman <niclas@xxxxxxxxxxx> Date: Wed, 16 Jun 2004 15:15:01 +0800 |
On Tuesday 15 June 2004 00:41, Pedro Castro wrote: > Hi, all. I'm a beginner in this xsl world and I'm trying to learn. > I could do the work I have to do in a different way but I'm trying to see > the advantages of xsl (which are convincing me). But I was stopped in the > process because of a problem which I (try to) describe next: You need two XSL passes, generating one file for each pass. The first one is very simple, as you take the 'same suff' strip out some attributes and check a string containing the _ID at the end... <xsl:template match="aaa" > <table> <xsl:attribute name="name"> <xsl:value-of select="@name" /> </xsl:attribute> <xsl:apply-templates /> </table> </xsl:template> <xsl:template match="bbb" > <column> <xsl:attribute name="name"> <xsl:value-of select="@name" /> </xsl:attribute> <xsl:if test="contains( @name, '_ID' )" > <xsl:attribute name="primaryKey">true</xsl:attribute> </xsl:if> </column> </xsl:template> The second phase is handled roughly the manner... <xsl:template match="aaa/bbb[ @type = 't2'] " > <table> <xsl:attribute name="name"> <xsl:value-of select="../@name" /> </xsl:attribute> <!-- You need to extract the pieces you want to generate the required result here. I'm barely awake to follow your intentions, and this section will get a little bit 'tricky', so some trial and error will help, but basically no template matching/applying should be used. --> </table> </xsl:template> Hope that help as a start... Cheers Niclas > I have the following xml: > > <aaa name="t1"> > <bbb name="t1_ID" type="n"/> > <bbb name="c1" type="t2"/> > <bbb name="c2"/> > <bbb name="c3" type="n"/> > </aaa> > > And I want to transform this (part) into a script for create a relational > table structure (for later processing): > > (A table has always an id that is conventioned to be the table name > followed by "_ID" word) > > <table name="t1"> > <column name="t1_ID" primaryKey="true"/> > <column name="c1"/> > <column name="c2"/> > <column name="c3"/> > </table> > > <table name="t1_t2_nxn"> > <column name="t1_ID" primaryKey="true"/> > <column name="t2_ID" primaryKey="true"/> > <foreign-key foreignTable="t1"> > <reference local="t1_ID" foreign="t1_ID"/> > </foreign-key> > <foreign-key foreignTable="t2"> > <reference local="t2_ID" foreign="t2_ID"/> > </foreign-key> > </table> > > > The rules for transformation are simple: if an inner element for the <aaa> > element has a type other than none or "n" (like the type="t2" case) than i > need to create the second table which is an n x n table between t1 and (an > already existent) t2 table. > > Is this possible to do in xsl? > I'm sorry for the long question, and I hope that anybody can understand and > help :) > > Thanks in advance!! > > > Pedro Castro. > Portugal. > > > > --+------------------------------------------------------------------ > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/ > or e-mail: <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx> > --+-- -- +------//-------------------+ / http://www.bali.ac / / http://niclas.hedhman.org / +------//-------------------+
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] including string of value, ma.siebeneicher | Thread | xml nodes with spaces (at start, en, Andrew Madigan |
Re: Saxon + xalan - error, Angeshwar Deepak | Date | Re: Saxon + xalan - error, Angeshwar Deepak |
Month |