Lists Home |
Date Index |
Michael Fitzgerald scripsit:
> RELAX NG can do type derivation by restriction, union, and list. In some
> ways, RELAX NG's list type derivation is more powerful that XML Schema's
> derivation. All the facets that are available in XML Schema are available
> in implementations of RELAX NG. In what specific ways does RELAX NG fall
> short in type derivation?
I think I explained this before, but maybe it didn't take.
A WXS schema imposes three kinds of constraints:
1) Schema-instance constraints: if an attribute is declared to have a
certain (simple) type in the schema, then all values of that attribute
in the instance must conform to the type.
2) Instance-instance constraints: if an attribute is declared to be
unique, then no two values of that attribute in the instance may be
equal (according to the definition of "equality" for the attribute's
3) Schema-schema constraints: if a complex type is said to be derived
by restriction from another complex type, then it must redeclare the
components of that type either unchanged or reduced in what may be
RNG does not have constraints of types 2 or 3. Therefore, it cannot
specify complex type derivation by restriction. In addition,
restricting simple types by facet is not a first-class operation,
so once a built-in simple type has been restricted by facets,
it can't be restricted further. This is a place where WXS is
genuinely more orthogonal than RNG.
(IMHO the way in which complex type derivation by restriction is
done is bogus, because it generates fragile subclasses, a kind of
bassackwards version of the well-known "fragile superclass" problem
John Cowan <firstname.lastname@example.org> http://www.ccil.org/~cowan
"One time I called in to the central system and started working on a big
thick sed and awk heavy duty data bashing script. One of the geologists
came by, looked over my shoulder and said "Oh, that happens to me too.
Try hanging up and phoning in again." --Beverly Erlebacher