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
Show tree view Topic
Go to previous topicPrev TopicGo to next topicNext 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.

 
Go to previous topicPrev TopicGo to next topicNext Topic
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.