Subject: [xsl] automatic creation of nested elements From: "Ganesh Babu N" <nbabuganesh@xxxxxxxxx> Date: Mon, 1 Dec 2008 17:05:17 +0530 |
Input XML: <map> <source>bib-reference</source> <source>@id</source> <target>reference/citation</target> <target>@id</target> </map> Required output: <xsl:template match="bib-reference"> <xsl:element name="reference"> <xsl:element name="citation"> <xsl:attribute name="id"> <xsl:value-of select="@id"/> </xsl:attribute> <xsl:apply-templates/> </xsl:element> <xsl:element> </xsl:template> My XSLT: <xsl:template match="map"> <xsl:when test="count(child::*) > 3 and not(starts-with(source,'@'))"> <mac:template match="{source[1]}"> <xsl:variable name="nestedele" select="tokenize(target[1],'/')"/> <xsl:for-each select="$nestedele"> <xsl:variable name="tem" select="."/> <mac:element name="{$tem}"> <xsl:for-each select="target"> <xsl:variable name="pos" select="position()"/> <xsl:if test="not(position()=1) and exists(../source[2])"> <mac:attribute name="{substring-after(.,'@')}"> <mac:value-of select="{../source[$pos]}"/> </mac:attribute> </xsl:if> </xsl:for-each> <mac:apply-templates/> </mac:element> </xsl:for-each> </mac:template> </xsl:when> </xsl:template> This will create one element after the other but it won't create the nested one. In a result for bib-reference, two elements will be created with same content. Which is a wrong one. Please guide me how to generate the nested element structure. Regards, Ganesh
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSLT 2.1: ElementTest aga, Florent Georges | Thread | Re: [xsl] automatic creation of nes, Florent Georges |
RE: [xsl] XSLT 2.1: ElementTest aga, Michael Kay | Date | Re: [xsl] Saxon node matching order, Ed Yau |
Month |