I'm not sure xqysp will do what you need. Take a look at this project instead - it's a fully functional XQuery parser in XQuery:
https://github.com/jpcs/xqueryparser.xq It also does some useful pre-processing, like correctly resolving all the QNames in the query for you. John On 05/09/12 17:43, Danny Sinang wrote: > I think xqysp can do the parsing. > > Just need someone to validate that my planned approach (looking for the > element after "declare" and "variable") is right or if I should take > other things into consideration. > > import module namespace p = "com.blakeley.xqysp" at "xqysp.xqy"; > > let $source := " > declare variable $assetId as xs:string > let $x := '1' > let $y := '2' > return $x > " > let $parsed := p:parse($source) > > return $parsed > > > And the results were : > > <root xmlns:xml="http://www.w3.org/XML/1998/namespace" > xmlns="com.blakeley.xqysp"> > > * <literal>declare</literal> > * <literal>variable</literal> > * <literal>assetId</literal> > * <literal>as</literal> > * <field name="xs" op=":"><literal>string</literal></field> > * <literal>let</literal> > * <field name="x" op=":"><literal>1'</literal></field> > * <literal>let</literal> > * <field name="y" op=":"><literal>2'</literal></field> > * <literal>return</literal> > * <literal>x</literal> > > </root> > > Regards, > Danny > > On Wed, Sep 5, 2012 at 12:32 PM, David Lee <[email protected] > <mailto:[email protected]>> wrote: > > Thats a little tougher ... I dont know of a tool that can parse the > XQuery to determine its declared external variables.____ > > Stylus Studio can do this for on-filesystem (not marklogic) XQuery > ... ____ > > Its quite nice that way ... but unfortunately SS dropped MarkLogic > support about 5 years ago :(____ > > Oxygen might be able to ... but I havent run into it.____ > > __ __ > > > -----------------------------------------------------------------------------____ > > David Lee > Lead Engineer > MarkLogic Corporation > [email protected] <mailto:[email protected]> > Phone: +1 812-482-5224 <tel:%2B1%20812-482-5224>____ > > Cell: +1 812-630-7622 <tel:%2B1%20812-630-7622> > www.marklogic.com <http://www.marklogic.com/> > > ____ > > __ __ > > *From:*[email protected] > <mailto:[email protected]> > [mailto:[email protected] > <mailto:[email protected]>] *On Behalf Of > *Danny Sinang > *Sent:* Wednesday, September 05, 2012 12:25 PM > *To:* MarkLogic Developer Discussion > *Subject:* Re: [MarkLogic Dev General] Xquery invoker____ > > __ __ > > Hi David,____ > > __ __ > > This is indeed easier than calling xdmp:invoke() in CQ, but I was > hoping to also save myself the effort of finding out what variables > a script accepts and typing in the variable name.____ > > __ __ > > Regards,____ > > Danny____ > > __ __ > > On Wed, Sep 5, 2012 at 12:10 PM, David Lee <[email protected] > <mailto:[email protected]>> wrote:____ > > You might look at the marklogic extension to xmlsh.____ > > Its not a web app but a terminal app (but it also has a GUI now).____ > > This allows you to invoke stored xqueries easily using "invoke"____ > > ____ > > e.g.____ > > import module ml=marklogic ____ > > ...____ > > ____ > > ml:invoke test.xqy____ > > ____ > > Let me know if you would like further info____ > > ____ > > http://www.xmlsh.org/MarkLogicInvoke____ > > http://www.xmlsh.org/HomePage____ > > http://www.xmlsh.org/ModuleMarkLogic____ > > ____ > > > -----------------------------------------------------------------------------____ > > David Lee > Lead Engineer > MarkLogic Corporation > [email protected] <mailto:[email protected]> > Phone: +1 812-482-5224 <tel:%2B1%20812-482-5224>____ > > Cell: +1 812-630-7622 <tel:%2B1%20812-630-7622> > www.marklogic.com <http://www.marklogic.com/>____ > > ____ > > *From:*[email protected] > <mailto:[email protected]> > [mailto:[email protected] > <mailto:[email protected]>] *On Behalf Of > *Danny Sinang > *Sent:* Wednesday, September 05, 2012 11:56 AM > *To:* general > *Subject:* [MarkLogic Dev General] Xquery invoker____ > > ____ > > Hi,____ > > ____ > > I find myself having to call xdmp:invoke() via CQ and entering the > .xqy path and its parameters is tedious.____ > > ____ > > Am thinking of writing a web app that would list all .xqy files in a > given folder. Once the user has chosen a .xqy file, the web app will > then display a label + text input field for each parameter that the > said .xqy file accepts.____ > > ____ > > But before I dive in, a few questions :____ > > ____ > > 1. Is there already a tool like this (why reinvent the wheel) ?____ > > ____ > > 2. Is there an Xquery parser out there that will readily tell me > what parameters a given xqy file accepts ?____ > > ____ > > I saw some mention of XQYSP. I guess I can look for "literal" > elements with the value "declare" and "variable" and then look for > the next literal to get the name of the variable. Would this be the > best way to go about it ?____ > > ____ > > Regards,____ > > Danny____ > > ____ > > ____ > > ____ > > ____ > > > _______________________________________________ > General mailing list > [email protected] <mailto:[email protected]> > http://developer.marklogic.com/mailman/listinfo/general____ > > __ __ > > > _______________________________________________ > General mailing list > [email protected] <mailto:[email protected]> > http://developer.marklogic.com/mailman/listinfo/general > > -- John Snelson, Lead Engineer http://twitter.com/jpcs MarkLogic Corporation http://www.marklogic.com _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
