[Home] [By Thread] [By Date] [Recent Entries]
Hi,
I have a oldxml.xml file need to be converted to the newxml.xml file. I can only convert it to 2 levels and dont know how to make it recursive. I don't know how deepth it is. My convert file is like this: conver.xsl
<ResultSet>
<xsl:apply-templates
select="ResultSet/data_service/Employeeprofile/row[@lev = 2]"/>
</ResultSet></xsl:template>
<xsl:template match="row">
<xsl:element name="branch">
<xsl:attribute name="id">
<xsl:value-of select="@emp_name" />
</xsl:attribute> <branchText>
<xsl:value-of select="@emp_name"/>
</branchText>
<xsl:call-template name="IterateRows">
<xsl:with-param name="rows" select="following-sibling::node()"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="IterateRows">
<xsl:param name="rows"/>
<xsl:if test="$rows[1]/@lev = 3">
<leaf>
<leafText>
<xsl:value-of select="$rows[1]/@emp_name"/>
</leafText> </leaf>
<xsl:call-template name="IterateRows">
<xsl:with-param name="rows" select="$rows[position()> 1]"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>oldxml.xml <ResultSet> <data_service> <Employeeprofile> <row emp_name="one" org_cd="73700" rpt_to_org_cd="11111" lev="2" /> <row emp_name="four" org_cd="73656" rpt_to_org_cd="73700" lev="3" /> <row emp_name="five" org_cd="75425" rpt_to_org_cd="73700" lev="3" /> <row emp_name="three" org_cd="73723" rpt_to_org_cd="11111" lev="2" /> <row emp_name="two" org_cd="73708" rpt_to_org_cd="11111" lev="2" /> <row emp_name="Six" org_cd="73651" rpt_to_org_cd="73708" lev="3" /> <row emp_name="Seven" org_cd="73632" rpt_to_org_cd="73651" lev="4" /> <row emp_name="Eight" org_cd="73229" rpt_to_org_cd="73651" lev="4" /> <row emp_name="nine" org_cd="74023" rpt_to_org_cd="73651" lev="4" /> <row emp_name="ten" org_cd="73989" rpt_to_org_cd="11111" lev="2" /> </Employeeprofile> </data_service> </ResultSet> lev="2" is same level. Then lev=3, lev=4... every level may have leaves or may not have leaves, like emp_name="two", it has no leaf. Attribute rpt_to_org_cd is the value pointing to the parent. for example emp_name="Eight", rpt_to_org_cd ="73651", its parents' node is same as emp_name="Seven" and emp_name="nine" which is emp_name="Six" org_cd="73651" So the newxml.xml should be like this:
<branch id="three">
<branchText>three</branchText>
</branch> <branch id="two">
<branchText>two</branchText>
<branch id="Six">
<branchText>Six</branchText>
<leaf>
<leafText>Seven</leafText>
</leaf>
<leaf>
<leafText>Eight</leafText>
</leaf>
<leaf>
<leafText>nine</leafText>
</leaf>
</branch>
</branch> <branch id="ten">
<branchText>ten</branchText>
</branch></ResultSet> Is there anybody helping me? Thanks in advance. Mary
|

Cart



