W3C home > Mailing lists > Public > xproc-dev@w3.org > September 2008

Re: 2 questions about p:store

From: Norman Walsh <ndw@nwalsh.com>
Date: Mon, 29 Sep 2008 16:21:12 -0400
To: XProc Dev <xproc-dev@w3.org>
Message-ID: <m263oezosn.fsf@nwalsh.com>
James Garriss <james@garriss.org> writes:

> A pipeline that contains this:
>     <p:for-each name="step1">
>         <p:iteration-source select="//Book"/>
>         <p:store href="books.xml"/>
>     </p:for-each>
> might overwrite the file "books.xml" many times.

Yep. If that's not what you meant...why'd you write it? :-)

> 1) Does the the XProc spec give guidance to XProc processors on how to
> handle overwrites?  Should it?

I don't think so. We could decide that that was an error, as the XSLT
spec does wtih xsl:result-document, I suppose. If you'd prefer that
answer, I suggest you propose it on the comments list.

> 2) How would you prevent an overwrite?  Is there a way to give a unique
> filename for each book when p:store writes it?

You could use the iteration-position:

  <p:store name="store">
    <p:with-option name="href"
		   select="concat('books-', p:iteration-position(), '.xml')"/>

or you could use some value from the context node (e.g., the @xml:id,
if each Book has one).

  <p:store name="store">
    <p:with-option name="href"
		   select="concat('books-', /*/@xml:id, '.xml')"/>

Or both. Or something else.

Alas, neither of these solutions runs in Calabash 0.6.3. I bungled the
namespace bindings in the former case and the context item in the
latter. But the former is now fixed and I'll see if I can fix the
latter as well, sometime this week.

                                        Be seeing you,

Norman Walsh <ndw@nwalsh.com> | I'm NOT in denial!
http://nwalsh.com/            | 

Received on Monday, 29 September 2008 20:21:53 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:03:03 UTC