[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Accumulator use

Subject: Re: Accumulator use
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 29 Feb 2016 11:39:23 -0000
Re:  Accumulator use
cmarchand@xxxxxxxxxx wrote:

I try to cache values who are in external files referenced from my
source file :

source.xml
------------
<root><input href="1.xml"/><input href="2.xml"/>...</root>

n.xml
------
<root type="typeN">...</root>

I want to create a map(xs:anyUri, xs:string), where key is the external
file URI, and value is always /*/@type in the file

If the files are huge but you only need the @type attribute of the root element then using `xsl:iterate` and `xsl:break` for an early exit, as described in http://saxonica.com/html/documentation/sourcedocs/streaming/partial-reading.html might be the best approach to avoid parsing the large documents.



External files may be huge, and I'd like to stream them. I create an accumulator, stream input files using this accumulator.

<xsl:accumulator name="acc" as="map(xs:string, xs:string)"
initial-value="map{}">
    <xsl:accumulator-rule match="*[@value]">
       <xsl:sequence select="map:put($value, ./local-name(),
xs:string(./@value))"/>
    </xsl:accumulator-rule>
</xsl:accumulator>

Above you say map(xs:anyUri, xs:string) with the key being the file URI, so why is the accumulator map(xs:string, xs:string) and stores the local name and not the URI?


<xsl:mode name="m" streamable="yes"/>

<xsl:template match="/">
    <xsl:stream href="../../test/resources/entries.xml"
use-accumulators="acc">
       <xsl:apply-templates mode="m"/>
    </xsl:stream>
    <!-- do here something that uses the accumulator -->
</xsl:template>

Where do you parse the referenced files?


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.