From: Jens Ø. P. <oe...@gm...> - 2014-02-26 10:07:12
|
Hi Dmitriy and Adam, Thanks, I understand. Having $uri is sufficient, I don't have any special use case, only I prefer to have variables declared and not filled in automagically, that's all. I am not sure that the behind-the-scenes provision of variables is part of the functional paradigm, but I rest my point. Jens On 25 Feb 2014, at 13:42, Adam Retter <ad...@ex...> wrote: >> Thanks, so you do not have to declare $uri - it is passed automatically to triggers like the below? >> >> declare function trigger:after-update-document($uri as xs:anyURI) { >> local:logEvent('after', 'update', 'document', $uri) >> }; > > Well each trigger now is just a function call, and you write that function! > >> I assume then that I cannot change the name of this "variable". > > I think you can call the variable whatever you like as long as it > occurs in the same place with the same arity and type. > >> However, there are external variables declared in controllers. Couldn't we have a >> >> declare variable $exist:uri external; >> >> in triggers for consistency and for bringing out into the open some of the hidden "magic"? > > Well I do not think that imitating what the controller does makes > things consistent. Certainly other mechanisms in eXist do other > things. I am rather trying to get away from a hacky script approach to > a more functional approach. Writing triggers using the functional > approach is also much simpler for developers as they do not now need > to write boilerplate code every time to figure out which even they are > responding to. > > > >> Jens >> >> On 25 Feb 2014, at 12:06, Adam Retter <ad...@ex...> wrote: >> >>> To elaborate on what Dmitriy is saying... >>> >>> The design of XQuery triggers significantly changed after eXist 1.4. >>> >>> Previously in 1.4 you wrote an XQuery with external variables and then >>> switched against those variables in your XQuery code to determine >>> which even happened in the database and to what. >>> >>> Since 2.0 you instead implement a specific function in your XQuery, >>> this function represents a s specific event that occurs in the >>> database. Your function will be invoked when that even happens, and >>> the variables that you are looking for are given to you as functions >>> to the parameter. >>> >>> Hope that helps? >>> >>> On 25 February 2014 10:50, Dmitriy Shabanov <sha...@gm...> wrote: >>>> >>>> >>>> >>>> On Tue, Feb 25, 2014 at 2:18 PM, Jens Østergaard Petersen >>>> <oe...@gm...> wrote: >>>>> >>>>> Hi, >>>>> >>>>> I want to write an XQuery trigger that processes a document to be indexed, >>>>> but I find no information on the external variables available to me to tell >>>>> the script the URI of the document, etc. I have found some 1.4 triggers that >>>>> use external exist:* variables, but would like to see the full list of >>>>> possibilities for version 2. >>>> >>>> >>>> not sure what document you mean, but there are xquery function with document >>>> URI in parameters http://exist-db.org/exist/apps/doc/triggers.xml#D2.2.5.3 >>>> >>>> >>>> -- >>>> Dmitriy Shabanov >>>> >>>> ------------------------------------------------------------------------------ >>>> Flow-based real-time traffic analytics software. Cisco certified tool. >>>> Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer >>>> Customize your own dashboards, set traffic alerts and generate reports. >>>> Network behavioral analysis & security monitoring. All-in-one tool. >>>> http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk >>>> _______________________________________________ >>>> Exist-open mailing list >>>> Exi...@li... >>>> https://lists.sourceforge.net/lists/listinfo/exist-open >>>> >>> >>> >>> >>> -- >>> Adam Retter >>> >>> eXist Developer >>> { United Kingdom } >>> ad...@ex... >>> irc://irc.freenode.net/existdb >> > > > > -- > Adam Retter > > eXist Developer > { United Kingdom } > ad...@ex... > irc://irc.freenode.net/existdb |