[
Lists Home |
Date Index |
Thread Index
]
ooops... Just found out how substitution groups can be better translated
in RELAX NG just after having pressed the send button. What I have
written would work, but here is a better way to express substitution
groups.
Compact syntax:
Head = element Head { BaseType }
Head |= element Restricted { RestrictedType }
Head |= element Extended { ExtendedType }
start = element Root { Head }
XML Syntax:
<define name="Head">
<element name="Head">
<ref name="BaseType"/>
</element>
</define>
<define name="Head" combine="choice">
<element name="Restricted">
<ref name="RestrictedType"/>
</element>
</define>
<define name="Head" combine="choice">
<element name="Extended">
<ref name="ExtendedType"/>
</element>
</define>
<start>
<element name="Root">
<ref name="Head"/>
</element>
</start>
Explanation;
The first definition of the Head element is the definition of the
substitution group head and each of the following ones add a new element
as an option.
I think that this is near enough from W3C XML Schema substitution group
that it doesn't require to be marked by an annotation (tools could be
clever enough to detect this pattern) but an annotation could be added
(like I have shown in the previous mail) to make that more explicit.
This is also the case of derivation by extensions in which I had added
no annotation but could also carry one.
Eric
--
GPG-PGP: 2A528005
Don't you think all these XML schema languages should work together?
http://dsdl.org
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
Ceci est une partie de message=?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=
|