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 (2017)
-> + Checking for Values in an Arra... (3)
-> + Adding embedded functions (11)
-> + multiple DTPs at the same leve... (2)
-> + java.lang.OutOfMemoryError: Ja... (3)
-> + xml validation against wsdl (2)
-> - Using same Xquery (4)
-> ->Using same Xquery
-> ->Using same Xquery
-> ->Using same Xquery
-> + Changing name value pairs to t... (4)
-> + removing unwanted attributes r... (4)
-> + Repeated Crashing of System (2)
-> + Create multiple XML Files (5)
-> + Best xQuery engine? (2)
-> + Xquery outputs XML attributes ... (4)
-> + DataDirect SequeLink as a DB-t... (2)
-> + Using same xquery for 2 xml fi... (5)
-> + Performance of XQuery (2)
-> + fail to use Saxon Process for ... (4)
-> + Conditional statements in xque... (2)
-> + Option Declaration Using Saxon (2)
-> + Multiple option declarations (2)
-> + Importing modules with a Custo... (3)
-- Previous [241-260] [261-280] [281-300] Next
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
rajat nairSubject: Using same Xquery
Author: rajat nair
Date: 13 Mar 2008 11:27 AM
Hi,
I am trying to use a single xquery file,extract content from 2 incoming xml files and produce a single file with the output.The challenge is that both the incoming files have similar tags so when i try to grab data it only grabs from one xml file.For example

Xml1 looks like this

<ShowProductAvailability xmlns="http://www.openapplications.org/oagis/9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" languageCode="en-US" versionID="1.0" releaseID="1.0">
<ApplicationArea>
<CreationDateTime>00</CreationDateTime>
</ApplicationArea>
<DataArea>
<Show />
<ProductAvailability>
<Item>
<ItemID>
<ID>1234</ID>
</ItemID>
<SupplierItemID>
<ID>foo</ID>
</SupplierItemID>
<UPCID>bar</UPCID>
</Item>
<Facility>
<IDs>
<ID schemeName="warehouse">000</ID>
</IDs>
</Facility>
<AvailableQuantity unitCode="EA">0</AvailableQuantity>
</ProductAvailability>
<ProductAvailability>
<Item>
<ItemID>
<ID>5678</ID>
</ItemID>
<SupplierItemID>
<ID>bar</ID>
</SupplierItemID>
<UPCID>foo</UPCID>
</Item>
<Facility>
<IDs>
<ID schemeName="warehouse">001</ID>
</IDs>
</Facility>
<AvailableQuantity unitCode="EA">174</AvailableQuantity>
</ProductAvailability>

Xml2 looks like
<ShowProductAvailability xmlns="http://www.openapplications.org/oagis/9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" languageCode="en-US" versionID="1.0" releaseID="1.0">
<ApplicationArea>
<CreationDateTime>11</CreationDateTime>
</ApplicationArea>
<DataArea>
<Show />
<ProductAvailability>
<Item>
<ItemID>
<ID>1234</ID>
</ItemID>
<SupplierItemID>
<ID>foo</ID>
</SupplierItemID>
<UPCID>bar</UPCID>
</Item>
<Facility>
<IDs>
<ID schemeName="warehouse">010</ID>
</IDs>
</Facility>
<AvailableQuantity unitCode="EA">2</AvailableQuantity>
</ProductAvailability>
<ProductAvailability>
<Item>
<ItemID>
<ID>5678</ID>
</ItemID>
<SupplierItemID>
<ID>bar</ID>
</SupplierItemID>
<UPCID>foo</UPCID>
</Item>
<Facility>
<IDs>
<ID schemeName="warehouse">011</ID>
</IDs>
</Facility>
<AvailableQuantity unitCode="EA">5</AvailableQuantity>
</ProductAvailability>

The xquery file looks like this
{
for $PurchaseOrderLine in doc('file:///c:/blah/TranslatedRequest.xml')PurchaseOrder/a:DataArea/a:PurchaseOrder/a:PurchaseOrderLine,$ProductAvailability in $input1/*:ShowProductAvailability/*:DataArea/*:ProductAvailability,$ProductAvailability in $input2/*:ShowProductAvailability/*:DataArea/*:ProductAvailability
return
<ResponseDetail>
<ItemLineNumber>
{$PurchaseOrderLine/a:LineNumber/text()}
</ItemLineNumber>
<DetailAvailability>
<DisplaySequence>1</DisplaySequence>
<DistributorLocationCode>
LOCAL
</DistributorLocationCode>
<DistributorLocationDescription>
LOCAL AVAILABILITY
</DistributorLocationDescription>
<AvailableQuantity>
{$ProductAvailability/*:AvailableQuantity/text()}
</AvailableQuantity>
<UnitOfMeasure>EA</UnitOfMeasure>
<PricePerUnitOfMeasure>
{$PurchaseOrderLine/a:UnitPrice/a:Amount/text()}
</PricePerUnitOfMeasure>
<DistributorLineItemNumber>
</DistributorLineItemNumber>
<DistributorOnOrderQuantity></DistributorOnOrderQuantity>
<OnOrderExpectedDueDate></OnOrderExpectedDueDate>
<Region></Region>
</DetailAvailability>
<DetailAvailability>
<DisplaySequence>2</DisplaySequence>
<DistributorLocationCode>
zb
</DistributorLocationCode>
<DistributorLocationDescription>
abc
</DistributorLocationDescription>
<AvailableQuantity>
{$ProductAvailability/*:AvailableQuantity/text()}
</AvailableQuantity>
<UnitOfMeasure>EA</UnitOfMeasure>
<PricePerUnitOfMeasure>
{$PurchaseOrderLine/a:UnitPrice/a:Amount/text()}
</PricePerUnitOfMeasure>
<DistributorLineItemNumber>
</DistributorLineItemNumber>
<DistributorOnOrderQuantity></DistributorOnOrderQuantity>
<OnOrderExpectedDueDate></OnOrderExpectedDueDate>
<Region></Region>
</DetailAvailability>
</ResponseDetail>

I used the same $ProductAvailability for different input sources , but the result produced shows content only from one incoming file and omits the other.How do i go about merging conntent from 2 separate files that have the same format into one using xquery?

Regards
Rajat

Postnext
rajat nairSubject: Using same Xquery
Author: rajat nair
Date: 13 Mar 2008 11:44 AM
I used
$ProductAvailability1 in $input1/*:ShowProductAvailability/*:DataArea/*:ProductAvailability
instead of
$ProductAvailability in $input1/*:ShowProductAvailability/*:DataArea/*:ProductAvailability
and it is grabbing data from both the xml files, but the problem now is there are repitions of the same content over and over, even though the number of ProductAvailability tags are same in both incoming xml files.

Regards
Rajat

Postnext
Minollo I.Subject: Using same Xquery
Author: Minollo I.
Date: 13 Mar 2008 11:48 AM
Your FLWOR loop is creating the cartesian products of three sequences... I suspect you want to create some condition in a "where" clause to control what sequences are actually iterating through.

Posttop
Minollo I.Subject: Using same Xquery
Author: Minollo I.
Date: 13 Mar 2008 11:46 AM
>I used the same $ProductAvailability for different input sources, but
>the result produced shows content only from one incoming file and
>omits the other.How do i go about merging conntent from 2 separate
>files that have the same format into one using xquery?

Variable names have nothing to do with what data they reference; you can have a variable called $ermenegildo that cotains a <ProductAvailability> element; you clearly want to use two different variables for each input:
...
$ProductAvailability1 in $input1/*:ShowProductAvailability/*:DataArea/*:ProductAvailability,
$ProductAvailability2 in $input2/*:ShowProductAvailability/*:DataArea/*:ProductAvailability

Any constraint on those inputs need to be expressed for both $ProductAvailability1 and $ProductAvailability2, of course.

   
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.