[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

Subject: Re: streaming XSLT creating a header from a first record
From: "Geert Bormans geert@xxxxxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 15 May 2018 15:26:05 -0000
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>

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.