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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--
--
+------//-------------------+
/ http://www.bali.ac /
/ http://niclas.hedhman.org /
+------//-------------------+