- From: Chris Lilley <chris@w3.org>
- Date: Sat, 3 Sep 2005 05:37:04 +0200
- To: www-xml-linking-comments@w3.org
Hello www-xml-linking-comments,
Hello XML Core Working Group
The SVG WG has reviewed
http://www.w3.org/TR/2005/WD-xlink11-20050707/
in the context of
http://www.w3.org/TR/xlink10-ext/
and has the following observations:
1) General
Thank you for producing a clear set of requirements that describe the
1.1 work, and then meeting those requirements. This is a useful revision
to the specification. We have some detailed comments, please see below.
2) Making simple XLinks an application-level default
As http://www.w3.org/TR/xlink10-ext/ notes,
"When XLink 1.0 was developed, it seemed reasonable to depend on DTD
validation to provide this default value when it was a burden to
authors to enter it by hand"
While noting in passing that the assignment of default attribute values
is independent of validation, we agree both that it seemed reasonable at
the time (and this is exactly what the SVG 1.0 and 1.1 DTDs did) and
also agree that it gives problems because of the optional fetching of
the external DTD subset and the annoyance of putting it in the internal
DTD subset.
Therefore, the wording at
http://www.w3.org/TR/2005/WD-xlink11-20050707/#markup-reqs
is very useful:
"2. it does not have a type attribute from the XLink namespace and it
adheres to the conformance constraints imposed by the XLink simple
element type, as prescribed in this specification."
However, this text is contradicted in several places as noted below.
2.1) type attribute still sometimes required
It seems that if the href attribute is *not* supplied, which is allowed
by XLink 1.1, the type="simple" must be supplied - is that intentional?
SVG WG is okay with this restriction, if it was intended, but would
prefer not to have this restrivtion.
2.2) Specification text contradictory
4.1 XLink Attribute Usage Patterns
http://www.w3.org/TR/2005/WD-xlink11-20050707/#d0e594
states, for simple links
"At least one of type or href must be specified".
However,
http://www.w3.org/TR/2005/WD-xlink11-20050707/#link-types
states
"The value of the type attribute must be supplied."
We assume the latter is an editorial oversight and this should in fact be
something like:
The value of the type attribute must be supplied, unless a simple link
is required and an href is supplied.
Similarly in
http://www.w3.org/TR/2005/WD-xlink11-20050707/#simple-links
"The XLink element for simple links is any element with an attribute
in the XLink namespace called type with a value of "simple""
is incorrect and is contradicted by the example that follows it. We
suggest that it should be something like
The XLink element for simple links is any element with either a) an
attribute in the XLink namespace called href and no attribute in the
XLink namespace called type, or b) an attribute in the XLink namespace
called type with a value of "simple".
2.3) DTD fragment contradicts spec
The following DTD sample from the specification
<!ATTLIST commandname
xlink:type (simple|none) #REQUIRED
xlink:href CDATA #IMPLIED>
seems to give the impression that type is required. We suggest replacing
this with a more expressive RelaxNG snippet which states that if href is
supplied, the type attribute is optional. The relevant portion of
Appendix D may be suitable:
simple = element * {
(simple.type | href.att | (simple.type, href.att)),
foreign.att*, role.att?, arcrole.att?, title.att?,
show.att?, actuate.att?,
(anyElement | text)*
}
2.4) Example incorrect in 5.2
The example with the caption
Example: Sample simple-Type Element Declarations and Instance
http://www.w3.org/TR/2005/WD-xlink11-20050707/#simple-links
is incorrect.
xlink:role NMTOKEN #FIXED "http://www.example.com/linkprops/student"
xlink:role
E The defaultValue "http://www.example.com/linkprops/student" of
attribute "xlink:role" is not legal as for the lexical constraints of
this attribute type.
This should be CDATA not NMTOKEN
3) Reserving all attributes in the XLink namespace.
This is a useful clarification.
4) Allowing IRIs.
4.1) Inadvertent text from XLink 1.1
In section 5.4 Locator Attribute (href)
http://www.w3.org/TR/xlink/#link-locators
"The value of the href attribute must be an IRI reference as defined
in [IETF RFC 3987] or must result in an IRI reference after the
escaping procedure described below is applied."
That text is incorrect, and seems to be the result of a search and
replace of URI for IRI. The whole point is that the escaping is not
required in the XML instance, and is defined by the IRI specification.
The text should in fact be, simply,
The value of the href attribute must be an IRI reference as defined
in [IETF RFC 3987].
So
http://example.org/L'été
which is an IRI, not
http://example.org/L'%C3%A9t%C3%A9
which is the corresponding URI
See below (4.3) for suggested wording that includes this text.
4.2) Escaping space
In section 5.4 Locator Attribute (href)
http://www.w3.org/TR/xlink/#link-locators
"However, for backwards compatibility, XLink 1.1 processors must
escape one additional character, the space. All occurrences of a space
in the value of an href attribute must be replaced by %20."
This seems to mix levels. Its actually in the IRI reference that space
must be escaped, not in the resulting URI (where it will get escaped
anyway, as happens now).
So
<simple xlink:href="http://example.org/My%20Little%20Pony.jpg">
not
<simple xlink:href="http://example.org/My Little Pony.jpg">
and (IRI with escaped space)
http://example.org/L'été%20suivante
not (IRI)
http://example.org/L'été suivante
nor (URI)
http://example.org/L'%C3%A9t%C3%A9%20suivante
So its not 'escape one additional character', because IRI to URI already
requires escaping the space. Furthermore, the 'class of product' is the
content, not the processor.
4.3) Suggested text for section 5.4 Locator Attribute (href)
To accommodate the corrections from 4.1 and 4.2 we suggest that instead
of these two paragraphs:
The value of the href attribute must be an IRI reference as defined in
[IETF RFC 3987] or must result in an IRI reference after the escaping
procedure described below is applied. (By design, all URIs (Uniform
Resource Identifiers) as defined in [IETF RFC 3986] are also IRIs.)
XLink 1.0 described a procedure for escaping characters found in the
href attribute value that were not allowed in URIs. For XLink 1.1,
those details are normatively described in Section 3.1 of [IETF RFC
3987]. However, for backwards compatibility, XLink 1.1 processors must
escape one additional character, the space. All occurrences of a space
in the value of an href attribute must be replaced by %20.
we suggest
The value of the href attribute must be an IRI reference as defined in
[IETF RFC 3987]. (By design, all URIs (Uniform Resource Identifiers)
as defined in [IETF RFC 3986] are also IRIs.) For backwards
compatibility, all occurrences of a space in the value of an href
attribute must be replaced by %20 in conformant XLink 1.1 content.
and then say (this next part *is* about processors)
Note: XLink 1.0 described a procedure for allowing an IRI as the value
of an href attribute and converting it to a URI by escaping characters
found in the href attribute value that were not allowed in URIs. XLink
1.1 processors must convert IRIs to URIs as described in in Section
3.1 of [IETF RFC 3987] before dereferencing them, if the transport
does not accept IRIs directly.
4.4) Checking
Because it is impractical for any application to check that a value is
a URI reference, this specification follows the lead of [IETF RFC
3986] in this matter and imposes no such conformance testing
requirement on XLink applications.
Since the value of href is an IRI reference, not a URI reference, this
should presumably say
Because it is impractical for any application to check that a value is
an IRI reference, this specification follows the lead of section 6.1
of [IETF RFC 3987] in this matter and imposes no such conformance
testing requirement on XLink applications.
Section 6.1 of RFC 3987 says "(Note: In accordance with URI practice,
generic IRI software cannot and should not check for such limitations.)"
4.5) Relative IRIs
The current text is
If the URI reference is relative, its absolute version must be
computed by the method of [XML Base] before use.
Presumably URI reference should be IRI reference. In addition, section
6.5. Relative IRI References of RFC 3987 should be pointed to. We
suggest
If the IRI reference is relative, its absolute version must be
computed by the method of [XML Base] and section 6.5 of [IETF RFC
3987] before dereferencing.
4.6) Fragments
The current text is
For locators into XML resources, the format of the fragment identifier
(if any) used within the URI reference is specified by the XPointer
specification [XPTR].
[XPTR] points to
http://www.w3.org/TR/2001/WD-xptr-20010108/
whose latest version is
http://www.w3.org/TR/xptr/
which says that it is superceded by
http://www.w3.org/TR/xptr-framework/
http://www.w3.org/TR/xptr-element/
http://www.w3.org/TR/xptr-xmlns/
http://www.w3.org/TR/xptr-xpointer/
We suggest this wording
For locators into XML resources, the format of the fragment identifier
(if any) used within the URI reference is specified by the XPointer
Framework specification [XPTR Framework].
5) Providing Sample XML Schema and RELAX NG Grammars.
These are useful additions, thank you for including them.
6) Attribute Value Defaulting
In section 4.3 Attribute Value Defaulting
http://www.w3.org/TR/2005/WD-xlink11-20050707/#defaulting
please point out that relying on processing of the external DTD subset
is non-interoperable as fetching it is optional for non-validating
processors.
--
Chris Lilley mailto:chris@w3.org
Chair, W3C SVG Working Group
W3C Graphics Activity Lead
Co-Chair, W3C Hypertext CG
Received on Saturday, 3 September 2005 03:50:29 UTC