developerWorks: The Java XML Validation API

"Validation reports whether a document adheres to the rules specified by the schema. Different parsers and tools support different schema languages such as DTDs, the W3C XML Schema Language, RELAX NG, and Schematron. Java 5™ adds a uniform validation Application Programming Interface (API) that can compare documents to schemas written in these and other languages. Learn about this XML validation API."

The Java XML Validation API

Ahhh – there is of cause the Microsoft (proprietary) solution

As mentioned
I have been reinventing the wheel and (re)writing XPath 2.0 functions as named XSLT templates since the MSXML 3 in Internet Explorer 6 isn’t XPath 2.0 compliant. As always there is however a Microsoft proprietary solution using the urn:schemas-microsoft-com:xslt namespace. This namespace adds support for a number of utility functions as mentioned in the “Microsoft XPath Extension Functions“-article over at Microsoft Developer Network.

You have to be running MSXML 4 for this namespace to work however which means that even the proprietary solution isn’t workable for me since MSXML 3 is the default for Internet Explorer 6.

While researching this subject I found that MSXML 3 (or 4) isn’t the newest version. There is a MSXML 5 (only used with Office 2003) and a MSXML 6 (supplied with Visual Studio 2005). Even the newest MSXML 6 doesn’t however support XPath 2.0. The supported API’s in MSXML 6 is:

  • XML 1.0 (DOM & SAX2 APIs)
  • XML Schema (XSD) 1.0
  • XPath 1.0
  • XSLT 1.0

Come on already – please implement the standards!

How I hate reinventing the wheel

I’m doing quite a lot of work at the moment defining XML document “languages” and associated XML schemas (why I’m happy for the great XML and XML Schema (XSD) support in Callisto) at the moment. In that connection I’m also doing XSLT stylesheets for end-user presentation in Internet Explorer (version 6 or higher). We have to make Internet Explorer a requirement for user-presentation since Firefox doesn’t support resolving entity references when using XSLT which we need for content reuse.

Once this was settled it was all well and good until I yesterday discovered that Internet Explorer 6 (and hence MSXML 3.0) doesn’t support XPath 2.0 which means that all the nifty XSLT functions defined in XPath 2.0 such as the date/time functions cannot be used. Bummer!

So here I am back at reinventing the wheel rewriting all the date/time functions as named templates using the substring XPath 1.0 substring function. Even more bummer!

Need XSLT support in Callisto?

For some reason I fail to understand the recently released collection of plugins from the Eclipse Foundation (also referred to as Callisto) doesn’t include support for XSLT even though it has editors for XML, DTD’s and XML Schema (XSD). Support to XSLT is however very easy to add since you can use the EclipseXSLT plugin.

Installing is as easy as creating a new remote update site under “HelpSoftware UpdatesFind and Install” and installing it from there. The address to the update site is Took me 5 minutes or so. Easy. It does however require that you already installed the XML part of the Callisto release.