[relaxng-user] FW: Jing & Trang errors when processing RNC gr
ammar
Bob Foster
bob at objfac.com
Wed Apr 28 00:00:56 ICT 2004
Hutchison, Ben wrote:
> Well, Im impressed by the rapid and authorative responses I have
> received to my questions; thanks due to Bob and Makoto.
>
> Further queries inline below. Apologies if they seem elementary, but Ive
> no formal training or prior experience developing grammars/schemas.
>
> > -----Original Message-----
> > From: Bob Foster [mailto:bob at objfac.com]
> ...
> > can't be sure it's what the author meant. Why is the platform
> > attribute
> > optional and the name attribute not? Both are optional in the revised
> > version. It is possible the following would be a more faithful fix:
>
> Indeed. I do require a strictly mandatory name attribute, but an
> optional platform attribute.
> ...
> > > error message I cannot understand: E "oneOrMore" contains "group"
> > > contains "attribute"
> >
> > ConfigGroupEntry* where ConfigGroupEntry has as an alternative
> > ConfigValue, a group that contains a group,
> > NamedElementAttributes, that
> > contains two attributes.
>
> Ok...why is this illegal?
I'm not qualified to say _why_ it's illegal. I'm sure MURATA Makato
knows. I just wanted to help you find out for yourself what the issue
is. If you check the RELAX NG specification, you'll find, in section
7.1.2, a prohibition of the path:
oneOrMore//group//attribute
and others. RELAX NG doesn't allow any arbitrary pattern one might
specify; the design is a balance between expressive power and the
ability to write a practical, robust validator. The good news is that
RELAX NG has far fewer restrictions than other pattern-based schema
languages, and because of the clarity of its spec it is much easier to
understand what those restrictions are.
> > The "oneOrMore" reference is because * (zeroOrMore) is
> > defined in RELAX
> > NG as +? (optional oneOrMore).
>
> Ah! That was confusing me. I couldn't see any oneOrMore pattern in my
> grammar.
> >
> > NamedElementAttributes is obviously redundant as it is used,
> > so a simple
> > fix would be to take it out of ConfigValue.
>
> Why is it obviously redundant? I want NamedElementAttributes present on
> both ConfigGroups and ConfigValues. Thats why I had specified it in both
> clauses of my original (problematic) grammar.
I meant it was redundant as used. More than one path in the definition
of element ConfigGroup led to NamedElementAttributes, and that was the
only place ConfigGroupEntry/ConfigValue was used.
> > Trang can't convert everything, esp. an invalid schema, and
> > even if it
> > did the conversion could not be faithful where there is a
> > choice between
> > an attribute and an element. XML Schema can't describe this.
>
> By "choice between an attribute and an element", do you mean a case of
> either sub-element OR attributes? I didn't think I had such a case in my
> grammar, and I certainly dont mean to.
You did have such a case, though. ConfigGroupEntry had as alternatives a
ConfigGroup (an element) and ConfigValue (a group that contained
attributes). If in an instance document you specified one of the
attributes, you could not also have a nested ConfigGroup element.
Bob
> Thanks
> Ben
More information about the relaxng-user
mailing list