Hi Pragya,
Please find the below xquery code and hope it will work fine for you . You can
tune it further :)
declare function local:get-xml($xml){let $result := for $each in $xml/* return
if($each/*/text()) then ( $each
) else if($each//*/text()) then (
element {fn:local-name($each)} {
local:get-xml($each) } ) else () return
$result };
let $xml := <report> <columns> <title>Currency</title> </columns>
<results> <result> <Currency/> </result>
<result> <Currency/> </result> <result>
<Currency/> </result> <result> <Currency>Pound
sterling</Currency> </result> <result> <Currency/>
</result> <result> <Currency>Pound sterling</Currency>
</result> </results></report> return element {fn:local-name($xml)} {
local:get-xml($xml)}
On Friday, 27 March 2015 6:56 PM,
"[email protected]"
<[email protected]> wrote:
Send General mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://developer.marklogic.com/mailman/listinfo/general
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of General digest..."
Today's Topics:
1. Empty Results (Kapoor, Pragya)
2. Re: Empty Results (Dave Cassel)
3. Re: Empty Results (Indrajeet Verma)
----------------------------------------------------------------------
Message: 1
Date: Fri, 27 Mar 2015 11:53:09 +0000
From: "Kapoor, Pragya" <[email protected]>
Subject: [MarkLogic Dev General] Empty Results
To: MarkLogic Developer Discussion <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset="iso-8859-1"
Hi,
I want to remove the empty result element from the dynamic xml.
For example:
In the below xml, I want to exclude the element(which has no values) The
element name are not fixed as this xml is dynamically created.
Exclude the below exlemnt
<result>
<Currency/>
</result>
dynamic.xml:
<report>
<columns>
<title>Currency</title>
</columns>
<results>
<result>
<Currency/>
</result>
<result>
<Currency/>
</result>
<result>
<Currency/>
</result>
<result>
<Currency>Pound sterling</Currency>
</result>
<result>
<Currency/>
</result>
<result>
<Currency>Pound sterling</Currency>
</result>
</results>
</report>
Excepted output:
<report>
<columns>
<title>Currency</title>
</columns>
<results>
? <Currency>Pound sterling</Currency>
</result>
<result>
<Currency>Pound sterling</Currency>
</result>
</results>
</report>
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."
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://developer.marklogic.com/pipermail/general/attachments/20150327/a89247fa/attachment-0001.html
------------------------------
Message: 2
Date: Fri, 27 Mar 2015 12:13:04 +0000
From: Dave Cassel <[email protected]>
Subject: Re: [MarkLogic Dev General] Empty Results
To: MarkLogic Developer Discussion <[email protected]>
Message-ID: <d13ac0e2.acfa5%[email protected]>
Content-Type: text/plain; charset="utf-8"
Pragya, you can do that using XSL or recursive descent in
XQuery<http://blog.davidcassel.net/2014/01/recursive-descent-in-xquery/>. The
typeswitch case would look something like:
case element() return
let $children := $node/node() ! local:change(.)
return
if (fn:exists($children)) then
element { fn:node-name($node) } {
$node/@*,
$children
}
else ()
?
--
Dave Cassel
Developer Community Manager
MarkLogic Corporation<http://www.marklogic.com/>
MarkLogic World - San Francisco April 13 -
17<http://world.marklogic.com/locations/san-francisco/>
From: <Kapoor>, Pragya <[email protected]<mailto:[email protected]>>
Reply-To: MarkLogic Developer Discussion
<[email protected]<mailto:[email protected]>>
Date: Friday, March 27, 2015 at 7:53 AM
To: MarkLogic Developer Discussion
<[email protected]<mailto:[email protected]>>
Subject: [MarkLogic Dev General] Empty Results
Hi,
I want to remove the empty result element from the dynamic xml.
For example:
In the below xml, I want to exclude the element(which has no values) The
element name are not fixed as this xml is dynamically created.
Exclude the below exlemnt
<result>
<Currency/>
</result>
dynamic.xml:
<report>
<columns>
<title>Currency</title>
</columns>
<results>
<result>
<Currency/>
</result>
<result>
<Currency/>
</result>
<result>
<Currency/>
</result>
<result>
<Currency>Pound sterling</Currency>
</result>
<result>
<Currency/>
</result>
<result>
<Currency>Pound sterling</Currency>
</result>
</results>
</report>
Excepted output:
<report>
<columns>
<title>Currency</title>
</columns>
<results>
? <Currency>Pound sterling</Currency>
</result>
<result>
<Currency>Pound sterling</Currency>
</result>
</results>
</report>
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."
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://developer.marklogic.com/pipermail/general/attachments/20150327/c82f257a/attachment-0001.html
------------------------------
Message: 3
Date: Fri, 27 Mar 2015 18:56:13 +0530
From: Indrajeet Verma <[email protected]>
Subject: Re: [MarkLogic Dev General] Empty Results
To: MarkLogic Developer Discussion <[email protected]>
Message-ID:
<cakwhaeiohsbad6bxo2bq841epwq2kxb8njs7-ngmmdyj-us...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Hi Pragya,
If you are using XSLT, please try below code and see if this helps,
<xsl:template match="@*|node()">
<xsl:choose>
<xsl:when test="descendant-or-self::text()[normalize-space(.)
ne '']">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:template>
Thank you!
On Fri, Mar 27, 2015 at 5:43 PM, Dave Cassel <[email protected]>
wrote:
> Pragya, you can do that using XSL or recursive descent in XQuery
> <http://blog.davidcassel.net/2014/01/recursive-descent-in-xquery/>. The
> typeswitch case would look something like:
>
> case element() return
> let $children := $node/node() ! local:change(.)
> return
> if (fn:exists($children)) then
> element { fn:node-name($node) } {
> $node/@*,
> $children
> }
> else ()
> ?
>
> --
> Dave Cassel
> Developer Community Manager
> MarkLogic Corporation <http://www.marklogic.com/>
> MarkLogic World - San Francisco April 13 - 17
> <http://world.marklogic.com/locations/san-francisco/>
>
>
> From: <Kapoor>, Pragya <[email protected]>
> Reply-To: MarkLogic Developer Discussion <[email protected]>
> Date: Friday, March 27, 2015 at 7:53 AM
> To: MarkLogic Developer Discussion <[email protected]>
> Subject: [MarkLogic Dev General] Empty Results
>
> Hi,
>
>
> I want to remove the empty result element from the dynamic xml.
>
>
> For example:
>
> In the below xml, I want to exclude the element(which has no values) The
> element name are not fixed as this xml is dynamically created.
>
>
> Exclude the below exlemnt
> <result>
> <Currency/>
> </result>
>
> dynamic.xml:
> <report>
> <columns>
> <title>Currency</title>
> </columns>
> <results>
> <result>
> <Currency/>
> </result>
> <result>
> <Currency/>
> </result>
> <result>
> <Currency/>
> </result>
> <result>
> <Currency>Pound sterling</Currency>
> </result>
> <result>
> <Currency/>
> </result>
> <result>
> <Currency>Pound sterling</Currency>
> </result>
> </results>
> </report>
>
>
> Excepted output:
>
> <report>
> <columns>
> <title>Currency</title>
> </columns>
> <results>
> ? <Currency>Pound sterling</Currency>
> </result>
> <result>
> <Currency>Pound sterling</Currency>
> </result>
> </results>
> </report>
>
> 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."
>
>
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://developer.marklogic.com/pipermail/general/attachments/20150327/d2cffd7c/attachment.html
------------------------------
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general
End of General Digest, Vol 129, Issue 56
****************************************
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general