Saturday, January 16, 2010

Embedding XQuery in Java

XQuery is a very powerful language. It can be very useful when you want to do some XML processing in Java.
Let's say you want to create an XML document based on some other XML data. Given something like this:
<employees>
  <employee>
    <name>Fred Jones</name>
    <address location="home">
      <street>900 Aurora Ave.</street>
      <city>Seattle</city>
      <state>WA</state>
      <zip>98115</zip>
    </address>
    <address location="work">
      <street>2011 152nd Avenue NE</street>
      <city>Redmond</city>
      <state>WA</state>
      <zip>98052</zip>
    </address>
    <phone location="work">(425)555-5665</phone>
    <phone location="home">(206)555-5555</phone>
    <phone location="mobile">(206)555-4321</phone>
  </employee>
 </employees>

You want to produce employees' names:
<names>
  <name>Fred Jones</name>
</names>

In XQuery it's just as easy as:
<names>
  {for $name in employees/employee/name/text() return <name>{$name}</name>}
</names>

The most interesting advantage for XQuery over various other methods for generating XML is that XQuery operates natively on XML.
There are tools like JaxB, XmlBeans, which enable strongly typed XML building directly from Java code. But using such approach often requires a lot of Java code to be written, which is not really necessary.
There is also a possibility to use XPath. However it's an inferior solution to XQuery, because XPath doesn't provide a way for building XML documents. It's designed only for nodes selection. On the other hand, XQuery extends XPath, so it supports every construct that XPath does.
Another way to do such processing in Java is to use XSLT. It's the closest approach to XQuery. But the problem with XSLT is that it has its language constructs, like 'for' expressed as XML elements. This makes writing XSLT code much more difficult that XQuery.
XQuery can be seen as a native template language for XML processing.
So the question is: how to evaluate XQuery expressions the best way from Java?
There are some Open Source implementations of XQuery for Java. One of them is inside XmlBeans. However in my opinion the best way is to use Saxon. It's the most mature project for XQuery processing and it's targetted directly for doing that.
However Saxon might be a bit difficult to use directly. At least digging a few interesting features from it took me some time.
So I decided to write a simple class for interfacing Saxon and to provide a few interesting examples of how to use it. That's how xquery4j was born. You can download it from github http://github.com/rafalrusin/xquery4j.
In xquery4j, you can execute XQuery expressions from Java in a simple way:
XQueryEvaluator evaluator = new XQueryEvaluator();
Long result = (Long) evaluator.evaluateExpression("5+5", null).get(0);
Assert.assertEquals(new Long(10), result);

It's possible to bind variables from Java objects, the easy way:
evaluator.bindVariable(QName.valueOf("myVar"), 123);

Sometimes it's also useful to declare Java methods and bind them for XQuery expressions. This is also very simple to do with xquery4j:
public static class MyFunctions {
        public static String myHello(String arg) {
            TestEvaluator te = (TestEvaluator) XQueryEvaluator.contextObjectTL.get();
            te.id++;
            return "hello(" + arg + te.id + ")";
        }
    }

    XQueryEvaluator evaluator = new XQueryEvaluator();
    evaluator.setContextObject(this);
    evaluator.declareJavaClass("http://my.org/employees", MyFunctions.class);
}

This code sets a context object to 'this' and binds all static methods from MyFunctions class to XQuery expressions. So during myHello execution from XQuery, you can easily operate on Java variables from bound context - 'id' in this case.
Here's a way of invoking such bound myHello method from XQuery:
declare namespace my = 'http://my.org/employees'; my:myHello("hello")

xquery4j code contains unit tests, which include examples above.
You can run them by:
mvn package

Feel free to give some feedback on using it.

87 comments:

  1. Your website is amazing. It has a lot of informative stuff. I have become your fan. I will tell my friends about your website. I praise your work. Keep it up.
    thesis research paper

    ReplyDelete
  2. I would like to say that your post is wonderful. We can learn many things from it. You have done a good work. Thanks for posting.
    writing acknowledgements for dissertation

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking. Ruby on Rails Online Training

    ReplyDelete
  5. Get Mutual Fund Investment Schemes by Mutual Fund Wala and know about the best investment platform for you, to get profit.
    Mutual Fund Advisor

    ReplyDelete
  6. Awesome information, visit our page lifestyle magazine to get the best fashion and lifestyle magazines.
    Lifestyle Magazine India

    ReplyDelete
  7. Thanks for your efforts for this blog. Visit Kalakutir Pvt Ltd for Caution & Indication Signages and Warehouse Zebra Painting.
    Warehouse Zebra Painting

    ReplyDelete
  8. Nice post. Thank you to provide us this useful information.
    Bane Coat

    ReplyDelete
  9. Really Impressive, keep it up for more updates. OGEN Infosystem provides responsive web design and seo services at an affordable price.
    SEO Services in Delhi

    ReplyDelete
  10. I found your Blog post which i like it see our the purpose is to share the related Movies, Gaming, Casual,Faux Leather Jackets, Coats And Vests available Jughead Plaid Jacket

    ReplyDelete
  11. 1xbet ได้ทำการก่อตั้งขึ้นในปี 2007 และใช้เวลาภายในไม่กี่ปีเราได้ขึ้นเป็นที่ 1 ในบริษัทรับเดิมพันกีฬาออนไลน์ชั้นนำของโลก.

    ReplyDelete
  12. There are many articles, many different topics on many websites, and this is one of the best posts I have ever seen. Thank you for sharing this post with us. If you want to get an eCommerce web app know more about Magento extensions development.

    ReplyDelete
  13. over the internet, you have posted valuable
    Download Roblox Mod Apk

    ReplyDelete
  14. Programming is what I like the most! That's why the choice of being the writers whose specialization is IT and software technologies, I can produce any kind of paper for my clients, share important gre writing guide after which you may write some of your academic papers by your own.

    ReplyDelete
  15. เราคือทีมพัฒนาเว็บไซต์ ดูหนังออนไลน์ 037 HD ที่เปิดให้บริการ ดูหนังออนไลน์ ฟรี พากย์ไทย เต็มเรื่อง ที่มีหนังให้รับชมทุกประเภท ไม่ว่าจะเป็น หนังไทย หนังฝรั่ง หนัง Netflix และซีรีย์ต่างๆ ที่มีให้เลือกชมมากกว่า 3000 เรื่อง ลื่นไหล ไม่มีกระตุก พร้อมให้บริการ ฟรี 24 ชั่วโมง

    ReplyDelete
  16. assignments that score maximum grades.
    digitechtricks

    ReplyDelete
  17. Hi admin, This is a one of the best article website. Really I am very happy after read this topic release. So please keep your great work and Thankyou so much for sharing this very useful and so outstanding information with us. Australia Assignment Help - Assignment Help Adelaide - Assignment Help - Assignment Help Brisbane

    ReplyDelete
  18. Very nice blog content with superb information provided by your many others topics posts, here I would like to thank you so much guys for sharing such a fantastic niche update. i am going to share it with my mates through social media because every person need like this subject information and i am sure that its very help to everyone. web designing assignment help - pascal assignment help - international finance assignment help - minitab assignment help

    ReplyDelete
  19. When vashikaran is used then a person must understand that any problem of that person can be solved. Situations always make a person dumb. Sometimes a frustrating situation makes a person so disturb that they even stop the hope of ending their problem. But when a person searches for Vashikaran specialist near me they surely find out something good. A person can get the details of the best Vashikaran Specialist. This could be the fine way for a person to make their life good. It is the way the problems of a person can get solve and things become better for them forever.
    Swami Ji has been solving the life troubles of people globally. With years of practice and persistence, he is now equipped with the in-depth knowledge of vashikaran. Here, we will explore how Vashikaran Specialist Aghori Baba Ji helps to solve life problems.

    ReplyDelete
  20. Howdy I'm a particular Assistance on the off chance that you dealing with any issue concerning any thing, antivirus so you get in get-together with us:-
    netgear router setup password
    mywifiext local

    ReplyDelete
  21. Fantastic blog i have never ever read this type of amazing information.
    Clint Eastwood Vest

    ReplyDelete
  22. It's a really great and useful piece of information. Thanks, and please keep up the rewarding work. Venom Varsity Jacket

    ReplyDelete

  23. When you feel the need for Assignment Help first you should check the testimonial of the websites that are available on the internet. There are plenty of services in the USA, which make fake promises to the students for providing a good service but many of them get failed.

    ReplyDelete
  24. We are the best Web design company in pune which can provide you the world class website design and development service. Connect with us to get the best quality service at low cost.

    ReplyDelete
  25. Thanks for sharing this amazing blog with some unique information keep it up. Here is gmg transport coupon code

    ReplyDelete
  26. To get help with Law Assignment Help , you need to submit the work details. The services provided by us are highly affordable and fit to your budget. Moreover, by having the online business law assignment help, you no longer need to worry about deadlines. You get your work done before the deadline to evaluate the work to make final adjustments.


    ReplyDelete
  27. atuoyo post utme past questions downloadI'm so much in love with this article for the well-researched content and excellent wording. I got so involved in this material that I couldn’t stop reading. I am impressed with your work and skill. Thanks for sharing.

    ReplyDelete
  28. Great write up. I have never seen such a masterpiece formulated with precision, accuracy and much-needed information. Thanks for sharing. But you want to access ample datasets for your assignments, take free assistance from SourceEssay Essay Typer.

    ReplyDelete
  29. I could not have asked for better !!! my Subscribers will love them !!!Love my hoodie sherazfabrics, nice soft material, the print is top notch.

    ReplyDelete
  30. Great write up. I have never seen such a masterpiece formulated with precision, accuracy and much-needed information. Thanks for sharing.
    palm angels clothing

    ReplyDelete
  31. Get the best digital marketing service by connecting with SEO Company in dadar. PromoteDial can be the right choice for you.

    ReplyDelete
  32. Assure India is able to provide you the best smartphone insurance at an affordable price. Connect with us for more information.

    ReplyDelete
  33. Goal tide is the best IAS coaching center, we have trained, qualified, and experienced teacher who passed toughest exam of UPSC. Join with us and come true your dreams.
    Best UPSC Prelims Daily Current Affairs

    ReplyDelete
  34. De var så søde hele vejen igennem. Og de gik samtidig meget op i hygiejnen. Så inden vi blev sluppet løs til take away Birkerød at hente en salat i salatbaren, blev vi nøje instrueret i at vi skulle bruge sprit og handsker, at vi ikke måtte bruge handskerne mere end én gang og at vi skulle tage nye skåle, hvis vi ville hente flere gange. Vi var målløse og positivt overraskede. Det er første gang vi har oplevet så nøje instruktion på en restaurant her i Covid-19 tiden.

    ReplyDelete
  35. Great nice information, keep writing. If there is any student need for Online Assignment Help Ireland at very pocket-friendly cost then this message for you. I am providing assignment services for 7 years and we have a super expert team especially our experts from Ireland. If you need then reach out to us. For more information right visit my website.

    ReplyDelete
  36. Online assignment help in Ireland is a service that is provided to students who cannot manage to finish their assignment on time. assignment is usually given with deadlines attached to them. In countries like the Ireland, students often work and study simultaneously which can be stressful and quite difficult for them to manage at the same time.

    ReplyDelete
  37. Many students have difficulty completing assignments at the last minute. They don't want to take a chance on their grades. They should therefore take assignment assistance from experienced Assignment help Australia. As an experienced assignment writer, I can help you with your assignment.

    ReplyDelete
  38. Connect with the best website design & development service provider that name is CSS Founder Pvt Ltd. We can be the right choice for you. Website design company in Dubai

    ReplyDelete
  39. Nice post keep up.What is the difference between affect and effect read it. Affect is a verb and effect is a noun. It seems so near by it's meaning but both have their own meaning. Wants to know Raven Techniques ,visit on blog explore more thing.

    ReplyDelete
  40. Do you want Work permit in poland? If yes then connect with Steadfast services that is located in United Arab Emirates.

    ReplyDelete
  41. Our expert Online Minitab assignment consultants provide you with high-quality and trustworthy Minitab Assignment Help . Analysis of the data, sampling, are just a number of the topics we cover in our assignment help. Minitab is a program tool that helps students with statistical studies such as logistic, measurement, grouped, and cost estimates.

    ReplyDelete
  42. Students feel stressed in writing assignments connected to many areas as a result of the growth of education in universities and other academic institutions. The role of online assignment help services, which are knowledgeable enough to give you with high-quality assignments that will help you improve your grades.
    mathematics assignment help
    nursing assignment help
    chemistry assignment help
    economics assignment help

    ReplyDelete

  43. Selvom det var lørdag aften og der var meget travlt, kom personalet ofte forbi og spurgte ind indisk mad amager til om alt var som det skulle være. Ventetiden på maden føltes ikke lang, da vi kunne starte med forret og salatbaren. Alt i alt var det en rigtig god oplevelse og kan helt klart anbefales. Vi kommer igen meget snart.

    ReplyDelete
  44. Hey, this is San. I am an essay writing expert with 9 years of experience in writing. I have assisted people with hooks for essays and writing essays of all niches. If you are struggling with an essay, then reach out to me. I am always ready to help!

    ReplyDelete
  45. Every company also has its own unique website development process but there is a certain process, we have elaborated it to develop and rank your website. Contact for more information
    Web design company Cambridge

    ReplyDelete
  46. If you have no time Use Assignment Help Australia Services for assistance. Writing assignments is difficult, and mostly people find it exhausting. Connect with our assignment helper

    ReplyDelete
  47. If you want to grow your business through a website, then CSS Founder would be a good choice for you? contact us to connect with CSS Founder. CSS Founder is the best website design company
    Web design company Sundee

    ReplyDelete
  48. Pormotedial is the best SEO company in Dammam, we are the leading company in the SEO field, We have a skilled team that provides you with better result and optimize your website.

    ReplyDelete
  49. I’ve worked with Great Assignment team & I’ve experienced in the field of Chemistry with Ph.D. , master's degrees & 6 years work experienced. We believe in Quality and Scoring Content assignment in the field of Organic , Inorganic , Analytical , Biological Chemistry. So, I & our team have providing Comprehensive support from online CHEMISTRY ASSIGNMENT HELP . help enables students to get great scores with impressive assignments.

    ReplyDelete
  50. Very nice blog and information you have shared. Connect with Al mumtazt tents if you are looking to making your party more impressive. We are the best provider of tents in Dubai. Car Parking Shades

    ReplyDelete
  51. Hi are using Wordpress for your site platform? I’m new to the blog world but I’m trying to get started and create my own. Do you need any coding expertise to make your own blog? Any help would be greatly appreciated!금정출장마사지
    연제출장마사지
    수영출장마사지
    사상출장마사지
    수성출장마사지
    달서출장마사지
    미추홀출장마사지

    ReplyDelete
  52. On this website, you can find professionally created tips on how to write a movie essay and other similar papers. Hurr on to get quality support and earn bonuses.

    ReplyDelete
  53. Thanks for providing the best and nice information about it. GP in Dublin

    ReplyDelete
  54. This has really made me think and I hope to read more.Pelle Pelle Chi-Town White Jacket

    ReplyDelete
  55. his is really nice, thanks again for this wonderful and Freight Forwarding valuable information sharing with us.

    ReplyDelete
  56. This comment has been removed by the author.

    ReplyDelete
  57. They can be worn for both casual and formal occasions and can be dressed up or down depending on the occasion. Google

    ReplyDelete
  58. One of the main reasons behind global product sourcing is to save money. Because the global market is so competitive china sourcing blog

    ReplyDelete
  59. place is proving the beauty of Australia. Australia is the most beneficial country for visitincI look up to the valuable selective information you eddie stranger things jacket

    ReplyDelete
  60. I'm super excited for giving me the privilege to learn through your blog. Its a nice time with you today. Thanks alot, I hope to always come around for new updates. ondo city polytechnic form out

    ReplyDelete
  61. We became a life savior for the UK students with our assignment help Glasgow. Connect with us to get the assignment helper in Glasgow. If you want to get the best assignment help in Glasgow at a reasonable price with quality content, get in touch with our experts with different skills today itself. Being the most popular online assignment writing service provider you get the best subject matter experts with a wealth of expertise in their field. Our professional writers who can handle multiple projects in one go without compromising quality.

    ReplyDelete
  62. تعتمد شركات شيش حصير في مصر في تركيب شيش الحصيرة باستخدام المشابك:

    يمكن استخدام هذه الطريقة في حالة عدم توفر الأشرطة لتركيب الحصيرة. ويمكن استخدام المشابك البسيطة لتثبيت الحصيرة بشكل جيد. ويتم ذلك عن طريق وضع المشابك في الغرزة بين الغطاء والقاعدة

    ReplyDelete
  63. تعد الشرايين الطرفية واحدة من الأجزاء الرئيسية في النظام الدوراني، حيث تمد الأطراف السفلية والعلوية بالدم والأوكسجين والمواد الغذائية الأخرى التي يحتاجها الجسم. ومن المشاكل الشائعة التي تؤثر على هذا النظام هي انسداد الشرايين الطرفية، والتي تحدث عندما تنسد الشرايين التي تمد الأطراف بالدم. لذلك من الافضل التعامل مع احسن دكتور اوعية دموية الا وهو الدكتور محمود ناصر.

    ReplyDelete
  64. Pretty! This has been an incredibly wonderful article. Many thanks for supplying this info. Dwayne Johnson Fast X Blazer

    ReplyDelete
  65. Thank you for sharing such an insightful blog post! "Get expert Business Assignment Help for guaranteed success. Our professional team provides comprehensive assistance and delivers high-quality solutions tailored to your specific needs. Achieve exceptional grades and excel in your business studies with our reliable and timely assignment support. Contact us now!"

    ReplyDelete
  66. We're grateful for your sharing of this informative blog. Should you find yourself in need of an assignment help, don't worry; your journey has come to an end. Our team of devoted experts is here 24/7 to help you excel in your pursuits. They are always prepared to assist with any assignment-related inquiries. Feel free to reach out to us.

    ReplyDelete
  67. Brian's Club is just one example of the countless underground forums and Briansclub marketplaces where

    ReplyDelete
  68. I really amazed to read this blog post. It is so unique and informative Christmas Sale

    ReplyDelete
  69. Soda ash prices have historically exhibited volatility, influenced by factors like supply-demand dynamics, production costs, and global economic trends. Prices for soda ash, a key raw material in various industries including glass, detergents, and chemicals, tend to fluctuate based on shifts in production capacities, energy costs, and environmental regulations impacting the manufacturing process. In recent years, market variations have been observed due to factors such as changes in raw material costs, energy prices, and trade dynamics, affecting the overall pricing of soda ash on both regional and international scales.

    ReplyDelete