[xquery-talk] Function Call Errors

Wei, Alice J. ajwei at indiana.edu
Mon Feb 25 14:30:14 PST 2008


Dear Jonathon and Michael:

   Thanks for pointing out the mistake, although I am somewhat confused now that I don't need to declare $count, $sorted_result and $doc since they are used within the query.  And, I am surprised that I don't need to declare $nodes either, or $r. (I guess I might still have to, because the output is now 'content correct,' but the layout is odd.

   Now I have this:

declare function local:distinct(
     $seq as xs:anyAtomicType*)
      as xs:anyAtomicType
 {
 let $sorted_result:=
 for $doc in distinct-values($seq)
 order by $doc
 return $doc
 for $r at $count in $sorted_result
 let $nodes := $seq[. = $r][1]
 return
 <ad>
 <statistics>
 Showing Result: {$count} / {count($sorted_result)}
 </statistics> {$nodes} </ad> };

 for $ad in distinct-values(collection("xmldb:exist://db/bookl")//ad/p[contains(upper-case(.),'BOOK')])
 return
 local:distinct($ad)

   This is what I got:

 Showing Result: 1 / 1Passaic Book Center594 Main Ave.Passaic, N.J. 07055

  Apparently, the entire set is returned with 25 results, and it also have the XML tags, but now it appears it is extracting in ways similar to {data($nodes)}.
  Am I missing something here?

Alice

======================================================
Alice Wei
MIS 2008
School of Library and Information Science
Indiana University Bloomington
ajwei at indiana.edu
________________________________________
From: Jonathan Robie [jonathan.robie at redhat.com]
Sent: Monday, February 25, 2008 2:10 PM
To: Wei, Alice J.
Cc: talk at x-query.com
Subject: Re: [xquery-talk] Function Call Errors

Hi Alice,

The local:distinct() function you declared has 4 parameters. The
local:distinct() function you called has only one argument, so your
implementation is looking for a local:distinct() function declared with
1 parameter. You have to make your function call match your function
declaration.

Jonathan

Wei, Alice J. wrote:
> Hi, XQeriers:
>
>    I have a piece of code here that I have modified into the following function:
>
> declare function local:distinct(
>      $seq as xs:anyAtomicType*,
>      $sorted_result as xs:integer*,
>      $count as xs:integer,
>      $doc as xs:anyAtomicType*)
>      as xs:anyAtomicType
> {
> let $sorted_result:=
> for $doc in distinct-values($ad)
> order by $doc
> return $doc
> for $r at $count in $sorted_result
> let $nodes := $ad[. = $r][1]
> return
> <ad>
> <statistics>
> Showing Result: {$count} / {count($sorted_result)}
> </statistics>
> {$nodes}
> </ad>
> };
>
> for $ad in distinct-values(collection("xmldb:exist://db/my")//ad/p[contains(upper-case(.),'BOOK')])
> return
> local:distinct($ad)
>
> This is currently, not working and keeps popping the following error:
>
> org.exist.xquery.XPathException: Call to undeclared function: local:distinct [at line 25, column 1]
>
> This is based on the XQuery in the following:
>
> let $ad := fn:collection("xmldb:exist://db/my")//ad/p[contains(upper-case(.), 'BOOK')]
> let $sorted_result:=
> for $doc in distinct-values($ad)
> order by $doc
> return $doc
> for $r at $count in $sorted_result
> let $nodes := $ad[. = $r][1]
> return
> <ad>
> <statistics>
> Showing Result: {$count} / {count($sorted_result)}
> </statistics>
> {$nodes}
> </ad>
>
> Can anyone please give me tips on how to fix up the query so that it would generate something like
>
> <ad>
> <statistics> Showing Result: 1 /1</statistics>
> <p>A business so big growing so fast, you need an appointment in most auto trim shops! Send for FREE MASTER PLAN, ILLUSTRATED BOOKLET on learning auto upholstery and interior customizing in your spare hours. No experience needed. Yet approved auto upholstery institute, dept.
> <address>
> <addressLine>RMC 1205 W. Barkley,</addressLine>
> <addressLine>Orange CA 92668</addressLine>
> </address>
> </p>
> </ad>
>
> Thanks to those who can help.
> Of anyone on the list who know any resources on where I can practice user-defined function call using interactive tabs woulld be great.
>
> ======================================================
> Alice Wei
> MIS 2008
> School of Library and Information Science
> Indiana University Bloomington
> ajwei at indiana.edu
>
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk
>




More information about the talk mailing list