Re: [office] OpenDocument TC coordination call minutes 2007-08-13

From
Bruce D'Arcus <>
Date
2007-08-14T15:55:58+00:00
ID
Thread
Re: [office] OpenDocument TC coordination call minutes 2007-08-13
Lars Oppermann wrote:
> Hi Kohei,
> 
> Yes this is possible in Relax NG (and XSD). You may want to have a look 
> at Murata et al. (2005) for some of the background if you are interested 
> in how the schema languages compare in expressiveness...
> 
> Here is a little example on how this can be done specifically in Relax 
> NG. Consider the following document should be rendered invalid:

Just a hint: MUCH easier to read and write RNG using the compact syntax.

Here's an example of validation of child elements conditioned on an 
attribute.

start = element doc { foo | bar }

foo = attribute type { "foo" }, element x { text }+
bar = attribute type { "bar" }, element y { text }+

This would be valid:

<doc type="foo">
   <x>...</x>
</doc>

.. this would not be valid:

<doc type="foo">
   <y>...</y>
</doc>

Note: you can't do this with XML Schema, and there are some limitations 
even within RNG (you cannot condition validation on an attribute and 
have interleave patterns within that pattern).

Bruce