- From: Michael Dyck <michaeldyck@shaw.ca>
- Date: Tue, 30 Jul 2002 23:53:13 -0700
- To: www-xml-linking-comments@w3.org
[Third time I'm sending this. Sorry if anyone is getting multiple copies, but it's not showing up in the archives.] ------------------------------------------------------------------------ XPointer Framework W3C Working Draft 10 July 2002 1.2 Terminology Definition: error "results are undefined" Not entirely. In fact, for the XPointer processor, the results are quite well-defined: section 2 states that the processor must report the error to the application. Beyond that, yes, results are undefined. Definition: failure "failure of a pointer part" This phrase isn't really defined. An XPointer processor identifies a subresource of a resource by applying a pointer to it. The first sentence of the definition says that if it's unable to do so, that's a failure. (A failure of the pointer, one might say.) So the phrase "failure of a pointer part" has not been defined. I think it would be clearer to make "failure" a property (or result) *only* of pointer parts. E.g., change The inability of an XPointer processor to identify ... to The inability of an XPointer processor, when evaluating a pointer part of a scheme-based pointer, to identify ... Moreover, you could replace the term "failure" with "pointer part failure". And you could note that the term is typically invoked with wording such as "the pointer part fails". Yes, this would mean that you can no longer talk about "the failure of a shorthand pointer", but there seems to be no need to. Where section 3.2 says: If no element is identified by this process, the Name fails and the pointer is in error. just delete: the Name fails and and you've lost no semantics. Definition: namespace binding context "A list of ... pairs of ... prefixes and ... URIs." This description doesn't disallow a list that contains multiple pairs with the same prefix. It would probably be better to use XPath's terminology: a *mapping* from prefixes to URIs. And actually, it's URI references, not URIs. ------------------------------------------------------------------------ 2 Conformance para 2 + 3 "normatively depend on" It's not entirely clear what this means. I understand what it means for a specification to normatively depend on another specification, but this is talking about XPointer processors normatively depending on certain procedures and information to do with the input that the application passes to it. Thus, this seems to be more about the conformance of the application than the XPointer processor. para 3 "sufficient input about an XML resource to identify the following information items and properties" Isn't the infoset part of the resource? In which case, you shouldn't need additional input about the resource. (And if the infoset isn't part of the resource, what is?) ------------------------------------------------------------------------ 3 Language and Processing para 2 "a fragment identifier taken from the URI reference that was used to access the resource" It seems unnecessary to *require* that the XPointer processor's input be derived from a URI reference. Yes, that's the expected case, and the case that the XPointer language is explicitly intended for, but it doesn't have to be the only case allowed. It's not like the XPointer processor cares where its input comes from. Instead of the quoted phrase, you could say a string to be used as a pointer which nicely parallels the phrasing in 3.1 para 1. "the pointer extracted from the fragment identifier" It's never stated what this extraction entails. I'm not sure that it entails anything. "the XPointer processor must reverse the encoding" This appears to be at odds with section 2 para 2, which I took to imply that the application must reverse the encoding. Note that, if you accept that a XPointer processor's inputs might come from somewhere other than a URI reference, only the application will know whether any 2396/2732-decoding is necessary. ------------------------------------------------------------------------ 3.1 Syntax XPointer Framework Syntax [3] schemebased ::= ptrpart (S?, ptrpart)* Delete the comma. Validity constraint "The end of a pointer part is signaled by the right parenthesis ")" character that is balanced with the left parenthesis "(" character that began the part." This sentence sounds more like a parsing rule than a syntax rule. Does it express a constraint, or is it just a preamble to the real constraint? "If either a left or a right parenthesis occurs without being balanced by its counterpart" This wording suggests that a parenthesis could have a counterpart and yet not be balanced by it. I suggest: ... without being balanced by a counterpart or ... without having a balancing counterpart or ... without having a counterpart to balance it "Any other use of a circumflex is an error." So escaping *balanced* parentheses is an error? I think this is a bad idea. For instance, consider the ptrpart: some-scheme(blah(")(")) The person who writes it may think, "Well, the parentheses in blah(...) are certainly balanced, but the parentheses in the string literal ")(" aren't, so I'd better circumflex-escape them." Thus: some-scheme(blah("^)^(")) However, from the XPointer processor's point of view, the schemedata blah(")(") *does* have balanced parentheses. So the version with circumflexes is supposedly an error? This seems unnecessarily restrictive. You could avoid all these problems by dropping the validity constraint and instead specifying the constraint in EBNF: [6] schemedata ::= ( Char - [()^] | '^(' | '^)' | '^^' | '(' schemedata ')' )* ------------------------------------------------------------------------ 3.2 Shorthand Pointer para 1 "an XML-defined Name" This could be misunderstood to mean something like "a name that has been defined by an XML document somewhere", rather than "a token that matches the 'Name' symbol defined in the XML specification". I think it would be much clearer to say, in the Syntax section: The symbols 'Name', 'S', and 'Char' are defined in the XML spec. The symbol 'NCName' is defined in the XML Namespaces spec. point 1 and 2 "with an [attributes] collection containing an attribute II, or whose [children] collection contains an element II" This might be a bit clearer if the two clauses had parallel structure: whose [attributes] collection contains an attribute II, or whose [children] collection contains an element II last para before the Note "the Name fails and" Delete. (See my comment on the definition of failure.) ------------------------------------------------------------------------ 3.3 Scheme-Based Pointer para 1 "XML-defined white space" "XML-defined Char" See my comment on 3.2 para 1. para 2 "In the case of URI references referring to any resource" I don't think it's necessary to bring up URI references here. You could replace the quoted phrase with just: For any resource "this specification reserves all scheme names ..." Could you be more concrete about what this means? One possibility is that a conforming XPointer processor must (for these media types) treat any scheme name other than those defined by W3C XPointer scheme specs as an error. However, this would be rather impolite, given that you're encouraging other XML-based media types to use the XPointer framework in defining their own fragment identifier languages: consider what happens when such a language is *not* defined by a "W3C XPointer scheme specification", and content negotiation causes the resource to be represented as text/xml, rather than its usual text/something+xml. Suddenly the fragment identifier doesn't work, even if it includes an xpointer() fallback. Instead, perhaps the XPointer processor must treat it as a failure of the pointer part. If that's the case, it would make more sense to say it *after* the subsequent paragraph, which talks about evaluating pointer parts. para 3 "the scheme identifies no subresource" Change "scheme" to "scheme data", I think. "that part is consumed" "Consumed"? An XPointer processor consumes pointer parts? How about "that part is skipped"? "If a scheme-based pointer has an error in its construction as a whole, evaluation stops and pointer parts are not consumed." Shouldn't the XPointer processor detect 'an error in the construction as a whole' before starting evaluation? Anyway, section 3.1 para 1 says: "If a string used as a pointer does not adhere to the syntax defined in this section, it is an error." Doesn't that cover this? If it does, delete this sentence: section 3.1 para 1 is clearer. If it doesn't, please clarify this sentence. para 4 "A scheme-based pointer might contain characters that are not allowed in a URI reference." This is true of shorthand pointers as well, so this paragraph probably belongs in section 3.1. "by the time a pointer is fed as input ... into a URI resolver" Unless a URI resolver resolves URI references (not just URIs), it won't see fragment identifers. ------------------------------------------------------------------------ 3.4 Namespace Binding Context para 1 "interpreting element and attribute names' namespace prefixes" This might be clearer as "interpreting the namespace prefixes of element and attribute names". para 2 "Pointer parts must not attempt to redefine the 'xml' prefix" Given the "must not", wouldn't the attempt be a violation of the framework? In which case, I'd expect at least a pointer part failure, if not an error. Or do you only mean "should not"? And if a pointer part binds 'xml' to its proper URI, does that constitute "redefining" it? XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XPointer element() Scheme W3C Working Draft 10 July 2002 1 Introduction para 3 "The terms ..." Actually, the term "application" isn't used at all in this spec. "Note that errors defined by this specification are distinct from XPointer Framework errors." Well in that case, this spec *doesn't* use the term 'error' as defined in the XPointer Framework spec, as claimed by the preceding sentence. But in fact, this spec doesn't need to use the word 'error'. Where it says (section 3 para 2): it is an element() scheme error and the pointer part fails it could just say: the pointer part fails with no loss of semantics. ------------------------------------------------------------------------ 2 Conformance para 2 "normatively depend on sufficient input about ..." See my comments on Framework section 2 paras 2+3. ------------------------------------------------------------------------ 3 Language and Processing para 2 "it is an element() scheme error and" Delete. See my comment on section 1 para 3. element() Scheme Syntax [1] elementschemedata ::= (Name, childseq?) | childseq Delete comma. [2] childseq ::= ('/' [1-9] [0-9]* )+ Delete space before right paren. para 6 ("A child sequence appearing alone...") "The integer following the first slash represents the nth" Insert 'n' after "integer"? Change "represents" to "locates". "which case" Insert "in" before "which". XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XPointer xmlns() Scheme W3C Working Draft 10 July 2002 1 Introduction para 3 "The terms ..." The term "application" isn't used at all in this spec either. "Note that errors defined by this specification..." Ditto my comment on the same sentence in the element() scheme spec. ------------------------------------------------------------------------ 3 Language and Processing para 2 "it is an xmlns() scheme error and" Delete. para 3 "S is as defined" Change "S is" to "S and Char are". para 4 "(NsURIRef)" De-bold. "and serves" Insert "thus" after "and". "If a pointer part defines a binding for a namespace prefix that already has an entry in the namespace binding context, the new entry overrides the old one." This sentence should be moved to section 3.4 of the Framework spec. para 7 "If the pointer part fails due to failure to conform to the syntax described in this specification, it does not contribute an entry to the namespace binding context." This would be easier to state at the end of para 2: there, change the pointer part fails. to the pointer part fails and does not contribute an entry to the namespace binding context. para 9 "The prefixes used in pointer parts ... the pointer part is addressing" You switch from plural to singular. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -Michael Dyck
Received on Wednesday, 31 July 2002 02:54:40 UTC