Here is the Code.
xquery version "1.0-ml";
declare function local:is-node-in-sequence
( $node as node()*,
$seq as xs:integer) as xs:boolean
{
some $nodeInSeq in $node[$seq - 1] satisfies $nodeInSeq eq $node[$seq]
} ;
declare function local:distinct-nodes ($nodes as node()* ) as node()*
{
for $seq in (1 to count($nodes))
return
(
$nodes[$seq][fn:not(local:is-node-in-sequence($nodes,$seq))]
)
};
<Collections>
{
for $Collection in (
<Collections>
<Collection No="0004157">
<Document Date="2014-09-24" Type="ABC">
<Counterparties>
<Counterparty ClonedCollection="0004157" Name="xcfty"
Status="Active"/>
<Counterparty ClonedCollection="0004157" Name="ekff"
Status="Active"/>
<Counterparty ClonedCollection="0004157" Name="fusifufj"
Status="Active"/>
<Counterparty ClonedCollection="0004157" Name="CAdww"
Status="Active"/>
</Counterparties>
</Document>
<Document Date="2014-09-24" Type="ABC">
<Counterparties>
<Counterparty ClonedCollection="0014157" Name="abaheue"
Status="Active"/>
</Counterparties>
</Document>
<Document Date="2014-09-24" Type="ABC">
<Counterparties>
<Counterparty ClonedCollection="0024157" Name="ytrgebsd"
Status="Active"/>
</Counterparties>
</Document>
<Document Date="2015-02-25" Type="XYZ">
<Counterparties>
<Counterparty ClonedCollection="0004157" Name="rtryy"
Status="Active"/>
<Counterparty ClonedCollection="0004157" Name="gdgdgdg"
Status="Active"/>
<Counterparty ClonedCollection="0004157" Name="rryrhjtj"
Status="Active"/>
<Counterparty ClonedCollection="0004157" Name="dgdgdgdg"
Status="Active"/>
</Counterparties>
</Document>
<Document Date="2015-02-25" Type="XYZ">
<Counterparties>
<Counterparty ClonedCollection="0014157" Name="gggdgd"
Status="Active"/>
</Counterparties>
</Document>
<Document Date="2015-02-25" Type="XYZ">
<Counterparties>
<Counterparty ClonedCollection="0024157" Name="bcbbccbb"
Status="Active"/>
</Counterparties>
</Document>
</Collection>
<Collection No="0004302">
<Document Date="2014-11-10" Type="ABC">
<Counterparties>
<Counterparty ClonedCollection="0004302" Name="Invesco Active
Multi-Sector Credit Fund, a sub-fund of Invesco Funds" Status="Active"/>
<Counterparty ClonedCollection="0004302" Name="Invesco Asia
Balanced Fund, a sub-fund of Invesco Funds" Status="Active"/>
</Counterparties>
</Document>
<Document Date="2014-11-10" Type="ABC">
<Counterparties>
<Counterparty ClonedCollection="0014302" Name="Invesco Active
Multi-Sector Credit Fund, a sub-fund of Invesco Funds" Status="Active"/>
</Counterparties>
</Document>
</Collection>
</Collections>
)/Collection
return
(
<Collection>
{ $Collection/@No,
for $Dstnct_Attr in local:distinct-nodes(
for $Doc in $Collection/Document
order by $Doc/@Date, $Doc/@Type
return
(
<attr>
<dt>
{$Doc/@Date/string()}
</dt>
<tp>
{$Doc/@Type/string()}
</tp>
</attr>
)
)
return
(
<Document Date="{$Dstnct_Attr/dt/text()}" Type="{$Dstnct_Attr/tp/text()}">
{
(
<Counterparties>
{$Collection/Document[./@Date/string() eq
$Dstnct_Attr/dt/text()][./@Type/string() eq
$Dstnct_Attr/tp/text()]/Counterparties/Counterparty}
</Counterparties>
)
}
</Document>
)
}
</Collection>
)
}
</Collections>
And here is the Output:
<Collections>
<Collection No="0004157">
<Document Date="2014-09-24" Type="ABC">
<Counterparties>
<Counterparty ClonedCollection="0004157" Name="xcfty" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0004157" Name="ekff" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0004157" Name="fusifufj" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0004157" Name="CAdww" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0014157" Name="abaheue" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0024157" Name="ytrgebsd" Status="Active">
</Counterparty>
</Counterparties>
</Document>
<Document Date="2015-02-25" Type="XYZ">
<Counterparties>
<Counterparty ClonedCollection="0004157" Name="rtryy" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0004157" Name="gdgdgdg" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0004157" Name="rryrhjtj" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0004157" Name="dgdgdgdg" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0014157" Name="gggdgd" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0024157" Name="bcbbccbb" Status="Active">
</Counterparty>
</Counterparties>
</Document>
</Collection>
<Collection No="0004302">
<Document Date="2014-11-10" Type="ABC">
<Counterparties>
<Counterparty ClonedCollection="0004302" Name="Invesco Active Multi-Sector
Credit Fund, a sub-fund of Invesco Funds" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0004302" Name="Invesco Asia Balanced Fund, a
sub-fund of Invesco Funds" Status="Active">
</Counterparty>
<Counterparty ClonedCollection="0014302" Name="Invesco Active Multi-Sector
Credit Fund, a sub-fund of Invesco Funds" Status="Active">
</Counterparty>
</Counterparties>
</Document>
</Collection>
</Collections>
Thanks,
Ashish S Vaidya,
Data Classification : For Internal Use Only
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Florent Georges
Sent: Thursday, February 25, 2016 5:03 AM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] Xquery
On 25 February 2016 at 11:34, Kapoor, Pragya wrote:
> To be honest , I am still trying to get this output, but unable to get it.
> So, needed help.
It's always a good idea to help people to help you. A few points to get better
answers quicker:
- give a small example, showing clearly and only the problem
- explain your requirements (how to get from input to output)
- show what you tried, and corresponding output or error
- explain why the output you get is wrong, and what you cannot achieve
Usually, if you can get a small, clear, self-contained, reproducible example,
people will spot the problem straight away and you will get an answer quickly.
Size does matter! The smaller the example, the better :-)
In your case, the example input and output are not enough to guess what you are
trying to achieve and why you cannot achieve it.
PS: Just found this, which might explain better what I am trying to
say:
https://urldefense.proofpoint.com/v2/url?u=http-3A__stackoverflow.com_help_mcve&d=BQICAg&c=wluqKIiwffOpZ6k5sqMWMBOn0vyYnlulRJmmvOXCFpM&r=T9iTCnfsVIch-YNC2m4qxrhgtcjJ-j63_M6HVuAi-oY&m=5cJTxwzMpvIUvJc8EWDxNsrNx6vV2s9Um90AfE_r5cc&s=hoCUT5pzZ5IAiL2vkJw2VapwLLRd17HRUJ9sE7xoo7U&e=
Regards,
--
Florent Georges
https://urldefense.proofpoint.com/v2/url?u=http-3A__fgeorges.org_&d=BQICAg&c=wluqKIiwffOpZ6k5sqMWMBOn0vyYnlulRJmmvOXCFpM&r=T9iTCnfsVIch-YNC2m4qxrhgtcjJ-j63_M6HVuAi-oY&m=5cJTxwzMpvIUvJc8EWDxNsrNx6vV2s9Um90AfE_r5cc&s=BprsxM_flEJtGaoXHbP9iXY9GDAscAomE0T1g1S57Io&e=
https://urldefense.proofpoint.com/v2/url?u=http-3A__h2oconsulting.be_&d=BQICAg&c=wluqKIiwffOpZ6k5sqMWMBOn0vyYnlulRJmmvOXCFpM&r=T9iTCnfsVIch-YNC2m4qxrhgtcjJ-j63_M6HVuAi-oY&m=5cJTxwzMpvIUvJc8EWDxNsrNx6vV2s9Um90AfE_r5cc&s=TDcHNJQ9N9Ky-nhOq3zE7_HAgXAy1cRnk8-qZgX6t50&e=
_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
https://urldefense.proofpoint.com/v2/url?u=http-3A__developer.marklogic.com_mailman_listinfo_general&d=BQICAg&c=wluqKIiwffOpZ6k5sqMWMBOn0vyYnlulRJmmvOXCFpM&r=T9iTCnfsVIch-YNC2m4qxrhgtcjJ-j63_M6HVuAi-oY&m=5cJTxwzMpvIUvJc8EWDxNsrNx6vV2s9Um90AfE_r5cc&s=OYuVUo5ENwk9HRjIDlh-1hTs8ZgziZLKgITyMjDd9kE&e=
This e-mail may contain confidential or privileged information. If you think
you have received this e-mail in error, please advise the sender by reply
e-mail and then delete this e-mail immediately. Thank you. Aetna
_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general