Subject: [xsl] Positional Grouping Problem From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx> Date: Fri, 5 Aug 2005 16:55:23 +0530 |
I have this XML file - <?xml version="1.0"?> <X> <Y> <Z>HI</Z> <Z>HI</Z> <Z>HI</Z> <Z>YES</Z> <Z>HI</Z> <Z>HI</Z> </Y> </X> I desire output - <?xml version="1.0" encoding="utf-8"?> <X> <Y> <group> <Z>HI</Z> <Z>HI</Z> <Z>HI</Z> </group> <Z>YES</Z> <group> <Z>HI</Z> <Z>HI</Z> </group> </Y> </X> i.e. all consecutive Z's with string HI should be grouped in element <group> I have written this stylesheet so far to solve this problem - <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" /> <xsl:template match="/X"> <X> <Y> <xsl:apply-templates select="Y" /> </Y> </X> </xsl:template> <xsl:template match="Y"> <xsl:apply-templates select="Z" /> </xsl:template> <xsl:template match="Z"> <xsl:choose> <xsl:when test=". = 'YES'"> <xsl:copy-of select="." /> </xsl:when> <xsl:when test="((. = 'HI') and not(preceding-sibling::Z[1] = 'HI'))"> <group> <xsl:copy-of select="." /> <xsl:call-template name="generate-group-elements"> <xsl:with-param name="list" select="following-sibling::Z" /> </xsl:call-template> </group> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="generate-group-elements"> <xsl:param name="list" /> <xsl:if test="$list[1]"> <xsl:copy-of select="$list[1]" /> <xsl:call-template name="generate-group-elements"> <xsl:with-param name="list" select="$list[position() > 1]" /> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet> But I am getting output - <?xml version="1.0" encoding="utf-8"?> <X> <Y> <group> <Z>HI</Z> <Z>HI</Z> <Z>HI</Z> <Z>YES</Z> <Z>HI</Z> <Z>HI</Z> </group> <Z>YES</Z> <group> <Z>HI</Z> <Z>HI</Z> </group> </Y> </X> Can somebody please find the bug in my stylesheet? I have tested with Xalan-J 2.6.0, Saxon 6.5.3 and MSXML4 ; and I am getting same output with all these three XSLT processors. I am hinging slightly to Xalan and Saxon. Regards, Mukul
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Measure the length of an , Mukul Gandhi | Thread | Re: [xsl] Positional Grouping Probl, George Cristian Bina |
Re: [xsl] Measure the length of an , Mukul Gandhi | Date | RE: [xsl] Measure the length of an , Khorasani, Houman |
Month |