[
Lists Home |
Date Index |
Thread Index
]
Hi Eric,
> I have recently written (with much help from Murata Makoto) a
> chapter dedicated to Relax NG, ambiguous and non-deterministic
> models proposing a distinction between determinism and unambiguity
> and showing some more examples:
>
> http://books.xmlschemata.org/relaxng/RngBookAssignment.html
Nice chapter! On the "what to do about ambiguity" front, you mention
adding an except pattern and using explicit disambiguation rules. A
third option would be to use type systems that support you saying
"this value is *both* X and Y".
For instance, you give the example:
element foo { xs:boolean | xs:integer }
If you have: <foo>3</foo>, the XPath 2.0 type system will happily say
that <foo> is of type xs:integer, and of type xs:decimal (since all
xs:integers are xs:decimals).
If you had: <foo>1</foo>, you could have a type system that says that
<foo> is of type xs:boolean, and of type xs:integer, and of type
xs:decimal.
You can think of this as multiple inheritance (a new, anonymous, type
is inherited from both xs:boolean and xs:integer, and the <foo>
element ends up either being a xs:boolean or an xs:integer, or this
new anonymous type). A language that used such a type system would
have to use the usual methods for disambiguation (such as those you
list in your chapter) in situations where polymorphic operators or
functions were used with such a type.
But anyway... one thing you mentioned in your chapter but I wondered
if you could expand on was the impact of ambiguity and non-determinism
on guided editing. I'd always thought that it was non-determinism that
made guided editing hard (and that this was one of the reasons XSD
didn't support non-deterministic content models), but you seem to
suggest that it's ambiguity that causes the problem. Could you explain
a bit more?
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
|