Subject: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
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?
Subject: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.
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.
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.