[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message]

Rookie XQuery Question: Nested For Loops

John Craft jcraft at jonesmcclure.com
Thu Apr 26 12:10:56 PDT 2007


  Rookie XQuery Question: Nested For Loops
John & Michael-

Thank you for your help.  I think I understand a little better now (and
the code works).

jc

-----Original Message-----
From: Michael Kay [mailto:http://x-query.com/mailman/listinfo/talk] 
Sent: Thursday, April 26, 2007 9:53 AM
To: John Craft; http://x-query.com/mailman/listinfo/talk
Subject: RE:  Rookie XQuery Question: Nested For Loops

You need curly braces when you nest an expression inside literal text,
where
the literal text is setting the content of an element or attribute. Your
curly braces here are an error because they aren't directly inside an
element constructor. 

Try the following (I've made a few other changes as well):

let $bk in doc("book.xml")/book
return
   <html>
     <head>
       <title>Hello World</title>
     </head>
     <body>
       <h1>{$bk/title}</h1>
       {
         for $ch at $counter in $bk/chapter
         return (
           <h2>Chapter {$counter}. {$ch/title}</h2>,
           $ch/section/title
         )
       }
     </body>
   </html>

Yes, I agree: this is pretty confusing. The rules are basically:

* To write an expression inside an element constructor, use curlies
* To write an expression inside another expression, don't use curlies
* To write an element constructor inside an expression, don't use
curlies
* To write an element constructor inside another element constructur,
curlies are optional.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: http://x-query.com/mailman/listinfo/talk 
> [mailto:http://x-query.com/mailman/listinfo/talk] On Behalf Of John Craft
> Sent: 26 April 2007 15:22
> To: http://x-query.com/mailman/listinfo/talk
> Subject:  Rookie XQuery Question: Nested For Loops
> 
> Greetings-
> 
> I am very new to XQuery and have a bit of a rookie question 
> for you.  I am trying to nest for loops to output HTML but I 
> am getting a syntax error on the curly brace before the third 
> "for" statement.  Could someone please tell me what I am 
> doing wrong?  I have posted sample code
> below:
> 
> for $bk in doc("book.xml")/book
> return
>    <html>
>    <head>
>    <title>Hello World</title>
>    </head>
>    <body>
>    <h1>{data($bk/title)}</h1>
>    {
>      for $ch in $bk/chapter
>      return
>         <h2>Chapter {$counter}. {data($ch/title)}</h2>
>             {
>                   for $sec in $ch/section
>                   return $sec/title
>             }
>    }
>    </body>
>    </html>
> 
> Thanks in advance,
> 
> John Craft
> 
> 
> 
> _______________________________________________
> http://x-query.com/mailman/listinfo/talk
> http://x-query.com/mailman/listinfo/talk




PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.