Hi Pragya,
The ‘n’ number of elements in result means – like below structure
<results>
<result>
<a></a>
<a></a> ------ <Name>
<b></b> ------ <Law>
<c></c> ------- <LEI>
<result>
</result>
Am not able to understand , because in below xml also you have only two
combinations . IS <name> element is mandatory?
Thanks and regards
Raja >>>
From: [email protected]
[mailto:[email protected]] On Behalf Of Kapoor, Pragya
Sent: Friday, May 15, 2015 9:35 AM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] query on xml
Thanks Indy.
But, The input <result> could have 'n' number of dynamic elements.
________________________________
From:
[email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
on behalf of Indrajeet Verma
<[email protected]<mailto:[email protected]>>
Sent: Thursday, May 14, 2015 6:16 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] query on xml
Pragya,
See if below code works for you.
If your input <result> can contain only two elements combination, Try below
code changes in Raja's code,
declare function local:transform($result as node()){
let $elements := fn:distinct-values($result/child::*/name(.))
for $token_one in $result/*[name(.) eq ($elements)[1]], $token_two in
$result/*[name(.) eq ($elements)[2]]
return <result>{($token_one,$token_two)}</result>
};
Regards,
Indy
On Thu, May 14, 2015 at 4:42 PM, Kapoor, Pragya
<[email protected]<mailto:[email protected]>> wrote:
Yes Raja, I mean two or more elements other than name and law.
So my input xml could be:
<results>
<result>
<Name>thg</Name>
<LEI>rty</LEI>
</result>
<result>
<Name>gux</Name>
<LEI>rty</LEI>
</result>
<result>
<Name>abc</Name>
<Name>xyz</Name>
<Name>cde</Name>
<LEI>fgd</LEI>
</result>
</results>
________________________________
From:
[email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
on behalf of
[email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
Sent: Thursday, May 14, 2015 3:05 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: [MarkLogic Dev General] query on xml
Hi Pragya,
You meant, you will get some other element than “ name” and “Law” ? If that is
not a case and will get these two elements with different count then will use
the same code.
Thanks and regards
Raja >>>
From:
[email protected]<mailto:[email protected]>
[mailto:[email protected]<mailto:[email protected]>]
On Behalf Of Kapoor, Pragya
Sent: Thursday, May 14, 2015 2:56 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: [MarkLogic Dev General] query on xml
Thanks for the solution, but as mentioned in my previous mail,
the elements in input xml are dynamic, so I cant use
for $name in $result/Name, $law in $result/Law
return <result>{($name,$law)}</result>
Thanks
Pragya
________________________________
From:
[email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
on behalf of
[email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
Sent: Thursday, May 14, 2015 1:39 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: [MarkLogic Dev General] query on xml
Hi Pragya,
Following code should give the expected result ,
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare function local:transform($result as node()){
for $name in $result/Name, $law in $result/Law
return <result>{($name,$law)}</result>
};
let $data := <results>
<result>
<Name>thg</Name>
<Name>rty</Name>
<Law>England and Wales</Law>
<Law>Latvia</Law>
</result>
<result>
<Name>gux</Name>
<Law>India</Law>
</result>
<result>
<Name>abc</Name>
<Name>xyz</Name>
<Name>cde</Name>
<Law>England</Law>
</result>
</results>
let $result :=<results>{ for $result in $data/result
return local:transform($result)
}</results>
return $result
Thanks and regards
Raja >>>
From:
[email protected]<mailto:[email protected]>
[mailto:[email protected]] On Behalf Of Kapoor, Pragya
Sent: Thursday, May 14, 2015 1:05 PM
To: MarkLogic Developer Discussion
Subject: [MarkLogic Dev General] query on xml
Hi,
I need to convert the below input to the desired output.
The elements in the input xml is dynamic(it could be one element,two,three n so
on, not fixed).
Input:
<results>
<result>
<Name>thg</Name>
<Name>rty</Name>
<Law>England and Wales</Law>
<Law>Latvia</Law>
</result>
<result>
<Name>gux</Name>
<Law>India</Law>
</result>
<result>
<Name>abc</Name>
<Name>xyz</Name>
<Name>cde</Name>
<Law>England</Law>
</result>
</results>
desired output:
<results>
<result>
<Name>thg</Name>
<Law>England and Wales</Law></result>
<result>
<Name>thg</Name>
<Law>Latvia</Law></result>
<result>
<Name>rty</Name>
<Law>England and Wales</Law></result>
<result>
<Name>rty</Name>
<Law>Latvia</Law></result>
<result>
<Name>gux</Name>
<Law>India</Law>
</result>
<result>
<Name>abc</Name>
<Law>England</Law>
</result>
<result>
<Name>xyz</Name>
<Law>England</Law>
</result>
<result>
<Name>cde</Name>
<Law>England</Law>
</result>
</results>
Thanks
Pragya
"This e-mail and any attachments transmitted with it are for the sole use of
the intended recipient(s) and may contain confidential , proprietary or
privileged information. If you are not the intended recipient, please contact
the sender by reply e-mail and destroy all copies of the original message. Any
unauthorized review, use, disclosure, dissemination, forwarding, printing or
copying of this e-mail or any action taken in reliance on this e-mail is
strictly prohibited and may be unlawful."
This e-mail and any files transmitted with it are for the sole use of the
intended recipient(s) and may contain confidential and privileged information.
If you are not the intended recipient(s), please reply to the sender and
destroy all copies of the original message. Any unauthorized review, use,
disclosure, dissemination, forwarding, printing or copying of this email,
and/or any action taken in reliance on the contents of this e-mail is strictly
prohibited and may be unlawful. Where permitted by applicable law, this e-mail
and other e-mail communications sent to and from Cognizant e-mail addresses may
be monitored.
"This e-mail and any attachments transmitted with it are for the sole use of
the intended recipient(s) and may contain confidential , proprietary or
privileged information. If you are not the intended recipient, please contact
the sender by reply e-mail and destroy all copies of the original message. Any
unauthorized review, use, disclosure, dissemination, forwarding, printing or
copying of this e-mail or any action taken in reliance on this e-mail is
strictly prohibited and may be unlawful."
This e-mail and any files transmitted with it are for the sole use of the
intended recipient(s) and may contain confidential and privileged information.
If you are not the intended recipient(s), please reply to the sender and
destroy all copies of the original message. Any unauthorized review, use,
disclosure, dissemination, forwarding, printing or copying of this email,
and/or any action taken in reliance on the contents of this e-mail is strictly
prohibited and may be unlawful. Where permitted by applicable law, this e-mail
and other e-mail communications sent to and from Cognizant e-mail addresses may
be monitored.
"This e-mail and any attachments transmitted with it are for the sole use of
the intended recipient(s) and may contain confidential , proprietary or
privileged information. If you are not the intended recipient, please contact
the sender by reply e-mail and destroy all copies of the original message. Any
unauthorized review, use, disclosure, dissemination, forwarding, printing or
copying of this e-mail or any action taken in reliance on this e-mail is
strictly prohibited and may be unlawful."
_______________________________________________
General mailing list
[email protected]<mailto:[email protected]>
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general
"This e-mail and any attachments transmitted with it are for the sole use of
the intended recipient(s) and may contain confidential , proprietary or
privileged information. If you are not the intended recipient, please contact
the sender by reply e-mail and destroy all copies of the original message. Any
unauthorized review, use, disclosure, dissemination, forwarding, printing or
copying of this e-mail or any action taken in reliance on this e-mail is
strictly prohibited and may be unlawful."
This e-mail and any files transmitted with it are for the sole use of the
intended recipient(s) and may contain confidential and privileged information.
If you are not the intended recipient(s), please reply to the sender and
destroy all copies of the original message. Any unauthorized review, use,
disclosure, dissemination, forwarding, printing or copying of this email,
and/or any action taken in reliance on the contents of this e-mail is strictly
prohibited and may be unlawful. Where permitted by applicable law, this e-mail
and other e-mail communications sent to and from Cognizant e-mail addresses may
be monitored.
_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general