Subject: Re: [xsl] for-each-group - only get elements in each group From: "Rick Quatro rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 20 Jan 2016 18:44:20 -0000 |
Hi Ken, This works, but I made a change to generalize it a bit, because each <Category> element may have other siblings that I need to capture. Here is what I have, based on your code: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:output indent="yes"/> <xsl:template match="/"> <cases> <xsl:for-each-group select="Cases/Story/*" group-by="preceding-sibling::Category[1]"> <category> <xsl:apply-templates select="preceding-sibling::Category[1]/node()"/> </category> <xsl:copy-of select="current-group()[not(self::Category)]"/> </xsl:for-each-group> </cases> </xsl:template> </xsl:stylesheet> So, if I have this input: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Cases> <Story> <Category>Category1</Category> <Case>Case1</Case> <Author>Author1</Author> <Code>Code1</Code> <Category>Category1</Category> <Case>Case2</Case> <Author>Author2</Author> <Category>Category1</Category> <Case>Case3</Case> <Author>Author3</Author> <Category>Category1</Category> <Case>Case4</Case> <Author>Author4</Author> <Category>Category2</Category> <Case>Case5</Case> <Author>Author5</Author> <Category>Category2</Category> <Case>Case6</Case> <Author>Author6</Author> <Category>Category2</Category> <Case>Case7</Case> <Author>Author7</Author> <Category>Category2</Category> <Case>Case8</Case> <Author>Author8</Author> <Code>Code8</Code> </Story> </Cases> I get this desired output: <?xml version="1.0" encoding="UTF-8"?> <cases> <category>Category1</category> <Case>Case1</Case> <Author>Author1</Author> <Code>Code1</Code> <Case>Case2</Case> <Author>Author2</Author> <Case>Case3</Case> <Author>Author3</Author> <Case>Case4</Case> <Author>Author4</Author> <category>Category2</category> <Case>Case5</Case> <Author>Author5</Author> <Case>Case6</Case> <Author>Author6</Author> <Case>Case7</Case> <Author>Author7</Author> <Case>Case8</Case> <Author>Author8</Author> <Code>Code8</Code> </cases> Thank you for your generous help. Rick
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] for-each-group - only get, G. Ken Holman g.ken. | Thread | [xsl] Trouble with special characte, a kusa akusa8@xxxxxx |
Re: [xsl] for-each-group - only get, Martin Honnen martin | Date | Re: [xsl] for-each-group - only get, Rick Quatro rick@xxx |
Month |