(: * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. :) declare namespace quoteJoin="scaservice:java/xquery.quote.QuoteJoin"; declare namespace quoteCalculator="scareference:java/xquery.quote.QuoteCalculator"; declare namespace quo="http://www.example.org/quote"; declare variable $quoteCalculator external; declare function quoteJoin:joinPriceAndAvailQuotes($priceQuoteDoc, $availQuoteDoc, $taxRate) { { data($priceQuoteDoc/*/customerName) } { concat($priceQuoteDoc/*/shipAddress/@street , ",", $priceQuoteDoc/*/shipAddress/@city ,",", fn:upper-case($priceQuoteDoc/*/shipAddress/@state) , ",", $priceQuoteDoc/*/shipAddress/@zip) } { for $priceRequest in $priceQuoteDoc/*/priceRequests/priceRequest, $availRequest in $availQuoteDoc/*/availRequest where data($priceRequest/widgetId) = data($availRequest/widgetId) return { data($priceRequest/widgetId) } { data($priceRequest/price) } { data($availRequest/requestedQuantity) } { data($availRequest/quantityAvail) } { for $shipDate in $availRequest/shipDate return { data($shipDate) } } { $taxRate } { quoteCalculator:calculateTotalPrice( $quoteCalculator, xs:float($taxRate), $availRequest/requestedQuantity, $priceRequest/price, $availRequest/quantityAvail) } } };