Altova Mailing List Archives
>xsl-list Archive Home
>Recent entries
>Thread Prev - Re: [xsl] XSLT grouping(?) issue
>Thread Next - Re: [xsl] XSLT grouping(?) issue
Re: [xsl] XSLT grouping(?) issue
To: xsl-list@-----.------------.---
Date: 12/22/2008 5:38:00 PM
Fredde, >You've given me hope by saying it is solvable. Will this new >XML-fragment allow you to show me how? That would basically save >christmas for me... That's irresistible. As Mike suggested, this problem is ready-made for XSLT 2.0 group-starting-with. An XSLT 1.0 solution is not complicated, but it is subtle: <xsl:key name="item-by-group" match="*[Id]" use="generate-id( (preceding-sibling::StartOrderGroup | preceding-sibling::EndOrderGroup)[last()])"/> <xsl:template match="Orders"> <xsl:apply-templates select="StartOrderGroup"/> </xsl:template> <xsl:template match="StartOrderGroup"> <xsl:text>

Order
-----</xsl:text> <xsl:apply-templates select="key('item-by-group',generate-id())" mode="out"/> </xsl:template> <xsl:template match="Car | Bus | Truck" mode="out"> <xsl:text>
</xsl:text> <xsl:value-of select="local-name()"/> <xsl:text> - </xsl:text> <xsl:value-of select="Id"/> </xsl:template> <xsl:template match="StartOrderGroup | EndOrderGroup" mode="out"/> Notice that this ignores the Id elements on the StartOrderGroup (the system generated ID is more robust for these purposes), and ignores EndOrderGroup elements altogether. The trickiest thing is the way the key matches elements to an EndOrderGroup when they fall after a group ends but before the next group starts, so they can be skipped. Cheers, Wendell >Order >----- >Car - 2 >Car - 3 >Bus - 4 > >Order >----- >Truck - 9 At 05:37 AM 12/22/2008, you wrote: > > The problem is solvable with XSLT, provided your input XML > > is well > > formed. But your input is not a valid XML document. > > > > for e.g., <Id=1/> is not a valid XML fragment, and > > XML parser > > complains about it. > >My mistake, I apologize. When I simplified my XML I made it more bad >formed than it really is... > ><Orders> > <StartOrderGroup> > <Id>1</Id> > </StartOrderGroup> > <Car> > <Id>2</Id> > </Car> > <Car> > <Id>3</Id> > </Car> > <Bus> > <Id>4</Id> > </Bus> > <EndOrderGroup> > <Id>5</Id> > </EndOrderGroup> > <Car> > <Id>6</Id> > </Car> > <Truck> > <Id>7</Id> > </Truck> > <StartOrderGroup> > <Id>8</Id> > </StartOrderGroup> > <Truck> > <Id>9</Id> > </Truck> > <EndOrderGroup> > <Id>10</Id> > </EndOrderGroup> ></Orders> ====================================================================== Wendell Piez mailto:wapiez@m... Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ====================================================================== --~------------------------------------------------------------------ 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@l...> --~--
Disclaimer
These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

