[xquery-talk] xpath/xquery to eleminate certain nodes
Michael Kay
mike at saxonica.com
Tue Aug 26 18:14:24 PDT 2008
Saxon-SA needs to be downloaded from www.saxonica.com and activated with a
license key (free for 30 days). My log file doesn't show any recent request
in your name for a license key.
Having installed Saxon-SA and a license key, you need to invoke the query
engine in updating mode. If you're doing that from the command line, set
-update:on. If you're doing it using s9api, call setUpdatingEnabled(true) on
the XQueryCompiler.
I'm afraid I've no idea whether this can be done via XMLBeans. The
documentation at
http://xmlbeans.apache.org/documentation/conInstallGuide.html mentions some
very old Saxon releases indeed.
Michael Kay
Saxonica
> -----Original Message-----
> From: talk-bounces at x-query.com
> [mailto:talk-bounces at x-query.com] On Behalf Of Christian Schlaefcke
> Sent: 26 August 2008 16:19
> To: talk at x-query.com
> Subject: RE: [xquery-talk] xpath/xquery to eleminate certain nodes
>
> Hi Micheal,
>
> I just downloaded saxon9 (9.1.0.1) and put it in my local
> Maven2 repository and added it to my classpath with these
> dependencies:
> <dependency>
> <groupId>net.sf.saxon</groupId>
> <artifactId>saxon9sa</artifactId>
> <version>9.1.0.1</version>
> </dependency>
> <dependency>
> <groupId>net.sf.saxon</groupId>
> <artifactId>saxon9sa-jaxp</artifactId>
> <version>9.1.0.1</version>
> </dependency>
> <dependency>
> <groupId>net.sf.saxon</groupId>
> <artifactId>saxon9sa-qc</artifactId>
> <version>9.1.0.1</version>
> </dependency>
> <dependency>
> <groupId>net.sf.saxon</groupId>
> <artifactId>saxon-dom</artifactId>
> <version>9.1.0.1</version>
> </dependency>
>
> Having this I do not get the "no query engine" error, so I
> guess it XmlBeans can access Saxonias query engine.
>
> But I still get the "XPST0003" error. Maybe "updating" is not
> enabled by default - how can it be "enabled" then?
>
> Thanks & Regards,
>
> Christian
>
> > To run XQuery Update in Saxon you need the Saxon-SA version of the
> > product, and you need to run it with updating enabled.
> >
> > Michael Kay
> > http://www.saxonica.com/
> >
> >> -----Original Message-----
> >> From: talk-bounces at x-query.com
> >> [mailto:talk-bounces at x-query.com] On Behalf Of Christian Schlaefcke
> >> Sent: 26 August 2008 15:13
> >> To: talk at x-query.com
> >> Subject: Re: [xquery-talk] xpath/xquery to eleminate certain nodes
> >>
> >> Thank you John!
> >>
> >> looks promising! But after I tried to adapt it to my application I
> >> have some trouble with XmlBeans and Saxon that I use to run my
> >> queries.
> >>
> >> After I found out that xquery uptate was not available with the
> >> XmlBeans/Saxon versions I used (2.3.0/8.7) I upgraded to versions
> >> (2.4.0/9.1.0.1) and now I get this error:
> >>
> >> Error on line 3 column 9
> >> XPST0003: XQuery syntax error in #...$this external; copy $#:
> >> Unexpected token "copy" in path expression
> >>
> >> My query looks like this:
> >> declare namespace mns='http://www.mynamespace.com';
> >> copy $a := /
> >> modify delete node
> >> $a/mns:sites/mns:site//mns:categories/mns:category[@id = "888"]
> >> return $a
> >>
> >> Did someone encounter this problem before?
> >>
> >> Thanks & Regards,
> >>
> >> Christian
> >>
> >>
> >> > Hi Christian,
> >> >
> >> > XQuery Update can be used to solve your problem fairly easily -
> >> > something like this should do the trick:
> >> >
> >> > copy $a := /
> >> > modify delete nodes $a/site/sites//categories/category[@name =
> >> > 'hidden'] return $a
> >> >
> >> > John
> >> >
> >> > Christian Schlaefcke wrote:
> >> >> Hi,
> >> >>
> >> >> I am fighting with a xpath/xquery expression to select the
> >> whole xml
> >> >> document except of certain nodes that I want to remove.
> >> The general
> >> >> structure of the document should be preserved.
> >> >>
> >> >> With my approaches I either select too much or too less and my
> >> >> research @ google & co. did not bring me any further :-(
> >> >>
> >> >> The document structure is a bit tricky (arbitrarily nested
> >> >> categories) - imagine the following document:
> >> >> <sites>
> >> >> <site>
> >> >> <categories>
> >> >> <category name="root">
> >> >> <categories>
> >> >> <category name="category_1">
> >> >> <some>
> >> >> <further>
> >> >> <nested>
> >> >> <info info_id="1">Important Information</info>
> >> >> </nested>
> >> >> </further>
> >> >> </some>
> >> >> </category>
> >> >> <category name="category_2">
> >> >> <some>
> >> >> <further>
> >> >> <nested>
> >> >> <info info_id="2">Less Important
> >> Information</info>
> >> >> </nested>
> >> >> </further>
> >> >> </some>
> >> >> </category>
> >> >> </categories>
> >> >> </category>
> >> >> <category name="hidden">
> >> >> <categories>
> >> >> <category name="dont_need_it">
> >> >> <some>
> >> >> <further>
> >> >> <nested>
> >> >> <info info_id="3">Unimportant
> Information</info>
> >> >> </nested>
> >> >> </further>
> >> >> </some>
> >> >> </category>
> >> >> <category name="dont_need_it_too">
> >> >> <some>
> >> >> <further>
> >> >> <nested>
> >> >> <info info_id="4">Even More Unimportant
> >> >> Information</info>
> >> >> </nested>
> >> >> </further>
> >> >> </some>
> >> >> </category>
> >> >> </categories>
> >> >> </category>
> >> >> </categories>
> >> >> </site>
> >> >> </sites>
> >> >>
> >> >> What I want would be:
> >> >> <sites>
> >> >> <site>
> >> >> <categories>
> >> >> <category name="root">
> >> >> <categories>
> >> >> <category name="category_1">
> >> >> <some>
> >> >> <further>
> >> >> <nested>
> >> >> <info info_id="1">Important Information</info>
> >> >> </nested>
> >> >> </further>
> >> >> </some>
> >> >> </category>
> >> >> </categories>
> >> >> </category>
> >> >> </categories>
> >> >> </site>
> >> >> </sites>
> >> >>
> >> >> I tried several approaches like:
> >> >> /site/sites//categories/category[@name = 'category_1'] or
> >> >> /site/sites//categories/category[@name != 'hidden'] or
> >> >>
> >>
> /site/sites//categories/category/some/further/nested/info[@info_id =
> >> >> '1']
> >> >>
> >> >> But all I get is something like this:
> >> >> <category name="category_1">
> >> >> <some>
> >> >> <further>
> >> >> <nested>
> >> >> <info info_id="1">Important Information</info>
> >> >> </nested>
> >> >> </further>
> >> >> </some>
> >> >> </category>
> >> >>
> >> >> What is missing to preserve the parent xml data?
> >> >>
> >> >> Any hint that will point me to the right direction
> would be very
> >> >> appreciated!
> >> >>
> >> >> Thank & Regards,
> >> >>
> >> >> Christian
> >> >>
> >> >>
> >> >>
> >> >> _______________________________________________
> >> >> talk at x-query.com
> >> >> http://x-query.com/mailman/listinfo/talk
> >> >
> >> >
> >> > --
> >> > John Snelson, Oracle Corporation
> >> http://snelson.org.uk/john
> >> > Berkeley DB XML:
> >> http://oracle.com/database/berkeley-db/xml
> >> > XQilla:
> >> http://xqilla.sourceforge.net
> >> > _______________________________________________
> >> > talk at x-query.com
> >> > http://x-query.com/mailman/listinfo/talk
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> talk at x-query.com
> >> http://x-query.com/mailman/listinfo/talk
> >
>
>
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk
More information about the talk
mailing list