XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
- XQuery Help and Discussion (2016)
-> - Issue with Processing Instruct... (1)
-> + problem converting json to XML... (2)
-> + Problem base64 decoding string... (3)
-> + Problems posting multipart for... (5)
-> + trouble with download of price... (2)
-> + Problem with http-post not bei... (3)
-> + path problem, xps_file:writeAl... (9)
-> + Xquery update support? (2)
-> + problem with Stylus studio try... (5)
-> + adding dtd reference to xml ou... (4)
-> + xquery escaping ambarsand when... (3)
-> + Whitespace problem when return... (5)
-> + Problem with namespace prefix ... (5)
-> - Sending via SFTP returns unexp... (1)
-> + Query and Sftp clent (4)
-> + xquery and try - catch (3)
-> + Query + ddtek:http-post optio... (5)
-> + Example files referenced in do... (3)
-> + Automatic Error Detection and ... (3)
-> + Working with result of ddtek:h... (2)
-- [1-20] [21-40] [41-60] Next
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Rick ScofieldSubject: XQuery Nested Loop Lookup
Author: Rick Scofield
Date: 09 Feb 2014 10:27 AM
Need some help with a Xquery nested loop. Both files are about 30k lines long and growing. I'm trying to match the <Sku> value in the $mivabod file with the <upc> value in the $carhbod file and return the <sku> or <upc> and the <qtyavail> from the $carhbod file. I have the xquery code here that takes about 30min to complete.

something like...
SELECT $carhbod/qtyavail FROM $carhbod WHERE $mivabod/Sku = $carbod/upc
Can anyone help with a more efficient way to do this?
This xQuery takes way too long...

===begin code===
declare variable $mivabod as document-node(element(*, xs:untyped)) external;
declare variable $carbod as document-node(element(*, xs:untyped)) external;

<root>
{
for $miva in $mivabod/table/row/Sku
for $carh in $carbod/root/row[upc = $miva]
return
<carqty>
<UPC>{$miva/text()}</UPC>
<quantity>{$carh/qtyavail/text()}</quantity>
</carqty>
}
</root>
===end code===

Postnext
Ivan PedruzziSubject: XQuery Nested Loop Lookup
Author: Ivan Pedruzzi
Date: 09 Feb 2014 11:59 AM
Hi Rick,

Variable $A and $B mimic your input documents, the loop outputs the elements with the same id.

Does it help?

Ivan Pedruzzi
Stylus Studio Team



declare variable $A :=
<A>
<A id="0">A0</A>
<A id="1">A1</A>
</A>;

declare variable $B :=
<B>
<B id="0">B0</B>
<B id="2">B2</B>
</B>;

<root>{
for $a in $A/A,
$b in $B/B
where $a/@id = $b/@id
return <match A="{$a}" B="{$b}"/>
}</root>

=========================
<root>
<match A="A0" B="B0"/>
</root>

Postnext
Rick ScofieldSubject: XQuery Nested Loop Lookup
Author: Rick Scofield
Date: 09 Feb 2014 01:20 PM
Originally Posted: 09 Feb 2014 12:20 PM
Thanks Ivan, I believe I've tried your suggestion already. Is the following code doing the same as your suggestion?

I can see the difference, do id attributes match faster that elements?

declare variable $mivabod as document-node(element(*, xs:untyped)) external;
declare variable $carbod as document-node(element(*, xs:untyped)) external;

<root>
{
for $miva in $mivabod/table/row
for $carh in $carbod/root/row
where $miva/Sku/text() = $carh/upc/text()
return ...
...


Postnext
Ivan PedruzziSubject: XQuery Nested Loop Lookup
Author: Ivan Pedruzzi
Date: 10 Feb 2014 09:18 AM

If you cannot make it work, the only option is to send us samples of the two input documents at stylussupport@ivitechnologies.com

Ivan Pedruzzi
Stylus Studio Team

Posttop
Rick ScofieldSubject: XQuery Nested Loop Lookup
Author: Rick Scofield
Date: 10 Feb 2014 03:11 PM
Thanks Ivan,
I have emailed the project files.

Thanks again, Rick

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.