Abstract

XML is an undying technique designed for data representation and data exchange. One great feature of XML is its ability to handle XML related matters using XML itself. XQuery is such a technique that is created in order to query XML documents using XML itself.

The purpose of this project proposal is to implement a XQuery editor plug-in for Eclipse that will be very helpful for web developers; specially for people that are dealing with querying XML data. Even with current somewhat limited capabilities of XQuery, it is largely used to query XMLDBs such as eXist or Qexo. But with the next suggested version of XQuery which is 1.1, XQuery could be the favourite for querying not only XMLDBs but also other XML based office documents and relational DBs.

Because of the importance of XQuery, I'm expecting to implement a XQuery plug-in that will be managed under Eclipse web tools project and under EPL.Therefore at the end of this project, we will have a fully functional editor (as-you-type syntax validating, error tips, syntax highlighting, outlining, content assistance, Ctrl+Space assistance & preference page) for XQuery.

Preference page to control the overall behaviour of the plug-in including syntax highlighting and defining the output

Legend

Needs some investigation/research

Work in progress

Bug fixed / Feature added

Must Have

Editor Partitioning

XPath 2 Content Parser

XQuery Content Parser

Syntax colouring

Syntax Validation

error highlighting

Content assistance

Ctrl + Space to show the content support

Preference Page

Should Have

Content outlining

Content assistance

Code snippets

Nice to have

Error tips

Milestones

M1 - Basic SSE structure

First goal was to produce a basic code base matching to that of a standard SSE (Structure Source Editing) plugin. First few weeks were given to this purpose and I was able to implement a suitable structure after reviewing other SSE plugins there such as HTML, CSS, XML, XSL and DTD.

M2 - Partitioning

Since XQuery is a XML syntax, it was only prudent to use a normal XML partition that will be parsed as XML Content by the standard XML plugin and another new partition for XQuery which will be parsed by this new plugin. Mainly StructuredTextPartitionerForXQuery class was used to implement partitioning and the result was an editor that identified usual XML syntax from the new syntax(XQuery).

M3 - XPath and XQuery parsing

Even though at the first it was suggested to implement a new XQuery parser using ANTLR, I was able to find an existing XQuery and XPath parsing library named xqpretty that matched to the job description (including license).

M4 - Syntax Colouring

Using xqpretty code I was able to implement syntax colouring for XQuery content and can be considered a major achievement in the project which identifies this plugin as a XQuery editor.

Figure 2 - Syntax colouring for XQuery

M5 - Update Site

For easy usage and testing for users of the plugin, a feature project and then an update project was created out of the plugin and is hosted at SourceForge currently.