<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_1_1447574482703_3778"><span id="yui_3_16_0_1_1447574482703_3777">Thank you all for the reply.</span></div><div id="yui_3_16_0_1_1447574482703_3779"><span><br></span></div><div id="yui_3_16_0_1_1447574482703_3782"><span id="yui_3_16_0_1_1447574482703_3781">Just need one more modification to this.  In the input if the StartDate is blank, then I should consider that as the current job and return the job that has blank as the output. </span></div><div id="yui_3_16_0_1_1447574482703_3782"><span><br></span></div><div id="yui_3_16_0_1_1447574482703_3782"><span id="yui_3_16_0_1_1447574482703_4976">If there are no jobs which have startDate as blank, then it should return the recent startdate job (for which we already have the response as shown in email chain,,)</span></div><div id="yui_3_16_0_1_1447574482703_3782"><span><br></span></div><div id="yui_3_16_0_1_1447574482703_3782"><span id="yui_3_16_0_1_1447574482703_5346">For eg, in the below case, response should be the job element with id = 1: </span></div><div id="yui_3_16_0_1_1447574482703_3782" class=""><?xml version="1.0" encoding="UTF-8"?></div><div id="yui_3_16_0_1_1447574482703_3782" class=""><Request></div><div id="yui_3_16_0_1_1447574482703_3782" class="">   <SessionInfo></div><div id="yui_3_16_0_1_1447574482703_3782" class="">      <uid>qq</uid></div><div id="yui_3_16_0_1_1447574482703_3782" class="">      <pwd>qq</pwd></div><div id="yui_3_16_0_1_1447574482703_3782" class="">   </SessionInfo></div><div id="yui_3_16_0_1_1447574482703_3782" class="">   <Param></div><div id="yui_3_16_0_1_1447574482703_3782" class="">      <CustomerInfo></div><div id="yui_3_16_0_1_1447574482703_3782" class="">         <Contact></div><div id="yui_3_16_0_1_1447574482703_3782" class="">            <Number>123</Number></div><div id="yui_3_16_0_1_1447574482703_3782" class="">            <Name>aaa bbb</Name></div><div id="yui_3_16_0_1_1447574482703_3782" class="">            <Jobs></div><div id="yui_3_16_0_1_1447574482703_3782" class="">               <job></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                  <Name>Analyst</Name></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                  <Id>1</Id></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                  <StartDate></StartDate></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                  <EndDate>1</EndDate></div><div id="yui_3_16_0_1_1447574482703_3782" class="">               </job></div><div id="yui_3_16_0_1_1447574482703_3782" class="">               <job></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                  <Name>Programmer</Name></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                  <Id>2</Id></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                  <StartDate>08-31-2015</StartDate></div><div id="yui_3_16_0_1_1447574482703_3782" class="">                 <EndDate>2</EndDate></div><div id="yui_3_16_0_1_1447574482703_3782" class="">               </job></div><div id="yui_3_16_0_1_1447574482703_3782" class="">            </Jobs></div><div id="yui_3_16_0_1_1447574482703_3782" class="">         </Contact></div><div id="yui_3_16_0_1_1447574482703_3782" class="">      </CustomerInfo></div><div id="yui_3_16_0_1_1447574482703_3782" class="">   </Param></div><div id="yui_3_16_0_1_1447574482703_3782"></div><div id="yui_3_16_0_1_1447574482703_3782" dir="ltr" class=""></Request></div><div id="yui_3_16_0_1_1447574482703_3782"><span><br></span></div><div id="yui_3_16_0_1_1447574482703_3782"><span><br></span></div><div id="yui_3_16_0_1_1447574482703_3783"><br></div><br>  <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1447574482703_3788"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1447574482703_3787"> <div dir="ltr" id="yui_3_16_0_1_1447574482703_3786"> <hr size="1">  <font size="2" face="Arial" id="yui_3_16_0_1_1447574482703_3785"> <b><span style="font-weight:bold;">From:</span></b> Ghislain Fourny <g@28.io><br> <b><span style="font-weight: bold;">To:</span></b> Ronald Bourret <rpbourret@rpbourret.com> <br><b><span style="font-weight: bold;">Cc:</span></b> "talk@x-query.com" <talk@x-query.com>; sudheshna iyer <sudheshnaiyer@yahoo.com> <br> <b><span style="font-weight: bold;">Sent:</span></b> Tuesday, November 3, 2015 4:51 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [xquery-talk] Xquery : Sort and get only the first record<br> </font> </div> <div class="y_msg_container" id="yui_3_16_0_1_1447574482703_3994"><br><div id="yiv8406340536"><div id="yui_3_16_0_1_1447574482703_3993"><div dir="ltr" id="yui_3_16_0_1_1447574482703_3997"><span style="font-size:12.8px;">Hi Ronald,</span><div id="yui_3_16_0_1_1447574482703_5515"><span style="font-size:12.8px;"><br clear="none"></span></div><div id="yui_3_16_0_1_1447574482703_5517"><span style="font-size:12.8px;" id="yui_3_16_0_1_1447574482703_5516">You can also use a count clause if you have XQuery 3.0! It makes it easier to read. Like so:</span></div><div id="yui_3_16_0_1_1447574482703_4975"><span style="font-size:12.8px;"><br clear="none"></span></div>for $job in doc('x.xml')//job<br clear="none">order by xs:date(replace($job/StartDate, "(\d{2})-(\d{2})-(\d{4})", "$3-$1-$2")) descending<br clear="none">count $position<br clear="none">where $position eq 1<br clear="none">return $job<div id="yui_3_16_0_1_1447574482703_5011"><br clear="none"></div><div id="yui_3_16_0_1_1447574482703_3996">I hope it helps.<br clear="none"><div id="yui_3_16_0_1_1447574482703_5012"><br clear="none"></div><div id="yui_3_16_0_1_1447574482703_3998">Kind regards,</div><div id="yui_3_16_0_1_1447574482703_4974">Ghislain</div><div id="yui_3_16_0_1_1447574482703_3995"><br clear="none"></div></div></div><div class="yiv8406340536gmail_extra" id="yui_3_16_0_1_1447574482703_3992"><br clear="none"><div class="qtdSeparateBR"><br><br></div><div class="yiv8406340536yqt1763723886" id="yiv8406340536yqtfd00899"><div class="yiv8406340536gmail_quote" id="yui_3_16_0_1_1447574482703_4203">On Mon, Nov 2, 2015 at 6:27 PM, Ronald Bourret <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:rpbourret@rpbourret.com" target="_blank" href="mailto:rpbourret@rpbourret.com">rpbourret@rpbourret.com</a>></span> wrote:<br clear="none"><blockquote class="yiv8406340536gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;" id="yui_3_16_0_1_1447574482703_4202">Can't use just use a predicate that returns the first element in the sorted sequence? Something like:<br clear="none">
<br clear="none">
  let $seq = for $job in doc('x.xml')//job<span class="yiv8406340536" id="yui_3_16_0_1_1447574482703_4960"><br clear="none">
             order by<br clear="none">
                xs:date(replace($job/StartDate,<br clear="none">
                        "(\d{2})-(\d{2})-(\d{4})", "$3-$1-$2")<br clear="none">
                       ) descending<br clear="none">
             return $job<br clear="none"></span>
  return $seq[1]<br clear="none">
<br clear="none">
(My apologies if the syntax isn't exact. I haven't written an XQuery for quite a while.)<br clear="none">
<br clear="none">
-- Ron<br clear="none">
<br clear="none">
On 11/2/2015 5:53 AM, sudheshna iyer wrote:<br clear="none">
<blockquote class="yiv8406340536gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;" id="yui_3_16_0_1_1447574482703_4794">
Thank you very much, Christian. Let me try this..<br clear="none">
<br clear="none">
<br clear="none">
<br clear="none">
------------------------------------------------------------------------<br clear="none">
*From:* Christian GrĂ¼n <<a rel="nofollow" shape="rect" ymailto="mailto:christian.gruen@gmail.com" target="_blank" href="mailto:christian.gruen@gmail.com">christian.gruen@gmail.com</a>><br clear="none">
*To:* sudheshna iyer <<a rel="nofollow" shape="rect" ymailto="mailto:sudheshnaiyer@yahoo.com" target="_blank" href="mailto:sudheshnaiyer@yahoo.com">sudheshnaiyer@yahoo.com</a>><br clear="none">
*Cc:* "<a rel="nofollow" shape="rect" ymailto="mailto:talk@x-query.com" target="_blank" href="mailto:talk@x-query.com">talk@x-query.com</a>" <<a rel="nofollow" shape="rect" ymailto="mailto:talk@x-query.com" target="_blank" href="mailto:talk@x-query.com">talk@x-query.com</a>><br clear="none">
*Sent:* Sunday, November 1, 2015 4:26 PM<br clear="none">
*Subject:* Re: [xquery-talk] Xquery : Sort and get only the first record<span class="yiv8406340536"><br clear="none">
<br clear="none">
If your XQuery processor supports XQuery Update, this would be one solution:<br clear="none">
<br clear="none">
   copy $xml := doc('x.xml')<br clear="none">
   modify (<br clear="none">
     delete node subsequence(<br clear="none">
       for $job in $xml//job<br clear="none">
       order by xs:date(replace($job/StartDate,<br clear="none">
         "(\d{2})-(\d{2})-(\d{4})", "$3-$1-$2")<br clear="none">
       ) descending<br clear="none">
       return $job<br clear="none">
     , 2)<br clear="none">
   )<br clear="none">
   return $xml<br clear="none">
<br clear="none">
Best,<br clear="none">
Christian<br clear="none">
<br clear="none">
<br clear="none">
<br clear="none">
<br clear="none">
On Sun, Nov 1, 2015 at 8:51 PM, sudheshna iyer <<a rel="nofollow" shape="rect" ymailto="mailto:sudheshnaiyer@yahoo.com" target="_blank" href="mailto:sudheshnaiyer@yahoo.com">sudheshnaiyer@yahoo.com</a><br clear="none"></span><div><div class="yiv8406340536h5">
<mailto:<a rel="nofollow" shape="rect" ymailto="mailto:sudheshnaiyer@yahoo.com" target="_blank" href="mailto:sudheshnaiyer@yahoo.com">sudheshnaiyer@yahoo.com</a>>> wrote:<br clear="none">
 > Team,<br clear="none">
 ><br clear="none">
 > I have an xml which has multiple jobs elements. I want to sort the<br clear="none">
jobs and<br clear="none">
 > want to output only the latest job. Note that <EndDate> can be empty<br clear="none">
 > indicating that it is the current job.<br clear="none">
 ><br clear="none">
 > Basically I want to order by jobs/job/EndDate in descending fashion and<br clear="none">
 > select only the first record..<br clear="none">
 ><br clear="none">
 > How do I do that using xquery?<br clear="none">
 ><br clear="none">
 > Input request:<br clear="none">
 > <?xml version="1.0" encoding="UTF-8"?><br clear="none">
 > <Request><br clear="none">
 >  <SessionInfo><br clear="none">
 >      <uid>qq</uid><br clear="none">
 >      <pwd>qq</pwd><br clear="none">
 >  </SessionInfo><br clear="none">
 >  <Param><br clear="none">
 >      <CustomerInfo><br clear="none">
 >        <Contact><br clear="none">
 >            <Number>123</Number><br clear="none">
 >            <Name>aaa bbb</Name><br clear="none">
 >            <Jobs><br clear="none">
 >              <job><br clear="none">
 >                  <Name>Analyst</Name><br clear="none">
 >                  <Id>1</Id><br clear="none">
 >                  <StartDate>01-01-2015</StartDate><br clear="none">
 >                  <EndDate>08-30-2015</EndDate><br clear="none">
 >              </job><br clear="none">
 >              <job><br clear="none">
 >                  <Name>Programmer</Name><br clear="none">
 >                  <Id>2</Id><br clear="none">
 >                  <StartDate>08-31-2015</StartDate><br clear="none">
 >                  <EndDate /><br clear="none">
 >              </job><br clear="none">
 >            </Jobs><br clear="none">
 >        </Contact><br clear="none">
 >      </CustomerInfo><br clear="none">
 >  </Param><br clear="none">
 > </Request><br clear="none">
 ><br clear="none">
 > Expected output:<br clear="none">
 ><br clear="none">
 > <?xml version="1.0" encoding="UTF-8"?><br clear="none">
 > <Request><br clear="none">
 >  <SessionInfo><br clear="none">
 >      <uid>qq</uid><br clear="none">
 >      <pwd>qq</pwd><br clear="none">
 >  </SessionInfo><br clear="none">
 >  <Param><br clear="none">
 >      <CustomerInfo><br clear="none">
 >        <Contact><br clear="none">
 >            <Number>123</Number><br clear="none">
 >            <Name>aaa bbb</Name><br clear="none">
 >            <Jobs><br clear="none">
 >              <job><br clear="none">
 >                  <Name>Programmer</Name><br clear="none">
 >                  <Id>2</Id><br clear="none">
 >                  <StartDate>08-31-2015</StartDate><br clear="none">
 >                  <EndDate/><br clear="none">
 >              </job><br clear="none">
 >            </Jobs><br clear="none">
 >        </Contact><br clear="none">
 >      </CustomerInfo><br clear="none">
 >  </Param><br clear="none">
 > </Request><br clear="none">
 ><br clear="none">
 > Your help is greatly appreciated.<br clear="none">
<br clear="none">
 ><br clear="none">
 ><br clear="none">
 ><br clear="none">
 ><br clear="none">
 > _______________________________________________<br clear="none"></div></div>
 > <a rel="nofollow" shape="rect" ymailto="mailto:talk@x-query.com" target="_blank" href="mailto:talk@x-query.com">talk@x-query.com</a> <mailto:<a rel="nofollow" shape="rect" ymailto="mailto:talk@x-query.com" target="_blank" href="mailto:talk@x-query.com">talk@x-query.com</a>><span class="yiv8406340536"><br clear="none">
 > <a rel="nofollow" shape="rect" target="_blank" href="http://x-query.com/mailman/listinfo/talk">http://x-query.com/mailman/listinfo/talk</a><br clear="none">
<br clear="none">
<br clear="none">
<br clear="none">
<br clear="none">
<br clear="none">
_______________________________________________<br clear="none">
<a rel="nofollow" shape="rect" ymailto="mailto:talk@x-query.com" target="_blank" href="mailto:talk@x-query.com">talk@x-query.com</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="http://x-query.com/mailman/listinfo/talk">http://x-query.com/mailman/listinfo/talk</a><br clear="none">
<br clear="none">
</span></blockquote>
<br clear="none">
---<br clear="none">
This email has been checked for viruses by Avast antivirus software.<br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://www.avast.com/antivirus">https://www.avast.com/antivirus</a><br clear="none">
<br clear="none">
_______________________________________________<br clear="none">
<a rel="nofollow" shape="rect" ymailto="mailto:talk@x-query.com" target="_blank" href="mailto:talk@x-query.com">talk@x-query.com</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="http://x-query.com/mailman/listinfo/talk">http://x-query.com/mailman/listinfo/talk</a><br clear="none">
</blockquote></div><br clear="none"></div></div></div></div><br><div class="yqt1763723886" id="yqtfd09589">_______________________________________________<br clear="none"><a shape="rect" ymailto="mailto:talk@x-query.com" href="mailto:talk@x-query.com">talk@x-query.com</a><br clear="none"><a shape="rect" href="http://x-query.com/mailman/listinfo/talk" target="_blank">http://x-query.com/mailman/listinfo/talk</a></div><br><br></div> </div> </div>  </div></body></html>