XML Nanny goes open source.
January 27th, 2008XML Nanny is now an open source project (BSD license) on Google Code!
XML Nanny is now an open source project (BSD license) on Google Code!
![]()
I’ve ported the work I did on the TeXMLMate plug-in back to XML Nanny. For now, I’m calling it version 3.0 beta 1. New Features (for XML Nanny) include:
Looks like parsing any remote source doc while validating with RNG or RNC when using XML Nanny will cause a crash. Kinda embarassing, but I guess I didn’t test that!
Doing a RNG or RNC validation of a local source doc works fine.
This is definitely a Nanny bug, not a libxml2 bug. Hope to have a 2.0.1 bug fix release by the weekend.
XML Nanny 2.0’s RELAX NG compact syntaxt (RNC) support is provided by using Trang to transform the specified RNC file into a temporary RELAX NG XML syntax file (RNG), and then validating against that. XML Nanny is supposed to do a lastModified check on the RNC each time you parse to detect whether it needs to regenerate a new temporary RNG file.
Looks like there is a bug that cuases XML Nanny to occassionally not generate the temp RNG when it should. I will fix this in a 2.0.1 release soon. In the meantime, if you’re doing RNC validation, and don’t see the results you expect, you might try deleting ~/Application Support/XMLNanny/schema.rng and try the parse again.
In related news, XML Nanny is crashing on an Atom RNC file sent in by Bill Humphries. It appears that libxml2 is choking on the generated RNG, but I’m not positive about that. The Atom.rnc file contains some embedded Schematron assertions… wouldn’t be surprised if libml2’s RELAX NG impl didn’t support that. But I’ve tried removing the embedded Schematron, and the crash still ocurrs… So I’ll continue to investigate…
I’m very proud to announce version 2.0 of XML Nanny, my free Mac OS X desktop app for parsing and validating XML documents locally or on the Web. XML Nanny is powered by libxml2 and Xerces-C++ and provides validation support for DTD, WXS, Schematron, and RELAX NG compact and XML syntaxes. See the ‘About’ tab for a full list of new features in 2.0.
Thanks again go to Glenn Martin for his help in making XML Nanny 2.0 a Universal Binary.

Thanks to Glenn Martin for helping make XML Nanny a Universal Binary.
Other fixes include improved stability, improved “Open in external editor” behavior, and a fix for a consistent crasher when XML Nanny encountered an empty attribute value while doing a Xerces-C-based parse.
This will probably be the final beta before a full release.
The biggest task left now is documentation… the UI has several new features, and although they’re failry self-explanatory, I don’t have any documentation for the new features… I’d like to work that up before calling this a final release.
XML Nanny 2.0 is a complete rewrite (shudder) of XML Nanny, with tons of sexy new features:
DOCTYPE in your instance doc.Upon which XML toolkits is XML Nanny built?
So which toolkit is used where?
When using XML Nanny, if you do a non-validating parse, a DTD-validating parse or an XSD-validating parse, you are using Xerces-C++. If you do a RELAX NG-validating parse of either type your are using libxml2’s xmlTextReader. If you do a Schematron-validating parse you are using NSXML and the Schematron XSLT reference implementation.
So why are libxml2 and Xerces-C++ used rather than just libxml2?
Cos I started out using Xerces-C++ since I prefer C++ to straight C. But when I wanted to add RELAX NG support, I had to move to libxml2. Perhaps in the future we will add a feature for selecting a specific parser in the UI. Let me know if you would like this.
Why is libxml2.framework bundled with XML Nanny.app when libxml2 is already available on Mac OS X Tiger?
Cos the version of libxml2 (2.2.16 I think) that ships with Tiger has some RELAX NG bugs that have been fixed in 2.2.26. So 2.2.26 is bundled.
How is RELAX NG compact syntax supported? Did you write an RNC parser?
Hell no. XML Nanny uses Trang from the command line in the background to generate an RNG from your RNC. XML Nanny checks the RNC’s last modification date to make sure it only generates a new RNG if necessary.
XML Nanny is a free (as in beer) Cocoa application for Mac OS X Tiger that allows you to parse and validate local or remote XML documents against DTD, W3C XML Schema, RELAX NG, and Schematron schemas.
XML Nanny 2.0 has added many new features:
DOCTYPE in your instance doc.