XAML validation rules for XML editors
Note: this entry has moved.
Rob asks for feeback on rule description so that any editor can offer validation and intellisense of XAML documents. We certainly know WXS isn't enough, as it has been discussed for the attached properties syntax. Rob says they provide:
- a schema - xaml.xsd (the Longhorn SDK installs it)
- a set of rules/constraints that we can't easily describe in schema (not adequately documented yet)
- a set of assemblies - using reflection tools could understand what elements exist, their properties, events, etc...
The important one is the second, because the third would be
useless to any tool that doesn't use .NET code. Expressing
rules that can't be described in a WXS is a long standing
issue. We all know XPath. Arbitrary complex rules can be
expressed with, such as co-occurence constraints, content
models dependent on attribute values, etc. Instead of
"documenting" those additional rules, why aren't they
written as XPath assertions?
Furthermore, it has been
demonstrated
(and free XSLT-based, .NET and Java implementations are
available) that an
XPath-based standard language can be embedded
both in RelaxNG and WXS, offering the best of both worlds.
Discussion around the language and its features can be found
at
XML.com, and there are
many
comparisons
that show its advantages and flexibility for rules
expression. In a meeting with the most important names in
the XML schemas world, analysis by the
experts
in each language showed these results ( adding up the 'yes'
to the features
analyzed-see scorecards, with 1/2 point for 'some' support):
- Schematron: 27
- RELAX NG: 20.5
- WXS: 16
- DTD: 8.5
What's more, it's undergoing ISO standarization, so you can be sure it won't become propietary or dissapear. Therefore, integrating it (either through XSLT or other languages implementation such as James Clark's Jing, SUN's MultiSchema validator, Schematron.NET, etc.) into an editor wouldn't be that much hard. Even Cocoon uses it for validation.
So, the bottom line is: implement WXS + RelaxNG schemas for the document structure. Embed or provide a separate Schematron schema for the additional rules. I'm sure most companies will be much more satisfied than by a document stating these rules in plain english....
Update: SUN provides a free tool to convert from several schema languages (including WXS) to RelaxNG, so MS don't bother to provide it.