Catching ideas

Sometimes they come …and sometimes they don’t

EMC XProc Engine announces itself

with one comment

…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>

Written by Vojtěch Toman

July 8, 2009 at 7:45 pm

Posted in Work, XML

Tagged with , ,

EMC XML Developer Community Launching

leave a comment »

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!

Written by Vojtěch Toman

May 15, 2009 at 11:00 am

Posted in Work, XML

Tagged with , , , ,

Back from XML Prague (and bed, almost)

leave a comment »

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.

Written by Vojtěch Toman

April 3, 2009 at 4:24 pm

Posted in Work, XML

Tagged with , , , ,

Presenting at XML Prague 2009

leave a comment »

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.

Written by Vojtěch Toman

February 12, 2009 at 1:43 pm

Posted in Work, XML

Tagged with ,

Introduction to XProc

leave a comment »

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.

Written by Vojtěch Toman

January 8, 2009 at 11:19 am

Posted in XML

Tagged with

First XProc test report for Calumet published

leave a comment »

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.

Written by Vojtěch Toman

December 31, 2008 at 8:53 am

Posted in Work, XML

Tagged with , , ,

XProc – The next rockstar?

with 2 comments

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!

Written by Vojtěch Toman

December 6, 2008 at 7:38 pm

Posted in Work, XML

Tagged with , ,

XProc goes to CR!

leave a comment »

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!

Written by Vojtěch Toman

November 28, 2008 at 10:23 am

Posted in XML

Tagged with , ,

S1000D Logic Engine Presentation

leave a comment »

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.

Written by Vojtěch Toman

November 25, 2008 at 9:16 am

Posted in Work, XML

Tagged with ,

Adrian Belew Power Trio (Den Haag, October 29, 2008)

leave a comment »

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… :)

Written by Vojtěch Toman

November 15, 2008 at 3:02 pm

Posted in Music

Tagged with