Well, I dont need to reiterate the usefulness of Xquery when it comes to OSB development. This is one of the few good XML technologies which i find amazing for XML processing and transformations but it is equally neglected as well. It needs to evolve as a programming language. As a matter of fact, I have found it lacking of so many things that are so critical sometimes.
During one of my transformation exercises I was supposed to handle date conversions in Xquery. The problem with using Xquery was that if any of the date formats comes wrong this would lead to an error in my Xquery and it will be aborted. However in my case what i needed to do was simply send a null/empty value in date field if the conversion failed for any reason. Miserable situation if we have only Xquery.
BEA came up with an extension for XQuery called XQSE (Read XQuery Scripting Extension) to use more programmatic blocks in Xquery. Here is an example
The above xqse function allows us to surround our xquery with a try catch block. This is extremely useful for the case i explained above.
During one of my transformation exercises I was supposed to handle date conversions in Xquery. The problem with using Xquery was that if any of the date formats comes wrong this would lead to an error in my Xquery and it will be aborted. However in my case what i needed to do was simply send a null/empty value in date field if the conversion failed for any reason. Miserable situation if we have only Xquery.
BEA came up with an extension for XQuery called XQSE (Read XQuery Scripting Extension) to use more programmatic blocks in Xquery. Here is an example
declare xqse function xf:CreateDateTimeFromString($DateTime as xs:string?)
as xs:dateTime? {
try{
if(fn:string-length($DateTime)>8) then
return value ( xs:dateTime(fn:concat (fn:substring($DateTime,1,4),'-',fn:substring($DateTime,5,2),'-', fn:substring($DateTime,7,2),'T',
fn:substring($DateTime,9,2),':',fn:substring($DateTime,11,2),':',fn:substring($DateTime,13,2)))) ;
return value (xs:dateTime(fn:concat(fn:substring($DateTime,1,4),'-',fn:substring($DateTime,5,2),'-', fn:substring($DateTime,7,2),'T','00:00:00')));
}catch (* into $err, $msg) {
return value () ;
};
};
The above xqse function allows us to surround our xquery with a try catch block. This is extremely useful for the case i explained above.
No comments:
Post a Comment