Indeed it does!

Christian, thank you so much for all your help. I've got everything I need,
not only for this particular task, but I can probably extend what you've
shown me to other related issues where BaseX can prove invaluable for
saving time in my work processes. This has been a thoroughly satisfying
experience.

Best regards,

Michael

On Mon, May 30, 2016 at 4:42 PM, Christian Grün <[email protected]>
wrote:

> > "\Program Files (x86)\BaseX\bin\basex" query.xq -iC:/data/input.xml
>
> This should work:
>
> > "\Program Files (x86)\BaseX\bin\basex" -iC:/data/input.xml query.xq
>
> In BaseX, the order of arguments is important.
>
>
>
> > I get in response:
> >
> > Stopped at C:/scripts/query.xq, 2/19:
> > [XPDY0002] root(): no context value bound.
> >
> > It's the same whether I say
> >
> > -iC:/data/input.xml
> > -i/data/input.xml
> > -iC:\data\input.xml
> > -i\data\input.xml
> >
> > Thanks,
> >
> > Michael
> >
> >
> > On Mon, May 30, 2016 at 2:20 PM, Christian Grün <
> [email protected]>
> > wrote:
> >>
> >> > If I just remove "$input"
> >> > from the script I get a "no context value bound" error if I say
> >> >
> >> > -i/my/path/to/input.xml
> >>
> >> It should work as described (I frequently use it by myself). Could you
> >> try again, or provide me with a little self-contained example?
> >>
> >> Cheers,
> >> Christian
> >>
> >>
> >>
> >> > On Thu, May 26, 2016 at 11:21 PM, Christian Grün
> >> > <[email protected]>
> >> > wrote:
> >> >>
> >> >> Hi Michael,
> >> >>
> >> >> > 1) There'll be a new version of the input file arriving
> periodically,
> >> >> > so
> >> >> > I'd
> >> >> > prefer to be able to do everything at the command line without
> having
> >> >> > to
> >> >> > create the database inside the GUI. Not sure of the best way to go
> >> >> > about
> >> >> > that.
> >> >>
> >> >> Using the GUI was just an example. You can create new databases via
> >> >> commands (CREATE), XQuery (db:create) or our APIs. Please check out
> >> >> our documentation for more hints.
> >> >>
> >> >> > 2) In the GUI for now, I can perform the replace with the map, or I
> >> >> > can
> >> >> > run
> >> >> > the for loop that writes out all the files. But I get an
> "Unexpected
> >> >> > end
> >> >> > of
> >> >> > query" error when I try to do both, so what's the problem with my
> >> >> > syntax?
> >> >>
> >> >> In XQuery, multiple expressions can be separated with commas.
> >> >>
> >> >> Note, however, that XQuery is a functional language; as such, it is
> >> >> not possible to first update items and then access them in the same
> >> >> query that easily. There are various alternatives to get around this
> >> >> limitation:
> >> >>
> >> >> 1. Use a BaseX command script to run all operations [1]:
> >> >>
> >> >>   <commands>
> >> >>     <create-db name='input'>...path/to/input.xml</create-db>
> >> >>     <xquery><![CDATA[
> >> >>       let $map := ...
> >> >>     ]]></xquery>
> >> >>     <xquery>
> >> >>       for $page in ...
> >> >>     <xquery>
> >> >>   </commands>
> >> >>
> >> >> 2. Use copy/transform/return or update to do all updates in
> >> >> main-memory [2] and pass them on to your file:write function. This
> >> >> could e.g. look as follows:
> >> >>
> >> >>   let $input := doc('input.xml')
> >> >>   let $map := map:merge(
> >> >>     for $part in $input//part
> >> >>     return map:entry(string-join($part/partinfo/*, '/'), $part)
> >> >>   )
> >> >>   for $page in $input//page
> >> >>   let $new-part := $page update {
> >> >>     for $partinfo in .//unit/partinfo
> >> >>     let $part := $map(string-join($partinfo/*, '/'))
> >> >>     return replace node $partinfo with element part { $part/node() }
> >> >>   }
> >> >>   return file:write('data/'|| $page/@key || '.xml', $page,
> >> >>     map{ "omit-xml-declaration": "no" })
> >> >>
> >> >> The good thing here is that your replace operations won’t need to be
> >> >> cached until the very end; they will directly be run on each page
> >> >> element (and not persisted on disk; but this is something you don’t
> >> >> need anyway it seems)
> >> >>
> >> >> Christian
> >> >>
> >> >> [1] http://docs.basex.org/wiki/Commands#Command_Scripts
> >> >> [2]
> http://docs.basex.org/wiki/XQuery_Update#Non-Updating_Expressions
> >> >
> >> >
> >
> >
>

Reply via email to