Hi Pragya,

Below xslt script may help you.


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
exclude-result-prefixes="xs" version="2.0">

            <xsl:output method="xml"/>


            <xsl:template match="results">
                        <results>
                                    <xsl:apply-templates/>
                        </results>
            </xsl:template>


            <xsl:template match="result">

                        <xsl:apply-templates select="Name"/>

            </xsl:template>

            <xsl:template match="Name">
                        <xsl:variable name="law" select=
"following-sibling::Law"/>
                        <xsl:variable name="name" select="."/>

                        <xsl:for-each select="following-sibling::Law">
                                    <result>
                                                <name>
                                                            <xsl:value-of
select="$name"/>
                                                </name>
                                                <Law>
                                                            <xsl:value-of
select="."/>
                                                </Law>
                                    </result>
                        </xsl:for-each>

            </xsl:template>

</xsl:stylesheet>



Regards,
Arvind Kr.





On Fri, May 15, 2015 at 4:13 PM, Kapoor, Pragya <[email protected]>
wrote:

>  Hi Raja,
>
>
>  The name structure is not mandatory. none of the element is mandatory.
>
> <results>
>
>                 <result>
>
>                                 <a></a>
>
>                                 <a></a>  ------ <Name>
>
>                                 <b></b> ------ <Law>
>
>                                 <c></c> ------- <LEI>
>
>                 <result>
>
> </results>
>
>  or
>
>
>  <results>
>
>                 <result>
>
>                                 <a></a>
>
>                                 <a></a>  ------ <City>
>
>                                 <b></b> ------ <Law>
>
>                                 <c></c> ------- <LEI>
>
>                 <result>
>
> </results>​
>
> or
>
>
>  <results>
>
>                 <result>
>
>                                 <a></a>  ------ <City>
>
>                                 <a></a>  ------ <City>
>
>                                 <b></b> ------ <Law>
>
>                                 <b></b> ------ <Law>
>
>                                 <c></c> ------- <LEI>
>
>                                 <c></c>-----<LEI>
>
>
>
>                 <result>
>
> </results>​​
>
>  an so on...
>
>
>  ------------------------------
> *From:* [email protected] <
> [email protected]> on behalf of
> [email protected] <[email protected]>
> *Sent:* Friday, May 15, 2015 3:58 PM
>
> *To:* [email protected]
> *Subject:* Re: [MarkLogic Dev General] query on xml
>
>
> 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] <
> [email protected]> on behalf of Indrajeet Verma <
> [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]>
> 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] <
> [email protected]> on behalf of
> [email protected] <[email protected]>
> *Sent:* Thursday, May 14, 2015 3:05 PM
>
>
> *To:* [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]] *On Behalf Of *Kapoor, Pragya
> *Sent:* Thursday, May 14, 2015 2:56 PM
> *To:* [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] <
> [email protected]> on behalf of
> [email protected] <[email protected]>
> *Sent:* Thursday, May 14, 2015 1:39 PM
> *To:* [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]
> <[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]
> 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.
>  "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]
> Manage your subscription at:
> http://developer.marklogic.com/mailman/listinfo/general
>
>
_______________________________________________
General mailing list
[email protected]
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to