XQuery
Priscilla Walmsley (pwalmsley@datypic.com)
ISBN: 1491915103
2nd edition, , O'Reilly Media, Inc.
Chapter 23: Function Items and Higher-Order Functions
Please note that the book contains many inline examples and informal tables that are not provided here.
xquery version "3.0"; declare function local:for-each ($seq, $f) { for $item in $seq return $f($item) }; local:for-each( ("abc", "def"), upper-case#1)
xquery version "3.0"; declare function local:for-each ($seq as item()*, $f as function(item()) as item()*) as item()* { for $item in $seq return $f($item) }; local:for-each( ("abc", "def"), upper-case#1)
declare function local:price-list ($price-doc as document-node()) { <html> <head> <title>Price List</title> <link href="companystandard.css"/> </head> <body> <h1>Price List</h1> <table> <tr> <th>Prod number</th> <th>Price</th> </tr> {for $prod in $price-doc//priceList[@effDate < current-date()]/prod return <tr> <td>{data($prod/@num)}</td> <td>{if (exists($prod/discount)) then $prod/price - $prod/discount else data($prod/price)}</td> </tr> }</table> </body> </html> };
xquery version "3.0"; declare function local:price-list ($price-doc as document-node(), $price-calc-func as function(element(prod)) as xs:decimal) { <html> <head> <title>Price List</title> <link href="companystandard.css"/> </head> <body> <h1>Price List</h1> <table> <tr> <th>Prod number</th> <th>Price</th> </tr> {for $prod in $price-doc//priceList[@effDate < current-date()]/prod return <tr> <td>{data($prod/@num)}</td> <td>{$price-calc-func($prod)}</td> </tr> }</table> </body> </html> }; declare function local:price-based-on-discount ($prod as element(prod)) as xs:decimal { if (exists($prod/discount)) then xs:decimal($prod/price) - xs:decimal($prod/discount) else xs:decimal($prod/price) }; declare function local:price-based-on-percent ($prod as element(prod)) as xs:decimal { xs:decimal($prod/price) * .90 };