[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: streaming XSLT creating a header from a first reco
Yeah, that just did it, it also seems pretty flexible regarding which row exactly I want to put in the header really cool, bit frustrating it appeared to be so simple in the end thanks a lot for your help Best regards, Geert Bormans -------------------------------------------------------------- Markup UK - a conference about XML and other mark-up languages London, June 9b10 2018 Programme now available at [ http://markupuk.org/speakers.xhtml | http://markupuk.org/speakers.xhtml ] Register at [ http://markupuk.org/registration.xhtml | http://markupuk.org/registration.xhtml ] ----- Oorspronkelijk bericht ----- Van: "Abel Braaksma, (Exselt) abel@xxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Aan: "xsl-list" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Verzonden: Dinsdag 15 mei 2018 16:54:19 Onderwerp: Re: streaming XSLT creating a header from a first record On 15.05.2018 15:18, Geert Bormans geert@xxxxxxxxxxxxxxxxxxx wrote: > still trying to get my head around this and facing obstacles, > most likely by lack of understanding... however > > example in > > <table> > <row id="row1" attr1="A" attr2="AA"/> > <row id="row2" attr1="C" attr2="CC"/> > <row id="row3" attr1="D" attr2="DD"/> > </table> > > example out > > <document> > <header> > <!-- process first row here --> > <id>row1</id> > <attr1>A</attr1> > <attr2>AA</attr2> > </header> > <content> > <!-- process all including first row here --> > <row id="row1" attr1="A" attr2="AA"/> > <row id="row2" attr1="C" attr2="CC"/> > <row id="row3" attr1="D" attr2="DD"/> > </content> > </document> > > > Using the accumulator or the xsl:iterate approach allows me to process the header row twice > but I can't seem to figure out to create the header and then continue the iteration in a different construct > it seems I need the header always before the iterator has started That seems like a job for xsl:fork <?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" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math" version="3.0"> <xsl:mode streamable="yes" on-no-match="shallow-copy"/> <xsl:mode name="header" streamable="yes"/> <xsl:output indent="yes"/> <xsl:template match="table"> <document> <xsl:fork> <xsl:sequence> <header> <xsl:apply-templates select="row[1]/@*" mode="header"/> </header> </xsl:sequence> <xsl:sequence> <content> <xsl:apply-templates select="row"/> </content> </xsl:sequence> </xsl:fork> </document> </xsl:template> <xsl:template match="row/@*" mode="header" expand-text="yes"> <xsl:element name="{name()}">{.}</xsl:element> </xsl:template> </xsl:stylesheet>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|