Danny:
-------

Thanks Danny.  Yes. I want to query the entire database to get all the 
documents and search for speakers along with their lines in each document.  I 
am trying this scenario to learn the language and its nuts and bolts.

Is "fn:" required?  Is this the default namespace?

Florent:
--------

I tried your approach of declaring the variable type.  It did not help.
Can there be more than 1 return from 1 FLWOR expression?

I was thinking of this ...

for $d in doc()
(: Print the document name here ...     return (<h1>{document-uri($d)}</h1>) :)
let $speech := $d//SPEECH
let $speaker := $speech/SPEAKER
let $lines := $speech/LINE
(: Look through each speaker in the document and display all the line elements 
of that speaker :)
return ( 
    <h3>{$speaker/text()}</h3>, 
    <p>{for $line in $lines return $line/text()}</p> 
) 

Is this possible?

Any other suggestions?

Thanks so much
Anil Shekhar




> From: [email protected]
> To: [email protected]; [email protected]
> Date: Wed, 23 Sep 2009 11:55:35 -0700
> Subject: RE: [MarkLogic Dev General] FLWOR clarification ...
> CC: 
> 
> Hi Anil,
> 
> Another quick observation here:  Your queries all return the entire database 
> and process the whole database in a single query.  You might want to do this 
> one play at a time (or even one act or scene at a time).  As it is, you end 
> up sending a huge result back to the browser.  So perhaps instead of:
> 
> for $speech in doc()//SPEECH
> 
> you can do something like:
> 
> for $speech in fn:doc("/shakespeare/plays/as_you.xml")//SPEECH
> return ....
> 
> -Danny
> 
> 
> 
> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of Florent Georges
> Sent: Wednesday, September 23, 2009 11:40 AM
> To: General Mark Logic Developer Discussion
> Subject: Re: [MarkLogic Dev General] FLWOR clarification ...
> 
> Anil Shekhar wrote:
> 
>   Hi,
> 
> > for $speech in doc()//SPEECH
> > let $speaker := $speech/SPEAKER
> 
>   Here, you loop over each speech.  For each one of them, you bind
> the variable $speech to it, and then evaluate the loop body.
> Within which you bind the variable $speaker, etc.
> 
> > for $d in doc()
> > let $speech := $d//SPEECH
> > let $speaker := $speech/SPEAKER
> 
>   Here, you loop over document nodes.  For each of them, you bind
> all its speeches at once to the variable $speech.  So $speaker in
> turn is bound to the speakers of every speeches in this document.
> And by <h3>{ $speaker/text() }</h3> you create an element the
> content of which is the concatenation of all the text node children
> of all the speaker elements.
> 
>   This is a good example where declaring the type (an arity) of
> the variables would have helped you:
> 
>     for $d in doc()
>     let $speech  as element(SPEECH)  := $d//SPEECH
>     let $speaker as element(SPEAKER) := $speech/SPEAKER
> 
>   Hope that helps (by the way, upper case element names look kind
> of weird,) regards,
> 
> -- 
> Florent Georges
> http://www.fgeorges.org/
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>       
> 
> _______________________________________________
> General mailing list
> [email protected]
> http://xqzone.com/mailman/listinfo/general
                                          
_________________________________________________________________
Insert movie times and more without leaving HotmailĀ®.
http://windowslive.com/Tutorial/Hotmail/QuickAdd?ocid=TXT_TAGLM_WL_HM_Tutorial_QuickAdd_062009
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to