- From: Sandy Gao <sandygao@ca.ibm.com>
- Date: Tue, 18 Sep 2007 13:53:27 -0400
- To: public-sml@w3.org
- Message-ID: <OF43F5BB55.D8578A02-ON8525735A.00621300-8525735A.006246DE@ca.ibm.com>
Some of the bullets obviously messed up. Hope people can still tell what I
meant.
And I shouldn't have used "substitutable for". I forgot this term was
introduced in schema 1.1. Should have used "derived from" (as the current
draft does).
Thanks,
Sandy Gao
XML Technologies, IBM Canada
Editor, W3C XML Schema WG
Member, W3C SML WG
(1-905) 413-3255 T/L 969-3255
Sandy Gao/Toronto/IBM@IBMCA
Sent by: public-sml-request@w3.org
2007-09-18 11:12 AM
To
public-sml@w3.org
cc
Subject
Re: [Bug 4793] Restructure section 3.4 to follow the following 1) mapping
from syntax to cannonical representation, 2) what constitutues a valid
usage and 3) implications on instances.
The copy I'm looking at:
http://dev.w3.org/cvsweb/~checkout~/2007/xml/sml/build/sml.html?content-type=text/html;%20charset=utf-8#sml_acyclic
4.3 and 4.3.1 mostly look good. A couple of minor things:
- In 4.3, the following sentence should be on a separate line:
{acyclic} An xs:boolean value. Required.
(Or maybe it should be bulleted, like the {target *} properties.)
- In 4.3.1.2, I would want to avoid "a cyclic type", which a) isn't
defined, and b) sounds too similar to "acyclic type". Some rewording may
be useful.
4.3.2 is less complete. If we don't have time to finish it, I think we
should still use the new section structure, but move existing text into
those sections. (The old text wasn't consistent when discussing Particles,
so "and every Particle component" should be removed from 4.3. 4.3.2 can be
something like ...
(Note that the only *real* change is about inheriting target* from a
restricted base type. This was incompletely and wrongly specified anyway.
e.g. If base has a local element with target* and derived has a reference
to a global element with the same name, how to inherit? And this kind of
magic inheritance doesn't happen in schema; we may want to stay in-sync
with schema.)
(After writing the following, I think we need 2 new issues opened: 1. a
similar rewrite for key/keyref/unique, and 2. when to all inherit these
constrains. I will open them.)
(The following is obviously more radical change than what I planned. Hope
people find it useful.)
4.3.2 Constraints on Targets
SML supports three attributes: sml:targetElement, sml:targetRequired, and
sml:targetType, for constraining the target of a reference. These three
attributes are collectively called sml:target* attributes and they MUST be
supported on global and local element declarations.
4.3.2.1 Mapping from schema
{target element} is as specified by the appropriate case among the
following:
If sml:targetElement is present, then its actual value MUST resolve to a
global element declaration G, and {target element} is G.
Otherwise if {substitution group affiliation} is not absent, then {target
element} is the same as that of the {substitution group affiliation}.
Otherwise {target element} is absent.
{target required} is as specified by the appropriate case among the
following:
If sml:targetRequired is present, then {target required} is the actual
value this attribute.
Otherwise (sml:targetRequired is not present) if {substitution group
affiliation} is not absent, then {target required} is the same as that of
the {substitution group affiliation}.
Otherwise {target element} is false.
{target type} is as specified by the appropriate case among the following:
If sml:targetType is present, then its actual value MUST resolve to a
global type definition T, and {target type} is T.
Otherwise (sml:targetType is not present) if {substitution group
affiliation} is not absent, then {target type} is the same as that of the
{substitution group affiliation}.
Otherwise {target element} is absent.
4.3.2.2 Rules
Model validators that conform to this specification MUST enforce the
following:
1. If a global element declaration S has a {substitution group
affiliation} G, then all the following are true:
If G has {target element} TEG, then S has {target element} TES and TES is
the same as TEG or is in the substitution group of TEG.
If G has {target required} true then S also has {target required} true.
If G has {target type} TTG, then S has {target type} TTS and TTS is
validly substitutable for TTG.
If 2 element declarations E1 and E2 have the same {namespace name} and
{name} and they are both contained (directly, indirectly, or implicitly)
in a content model of a complex type, then E1 and E2 have the same {target
element}, {target required}, and {target type}.
For a complex type D derived by restriction from its {base type
definition} B, if ED is included by D and EB is included in B and ED and
EB satisfies the "NameAndTypeOK" constraint (see "Schema Component
Constraint: Particle Valid (Restriction) ", section 3.9.6, "Constraints on
Particle Schema Components", [XML Schema Structures] for XML Schema's
definition of valid restrictions), then all the following are true:
If EB has {target element} TEB, then ED has {target element} TED and TED
is the same as TEB or is in the substitution group of TEB.
If EB has {target required} true then ED also has {target required} true.
If EB has {target type} TTB, then ED has {target type} TTD and TTD is
validly substitutable for TTB.
The above condition #2 has been defined to reduce the implementation
burden on model validators for verifying that the use of sml:target*
attributes is consistent across derivation by restriction. These
conditions enable model validators to find the restricted particle for a
restricting particle using a simple name match when sml:target* attributes
are specified for these particles.
In the absence of the above conditions, it is extremely difficult for SML
validators to verify consistent use of sml:target* attributes across a
base type and its restricted derived type. In order to verify consistent
use of an sml:target* attribute on a restricted particle in the base type
and its restricting particle in a restricted derived type, it is necessary
to connect the particles in the derived type with those from the
restricted base type. However, this level of support is not provided by
most XML Schema frameworks; thus most SML validators would otherwise need
to duplicate large parts of XML Schema's compilation logic to verify
consistent usage of sml:target* attributes across derivation by
restriction.
4.3.2.3 Validation
If an element declaration E has {target element} TE, then each element
instance of E that is also a resolved SML reference MUST target an element
that is an instance of TE or an instance of some global element
declaration in the substitution group of TE.
If an element declaration E has {target required} true, then each element
instance of E that is also an SML reference MUST target some element in
the model, i.e. no instance of E can be a null or unresolved SML
reference.
If an element declaration E has {target type} TT, then each element
instance of E that is also a resolved SML reference MUST target an element
whose [type definition] is TT or a type substitutable for TT.
Thanks,
Sandy Gao
XML Technologies, IBM Canada
Editor, W3C XML Schema WG
Member, W3C SML WG
(1-905) 413-3255 T/L 969-3255
bugzilla@wiggum.w3.org
Sent by: public-sml-request@w3.org
2007-09-17 12:32 PM
To
public-sml@w3.org
cc
Subject
[Bug 4793] Restructure section 3.4 to follow the following 1) mapping from
syntax to cannonical representation, 2) what constitutues a valid usage
and 3) implications on instances.
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4793
james.lynn@hp.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
------- Comment #2 from james.lynn@hp.com 2007-09-17 16:32 -------
This section is now 4.3. This bug requires more than restructuring and
will
need extensive rewriting in section 4.3.2 Constraints on Targets. Some
restructuring has been done on both 4.3.1 and 4.3.2.
Received on Tuesday, 18 September 2007 17:53:41 UTC