- From: <bugzilla@farnsworth.w3.org>
- Date: Wed, 23 Apr 2008 02:10:59 +0000
- To: public-sml@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5657
Summary: Define implementation-defined and -dependent, use
consistently
Product: SML
Version: LC
Platform: Macintosh
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Core+Interchange Format
AssignedTo: cmsmcq@w3.org
ReportedBy: cmsmcq@w3.org
QAContact: public-sml@w3.org
The terms 'implementation-defined' and 'implementation-dependent' are
both used in the current version of the spec. They need to be
defined, and I think they could usefully be used more consistently.
This bug report makes several proposals in this connection.
1) Adopt the distinction between implementation-defined and -dependent
used in the QT and XSD specs.
In the XSLT / XPath / XQuery (aka QT) specs, the two terms are used to
make an important and useful distinction, and I propose that we should
follow their usage and make a similar distinction. The terms are
defined in XPath 2.0 thus:
Certain aspects of language processing are described in this
specification as implementation-defined or
implementation-dependent.
- [Definition: Implementation-defined indicates an aspect
that may differ between implementations, but must be
specified by the implementor for each particular
implementation.] *
- [Definition: Implementation-dependent indicates an aspect
that may differ between implementations, is not specified by
this or any W3C specification, and is not required to be
specified by the implementor for any particular
implementation.]
XPath 2.0 adds:
A language aspect described in this specification as
implementation-defined or implementation dependent may be further
constrained by the specifications of a host language in which
XPath is embedded.
If we expect SML to be embedded in, or referred to normatively by
other specs, we might want to say something similar to that last.
XSLT 2.0 uses different words but makes the same essential
distinction:
[Definition: In this specification, the term
implementation-defined refers to a feature where the
implementation is allowed some flexibility, and where the choices
made by the implementation must be described in documentation that
accompanies any conformance claim.]
[Definition: The term implementation-dependent refers to a feature
where the behavior may vary from one implementation to another,
and where the vendor is not expected to provide a full
specification of the behavior.] (This might apply, for example, to
limits on the size of source documents that can be transformed.)
In all cases where this specification leaves the behavior
implementation-defined or implementation-dependent, the
implementation has the option of providing mechanisms that allow
the user to influence the behavior.
2) Retain the term 'implementation-defined' in some places
We use the term 'implementation-defined' in several places where it
seems to me to be the right one to use:
- SML 4.2.3 Identical Targets, bullet 3
- SML 4.2.7 deref() XPath Extension Function, bullet 1.b
- SML-IF 5.4.3 Schema Bindings, bullet 2.d
- SML-IF 5.4.3 Schema Bindings 3.c
3) Change from 'implementation-dependent' to 'implementation-defined'
w.r.t the base URI used in absolutizing relative references
There are several places where we currently use the term
'implementation-dependent', but mean (or I think should mean)
'implementation-defined', if we adopt the usage of QT. Two of them
relate to base URI choice.
SML 4.3 SML Reference Schemes, bullet 3.b, says
b. If these references are allowed to be relative references,
i.e. they are not already target-complete, then some
implementation-dependent base URI or IRI is used to resolve them
to URIs or IRIs. (See section 5 of [IETF RFC 3986] and section
6.5 of [IETF RFC 3987].)
SML 4.3.1 SML URI Reference Scheme, bullet 2.a, says
a. If the URI is a relative reference, then use an
implementation-dependent base URI to resolve it to an URI.
Personally, I agree with Henry Thompson's position (bug 5542) that we
should use xml:base to specify the base URI, and that there should be
nothing implementation-defined or -dependent about it. But even if we
don't do that, we should not specify that a processor is allowed to
use any base URI it likes and is not required to tell the user how the
base URI is chosen, or to choose it the same way from moment to
moment.
(Also, w.r.t. 4.3.1, I think that the phrase "an URI" should probably
be "an absolute URI", but I have not checked the RFCs for
terminology.)
4) Change rule binding descriptions from 'implementation-dependent' to
'-defined'.
SML 6.1 Informal Description [of rules] (Non-Normative), final
paragraph says
The binding of the rule document containing the StudentPattern
pattern to documents that may contain instances of StrictUniversity
element is implementation-dependent and hence outside the scope of
this specification.
SML 6.4.1 Rule Binding, last sentence of para
The mechanism for binding rule documents to a set of documents in a
model is implementation-dependent and hence outside the scope of
this specification.
In order to be usable, an implementation is going to have to tell
users how to arrange for rule documents to be bound to other
documents; that means 'implementation-dependent' is not sufficient.
5) Consider whether behavior when documents are unreachable is
implementation-defined or implementation-dependent.
There is one place where we currently use the term
'implementation-dependent' where it is not obviously wrong, but where
we should probably consider explicitly whether we should say
'-dependent' or '-defined'.
SML 8. Conformance Criteria says
If any model document is not reachable, then the model validator's
behavior is implementation-defined.
I'm not sure what the pros and cons on either side of the choice are.
Received on Wednesday, 23 April 2008 02:11:30 UTC