Question: Converting an XML markup to another XML Markup Using XSLT.
Sample XML Markup:
<class >
<classitem>
<identifier>
<name>Sales </name>
<code>1234</code>
</identifier>
<classitem>
<identifier>
<name> Tax</name>
<code>5678</code>
</identifier>
</classitem>
</classitem>
</class>
After XSL Transformation, the output markup should be as follows:
<hier>
<hierlev >
<heading>
<title>Sales</title>
</heading>
<hierlev>
<heading>
<title> Tax</title>
</heading>
</hierlev>
</hierlev>
</hier>
The mapping between Input and output markup elements as follows:
class - hier
Classitem - heirlev
identifier - heading
name - title
code has no mapping i.e. the element can be ignored in XSLT Code
I have written XSLT code which works for fixed depth of class.Actually I
have written XSLT code for classItem depth of 4, but for simplicity...
the following code is for classItem depth of 2 only.
<xsl:template match="class">
<xsl:param name="count"/>
<xsl:param name="v1" select="descendant::name[1]/text()"/>
<xsl:param name="v2" select="descendant::name[2]/text()"/>
<xsl:call-template name="createHierLevElement">
<xsl:with-param name="hierLevContent">
<xsl:element name="heading">
<xsl:element name="title">
<xsl:copy-of select="$v1"/>
</xsl:element>
</xsl:element>
<xsl:if test=" $count = 2 ">
<xsl:call-template name="createHierLevElement">
<xsl:with-param name="hierLevContent">
<xsl:element name="heading">
<xsl:element name="title">
<xsl:copy-of select="$v2"/>
</xsl:element>
</xsl:element>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="createHierLevElement">
<xsl:param name="hierLevContent" />
<xsl:element name="hierlev">
<xsl:copy-of select="$hierLevContent" />
</xsl:element>
</xsl:template>
If my input markup has arbitary depth, the above XSLT code will not
work, so I need code which accomodates any depth of ClassItem.
Thanks.
Sridhar
--~------------------------------------------------------------------
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>
--~--