Subject: [xsl] Help with transforming unique set of data in XSLT 2.0 From: Jack Bush <netbeansfan@xxxxxxxxxxxx> Date: Tue, 27 Jul 2010 00:29:26 -0700 (PDT) |
Hi All, I am having difficulty get the following stylesheet to transform unique set of data once: 1 <xsl:template match="/"> 2 <xsl:apply-templates select="document('E:/employee.xml')/ns:html"/> 3 </xsl:template> 4 5 <xsl:template match="ns:html"> 6 <employee> 7 <xsl:for-each select="ns:body/ns:div[@id='content']/ns:table[@class='sresults']/ns:tr/ns:td /ns:a"> 8 <first_name><xsl:value-of select="substring-before(@given_name,',')"/></first_name> 9 <surname><xsl:value-of select="@family_name"/></surname> 10 <sex><xsl:value-of select="@gender"/></sex> 11 </xsl:for-each> 12 </employee> 13 </xsl:template> The following output generated duplicated set of identical transformed data when using <xsl:for-each>: <?xml version="1.0" encoding="UTF-8"?> <employee> <first_name>John</first_name> <surname>smith</surname> <sex>M</sex> <first_name>Kelly</first_name> <surname>Jones</surname> <sex>F</sex> </employee> <?xml version="1.0" encoding="UTF-8"?> <employee> <first_name>John</first_name> <surname>smith</surname> <sex>M</sex> <first_name>Kelly</first_name> <surname>Jones</surname> <sex>F</sex> </employee> I tried the following changes after suspecting that the cause was from the <xsl:for-each> statement: 1 <xsl:template match="/"> 2 <xsl:apply-templates select="document('E:/employee.xml')/ns:html"/> 3 </xsl:template> 4 5 <xsl:template match="ns:html"> 6 <employee> 7 <xsl:variable name="employee_data" select="ns:body/ns:div[@id='content']/ns:table[@class='sresults']/ns:tr/ns:td /ns:a"/> 8 <xsl:apply-templates select="$employee_data"/> 9 <first_name><xsl:value-of select="substring-before(@title,',')"/></first_name> 10 <surname><xsl:value-of select="@href"/></surname> 11 <sex><xsl:value-of select="@gender"/></sex> 12 </employee> 13 </xsl:template> Below is the output without using <xsl:for-each>: <?xml version="1.0" encoding="UTF-8"?> <employee> John Kelly <firstname /> <surname /> <sex/>> </employee> <?xml version="1.0" encoding="UTF-8"?> <employee> John Kelly <firstname /> <surname /> <sex/>> </employee> Any ideas on what is causing the duplications and why is the second stylesheet picking up the firstnames of 2 separate xml documents in the wrong place? The desire output is just a single entry of each record such as the following: <?xml version="1.0" encoding="UTF-8"?> <employee> <first_name>John</first_name> <surname>smith</surname> <sex>M</sex> <first_name>Kelly</first_name> <surname>Jones</surname> <sex>F</sex> </employee> Thanks a lot, Jack
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] xml:base URI ignored by d, Michael Kay | Thread | Re: [xsl] Help with transforming un, Michael Kay |
[xsl] xml:base URI ignored by docum, Lars Huttar | Date | Re: [xsl] xml:base URI ignored by d, Andrew Welch |
Month |