The basics

 XSD vs Dingo
 Class Diagram
 NUnit Tests
 Java code

 Custom Builders




Why Another Schema Compiler?

Although Microsoft and Mono both include XSD.exe with their distribution, both of them only generate concrete classes with XmlSerialization support. For small personal projects, concrete classes are appropriate, but for large complex applications, using JAXB style compilation is more appropriate. For those not familiar with JAXB, it generates an interface and concrete class. This means applications only reference the interface and do not use the concrete classes directly. It means the same class in a GUI can have different implementation than on the server.

Why should I use Dingo?

That decision is up to each user. From first hand experience, many people end up writing their own schema compilers, because XSD does not meet their needs. If XSD is sufficient for your requirements, then Dingo won't provide any benefits. In some cases, Dingo may be more compliant than XSD and generates better code.

Is Dingo based on XSD?

Not at all. I wrote Dingo from scratch and purposely tried not to copy other compilers. Although I have experience with JAXB, Castor, and MS XSD, the implementation and design is different. It took me about 5 weeks of coding at night to get a complete Alpha. Dingo is very similar to Apache Jaxme in design. Jaxme has much more functionality than Dingo, but Jaxme is for Java and not C# or .NET.

Is it compliant?

I honestly can't say. Although I use XmlSchema.xsd to generate the classes, I did deviate from it to get XmlSerialization to work correctly. There's definitely going to be areas where Dingo is not compliant, but it's open source. Feel free to post a bug entry if you find something not compliant. As far as I know, Dingo should work on most schemas that use complexType definitions.

What is the road map for Dingo?

There are some features I have in mind for Dingo in future releases, but for now, Dingo is fairly complete and has features other schema compilers do not have.

Is it stable?

I am actively developing Dingo and use it for my own projects, so it should be stable. During the development process, I compared the generated source with MS XSD and Mono XSD. In most cases, the source will be identicle. Where the source will differ from MS and Mono is JAXB style compilation. The design pattern is based on established techniques that are sound and mature. For a description of the differences, go to Dingo vs XSD.

Does it work with Mono?

As of 9/2004, Dingo does work with Mono. Whether or not there may be incompatability issues is unknown. If there are, please file a bug entry or post a message. I will work with the Mono developers to track down the problem and try to resolve it. With assistance from Atushi, I was able to use Mono with Dingo. Quicktips has basic instructions for using Mono.

Do you plan to support other modeling languages?

My original plan was to get schema support solid first. After that, I was planning on supporting RelaxNG, DTD and XMI. In theory, it shouldn't be too hard. Dingo has a set of base interfaces, which new parsers can implement. This will allow Dingo to plugin new language parsers. If anyone feels like writing a parser for RelaxNG, DTD or XMI, feel free to drop me an email and I'll help.

Why did you release it free?

To put it simply, there are people out there much much smarter than me. My hope is that others will contribute to it and help make it better. I try to be as practical as possible, so it makes sense to relase it to the world. Since I've done quite a bit of contract work over the 5 years, I often need to use the same basic tools over and over again. Doing things the proprietary way, most people end up writing the same tools over and over again. Frankly, I find that a terrible waste of time and is very inefficient. By spending a little of my own time to write Dingo and releasing it freely, I can use it in future projects. Plus, there isn't really any money to be made from schema compilers. Even if there was money to be made on schema compilers, I would rather be developing large scale applications. Although I enjoy writing tools, it is after all just a tool.

Do you plan to donate Dingo to Apache?

Since I am a jakarta committer on JMeter, I plan to donate Dingo to Apache once it has reached a point where I consider it mature and worthy of the Apache stamp. Apache is already a great resource for high quality applications and libraries. I'm also 1000% objective and unbiased. Joking aside, it would be great to have Dingo under the Apache umbrella. If a community develops around Dingo, I may consider submitting it to Mono as an alternative to the stock XSD. Since I'm biased against XSD, I won't bother enumerating all the limitations of XSD. Each developer can reach those conclusions on their own.

Revised 9-9-2004 Peter Logo
Copyright 2004 Peter Lin