EMC XProc Engine announces itself
…and how else than in XProc:
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc">
<p:output port="result" sequence="true"/>
<p:try name="announcement">
<p:group>
<p:identity>
<p:input port="source">
<p:inline>
<p xmlns="http://www.w3.org/1999/xhtml">I am happy to
announce the availability of version 1.0.8 of EMC
XProc Engine, EMC's XProc processor implementation.
The processor is free for developer use and can be
downloaded - together with other XML tools - from
the EMC XML Developer Community website.</p>
</p:inline>
</p:input>
</p:identity>
</p:group>
<p:catch>
<p:identity>
<p:input port="source">
<p:inline>
<p xmlns="http://www.w3.org/1999/xhtml">This is the
first public release of the processor. Note that
while version 1.0.8 supports most of the required
features of XProc, the implementation is not yet
complete.</p>
</p:inline>
</p:input>
</p:identity>
</p:catch>
</p:try>
<p:identity name="feedback">
<p:input port="source">
<p:inline>
<p xmlns="http://www.w3.org/1999/xhtml">We are looking
forward to your feedback - please use the
EMC XML Developer Community forum (or the xproc-dev
mailing list) for any comments, suggestions, feature
requests, or bug reports.</p>
</p:inline>
</p:input>
</p:identity>
<p:http-request name="download">
<p:input port="source">
<p:inline>
<c:request xmlns:c="http://www.w3.org/ns/xproc-step"
method="GET"
href="https://community.emc.com/community/edn/xmltech"/>
</p:inline>
</p:input>
</p:http-request>
<p:wrap-sequence name="features" wrapper="features">
<p:input port="source" xmlns="http://www.w3.org/1999/xhtml">
<p:inline>
<para>XProc Engine implements most of the required
features of the XProc specification. For an overview
of the supported features, and the progress of the
implementation, see the XProc Test Suite website.</para>
</p:inline>
<p:inline>
<para>Plug-ins can extend the processor and customize
the default behavior or provide new functionality, such
as extension XProc steps.</para>
<para>The XProc Engine distribution comes with a number
of plug-ins that can be used with the processor.
Software developers can use the XProc Engine API to
create custom plug-ins.</para>
</p:inline>
<p:inline>
<para>Its Java application programming interface makes
it easy to embed the XProc Engine in other Java
applications.</para>
</p:inline>
<p:inline>
<para>Its Java application programming interface makes
it easy to embed the XProc Engine in other Java
applications.</para>
</p:inline>
<p:inline>
<para>XProc Engine provides an interface for running
XProc pipelines from the command-line.</para>
</p:inline>
<p:inline>
<para>XProc Engine can be integrated with the EMC
Documentum xDB XML database (via a plug-in). The
plug-in provides a number of xDB-specific XProc
steps, and allows developers to combine the benefits
of a state-of-the-art native XML database and XProc.
</para>
</p:inline>
</p:input>
</p:wrap-sequence>
<p:compare>
<p:input port="source">
<p:document
href="http://tests.xproc.org/results/calumet/report.xml"/>
</p:input>
<p:input port="alternate">
<p:document
href="http://tests.xproc.org/results/calabash/report.xml"/>
</p:input>
<p:documentation>
<p xmlns="http://www.w3.org/1999/xhtml">How does it compare
to the other XProc processor? :)</p>
</p:documentation>
</p:compare>
<p:identity>
<p:input port="source">
<p:pipe step="announcement" port="result"/>
<p:pipe step="feedback" port="result"/>
<p:pipe step="download" port="result"/>
<p:pipe step="features" port="result"/>
</p:input>
</p:identity>
</p:declare-step>
EMC XML Developer Community Launching
At Last! I am happy to announce that EMC has launched the new XML Developer Community, a developer forum for sharing information about XML and EMC’s XML technology. I was never good at making flashy announcements, so I will just say: go to http://developer.emc/com/xmltech and see for yourself, there is some seriously interesting stuff there. (And expect more to come soon – after all, we are just taking off!)
Besides the content (articles, videos, blogs), the real highlight for me is that EMC is going to release a whole suite of its XML tools through the site, free for unlimited developer use. And the first of the downloads is nothing less than EMC Documentum xDB, our native XML database (formerly known as X-Hive/DB).
Personally, I have been waiting for this to happen for a long time. I know that I am biased, but I really think that xDB is a killer application, with so much value and potential. In the 10 years of its existence (yes: birthday party!), xDB has grown into a really robust and mature product with excellent support for standards, and it is no wonder that it has become so successful it the commercial sphere. Sadly, it has also successfully stayed out of reach of the wider community. But this is changing now, and I am expecting lots of positive reactions to this; I, for myself, have always found xDB great to work with.
But the EMC XML Community site is not only about promoting EMC software. Its main focus is XML and XML technologies in general, and the goal is to provide a place of dialog between us – EMC’s XML developers – and the developer community, where useful information about XML (tutorials, best practices, support, etc.) can be shared and discussed.
Looking forward to your feedback, either on this blog, or better, on the EMC XML Community website!
Back from XML Prague (and bed, almost)
Finally recovered enough from XML Prague to write a short post. The conference was great (hey, the strudel was fantastic!), and I had a chance to chat with quite some interesting people there (…some of which probably infected me with a nasty bug that I have been struggling with until now).
The organizers attempted to make the event a bit special this year: they were broadcasting a live feed from the conference, to make it accessible also for people who could not participate in person. Quite a unique touch, and surely something that will attract a wider audience in the following years of the conference, should the organizers keep doing the same thing (and they should!).
Recordings of the presentations are now starting to show up on the conference website. Only slides with audio at the moment, but the organizers are planning to upload full video recordings of the speakers once these are processed and polished (…and let’s hope not – using Robin Berjon’s words – censored :-).
My presentation about XProc was on the second day of the conference (right after another XProc talk by Norm Walsh who showed some ingenious real-world pipelines – see his blog if you are interested in knowing more), and it was kind of motivating for me to see the positive reaction to EMC’s plans to release its XML tools to the wider public.
The most frequent question after my presentation seemed to be: When?
– and at that moment, the only answer I could give was: Soon,
because, in all honesty, I didn’t know. Today, I think, I can reveal more: Very soon.
Presenting at XML Prague 2009
On March 22nd, I am presenting at XML Prague. Topic: Optimizing XML Content Delivery with XProc
. There will be some interesting names there, like Michael Kay, Murata Makoto, Norman Walsh, or Jeni Tennison to name a few. Should be fun.
Introduction to XProc
Anyone interested in learning/understanding XProc, don’t miss the excellent Introduction to XProc written by Dave Pawson. It is still work in progress, but it already contains a lot of useful information.
Another nice place to get started with XProc is James Sulak’s blog.
First XProc test report for Calumet published
We have gone public – at last! Yesterday, I submitted the first test report for Calumet, which is the code name for our XProc implementation.
As of today, we pass 95% percent of the required tests, and about half of the optional tests, which makes for about 90% success rate overall. Compared to Calabash, which scores 97% at the moment, we still lag behind a bit, but we have made a good start, I think, more so that Calumet is getting more mature and compliant every day (literally). Stay tuned.
XProc – The next rockstar?
While working on an XProc implementation, and especially after using XProc in real-life and seeing its true power, I am more and more confident that XProc will soon become one of the most popular (and useful) XML technologies out here. For me, the reasons are simple:
- XProc integrates a whole plethora of XML technologies, ranging from XPath, XSL and XSLT, to XInclude processing, schema validation and XQuery support. The good thing about XProc is that you don’t have to learn the details of the different programming APIs and models. XProc shields you from that. To me, this is the most significant benefit of using XProc – and in fact, it is the very reason why XProc exists after all. Make manipulating XML content simple, transparent, and easy to understand.
- XProc can make application development simpler, and faster. No more tedious XML programming (I guess we all know that
how many times did I write this code before?
feeling…), no more low-level dances around constructing/navigating/updating the DOM tree. Not any more: Here, this my XProc pipeline, run it and give me the results I want. - XProc can make applications more reliable and less buggy (once the XProc processor get good enough, of course :). This is related to the previous point. You see, manual XML programming is potentially dangerous, especially in the hands of unexperienced developers who are not aware of all the nifty details. I have seen too many examples of badly written code for performing an XSLT transformation, or for just parsing an XML document… And I am really glad that finally there is a tool that, to put it bluntly, can shield us from crappy programming. And once there are visual tools for building XProc pipelines – and I am sure there will be some soon – we will be even safer.
- XProc is simple. Querying content using XQuery, transforming the results to XSL-FO, and generating a final PDF document has never been easier:
<p:declare-step> <p:input port="source"/> <p:input port="parameters" kind="parameter"/> <p:xquery> <p:input port="query"> <p:data href="stats.xq" content-type="application/xquery"/> </p:input> </p:xquery> <p:xslt> <p:input port="stylesheet"> <p:document href="stats2fo.xsl"/> </p:input> </p:xslt> <p:xsl-formatter href="out/stats.pdf"/> </p:declare-step> - XProc is extensible. XProc comes with a library of standard steps, but one of the core features of the language is that it allows you to declare custom steps that provide more complex (or not supported by default) functionality. You can organize your custom steps in libraries, which you can then import in your XProc pipelines in a way similar to importing stylesheets in XSLT.
<p:pipeline> <p:import href="sq-library.xpl"/> ... <sq:get-stock-quote ticker="GOOG" xmlns:sq="http://www.foo.com/sq/ns/"/> ... </p:pipeline> - …and finally, XProc is fun!
XProc goes to CR!
On November 26, W3C announced that XProc has moved the Candidate Recommendation status.
For those who don’t know what XProc, or XML Pipeline Language, is, I think it’s best to quote the specification:
[XProc is] a language for describing operations to be performed on XML documents.
An XML Pipeline specifies a sequence of operations to be performed on zero or more XML documents. Pipelines generally accept zero or more XML documents as input and produce zero or more XML documents as output. Pipelines are made up of simple steps which perform atomic operations on XML documents and constructs similar to conditionals, iteration, and exception handlers which control which steps are executed.
The specification is maintained by the XML Processing Model Working Group, which I happen to be a member of. The group is chaired by Norman Walsh, who – in parallel to his great editorial work (and I mean it, Norm; it has been a pleasure for me so far!) – is also responsible for the development of Calabash, the reference XProc implementation.
My involvement with XProc (and the WG) began in early 2008, when I started implementing an XProc processor for my employer. Since then, the specification has undergone a number of changes of varying magnitudes, so at times it was quite a challenge to keep our implementation in sync. But I endured (hey, I get paid for that!), and now I am happy to see that both Calabash and our – yet unnamed – processor are getting more mature every day.
At the moment, one of the most important tasks for the WG is to come up with a comprehensive test suite that would cover most of the language. And the sooner we are done with this the better, since the test suite not only helps to guarantee a reasonable level of interoperability among XProc implementations, but the whole process of writing test cases helps us to detect and fix defects or ambiguities in the specification until there is still time. There are quite a number of tests already, and I would say we are somewhere halfway through, so there is definitely still some work to be done… But we are making good progress, I think, and we will get there, soon.
In the meantime, feel encouraged to get in touch with us at the xproc-dev@w3.org mailing list. It is the perfect place to find out more about XProc and to ask questions. You can subscribe by sending an e-mail with the subject subscribe
to xproc-dev-request@w3.org. See you there!
S1000D Logic Engine Presentation
In October 2008, I attended the joint ATA e-Business Forum/S1000D User Forum in Budapest, where I was talking about the S1000D Process Data Module and about our Logic Engine implementation.
The presentations from the Forum are now available on-line, so if you are curious what is this weird S1000D stuff all about, you can view a PDF version of my presentation here.
Adrian Belew Power Trio (Den Haag, October 29, 2008)
I didn’t plan to write about this, but today I came across a nice (and good-quality) recording of the Adrian Belew Power Trio taken during their concert in Den Haag last month. I was there, and the show was a blast. Adrian was impressive and fun to watch, as always, but the same can be said about his accompaniment, siblings Julie (bass guitar) and Eric (drums) Slick. Given their age, they were just incredible.
Anyway, here is the promised clip from the show, a song called Of Bow And Drum
:
And while you are enjoying this groovy piece of music, wait until 2:47 and there I am, leaning against the stage right in the lower right corner… :)