- From: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- Date: Tue, 09 Dec 2008 16:24:41 +0100
- To: Erik Dahlström <ed@opera.com>
- Cc: Doug Schepers <schepers@w3.org>, "public-webapps@w3.org" <public-webapps@w3.org>, www-svg <www-svg@w3.org>
Erik Dahlström wrote: > On Mon, 08 Dec 2008 17:26:18 +0100, Lachlan Hunt > <lachlan.hunt@lachy.id.au> wrote: >> There are several features which will be considered for inclusion >> in the next version of the spec. Why should this one in particular >> be called out over any other requested feature? > > Given that NSResolvers were taken out of the spec it deserves to be > called out, and the problem described. Were there any other features > that were removed in this LC draft? > > The SVG WG have no objections to listing other features that will be > added in the next version. I have not listed any other potential features because I don't think it's appropriate to indicate any sort of premature commitment to any of them within the spec and because feature requests are already recorded and tracked separately. http://www.w3.org/Bugs/Public/buglist.cgi?product=WebAppsWG&component=Selectors+API Each one will be considered fairly and objectively based on the evidence provided, and namespace resolution will be treated no differently in this respect. For this reason, I'm still personally opposed to the inclusion of such a note in the spec. However, having said that, it does seem useful for readers of this specification to understand that prefix resolution is not currently available. I have, therefore, included the following note in the spec: "This specification does not provide support for resolving arbitrary namespace prefixes. However, support for a namespace prefix resolution mechanism may be considered for inclusion in a future version of this specification." >>> == Section 6. The NodeSelector Interface >>> >>>>> The caller must pass a valid group of selectors. >>> That's an authoring requirement, explain how that is applicable? >> It seems perfectly applicable for the spec to define how the >> methods need to be used by conforming applications. Please explain >> why you think it is not applicable? >> >>>>> The group of selectors must not use namespace prefixes that >>>>> need to be resolved. >>> That also sounds like an authoring requirement. If it's an >>> authoring requirement please mark it as informative, or as only >>> applying to "conforming applications". > > See > http://lists.w3.org/Archives/Public/public-webapps/2008OctDec/0453.html. I have changed it from MUST to SHOULD and rephrased the statement so that it just describes the syntax of the expected input. "Both querySelector() and querySelectorAll() take a group of selectors (selectors) as their argument. This group of selectors should match the selectors_group production with the additional provision that leading and trailing whitespace is permitted. This group of selectors should not use namespace prefixes that need to be resolved." >> "This group of selectors must not use namespace prefixes that need >> to be resolved." > > What are the consequences on future versions of the spec? If namespace resolution is included in a future version of the spec, then that is not expected to cause any issues. >>>>> Selectors are evaluated against a given element in the >>>>> context the entire DOM tree in which the element is located. >>> ...in the context of? >> I'm not sure how to phrase that any more clearly. It means that >> when evaluating a selector, all elements in the document may be >> taken into account, and not just those within the node's subtree. > > You were only missing an 'of' in the sentence there, simply adding > that will be enough to satisfy this comment. That wasn't clear since "... in the context of?" appeared to be a question. Anyway, this was already fixed. >>>> This means that the object will instead contain a list of matching >>>> Element nodes that were in the document at the time the list was created. >>> >>> Is this time defined? I propose to reword it as follows: >>> "This means that the object will instead contain a list of matching >>> Element nodes that were in the document at the time the method was >>> invoked." > > Some of the things I could potentially see at risk of being > non-interoperable are listed below. > > Using the Selectors API: > > * on a subtree that is outside of the document I don't understand what the issue is with this, or how it's related to when the list is created. > * on a document that isn't fully loaded (e.g triggered from a load > event on some element in the document) This seems to be a reason to retain the current wording instead of changing it as proposed. If the spec said "at the time the method was invoked", then the implementation would have to ensure that no further changes to the document were made between then and the time it obtained the result. By saying "at the time the list is created" makes it easier to populate the list whenever the implementation is ready, simply based on what it has available to it at the time. But regardless of the wording in this case, given the unpredicatable nature of loading times, the results could potentially vary anyway, depending on all sorts of factors affecting when resources finish loading. > * triggered from a document load event I don't understand what the issue is here either. >> Similar functionality was previously requested and rejected for the >> xml and xmlns prefixes, and I see no reason to treat the xhtml and >> svg prefixes any differently. >> >> http://lists.w3.org/Archives/Public/public-webapi/2008Feb/0062.html > > Those are quite different, since neither of the svg or xhtml > namespaces are predefined (unless you count doctype declarations > possibly). > > So essentially Selectors API is a downlevel client[2]? No, although it is possible to be implemented by such a client. IE8 is a downlevel client, but Opera, Safari and Firefox are not. The API supports the syntax, which can be used for the null- and any-namespace cases. It just doesn't have a namespace prefix resolution mechanism. >>> Or alternatively forward the reader to DOM 3 XPath for the cases >>> where the Selectors API falls short. >> >> Please explain how providing a reference to DOM 3 XPath would be of >> any benefit? How would it help readers in their understanding of >> this spec? > > There are limitations in Selectors API that will force people into > either doing workarounds, or to use another technology for the > selection. Indeed, there are some significant limitations of the current API. Some of them are even more significant than the lack of namespace resolution. But beyond namespace resolution, which hasn't yet been proven to be a significant problem in practice, it's not clear to me that XPath solves any of the other significant issues (particularly the issue regarding selector scoping that is a real problem for JS libraries). > It seems the SVG WG isn't alone in wanting to have the informative > reference to DOM 3 XPath: > http://lists.w3.org/Archives/Public/public-webapps/2008OctDec/0451.html > http://lists.w3.org/Archives/Public/public-webapps/2008OctDec/0449.html The popularity of a particular point of view doesn't have any impact on the merits of the arguments in favour of it. >>> == 8. Examples >>> >>> Please add an example such as this one: >>> ... >>> Then explain how to use the Selectors API to select only the svg >>> 'font' elements and how to select only the svg font elements that >>> have a prefix on the element. >> >> As Boris explained, and as I'm sure you're well aware, it is not >> possible to distinguish between elements with the same local name >> without using namespaces. I cannot demonstrate the impossible and >> have not included the example in the spec. > > The SVG WG disagrees with this reasoning. People will run into this > problem, and it seems appropriate to give an example and to show how > to work around the lack of namespace-aware selectors. Note that even > if it's not possible to distinguish between the elements using > Selectors API alone, the result can be filtered e.g using DOM Core > methods to give a meaningful result. Another workaround could be to > pass a descendant combinator selector such as "svg font" to check the > the <font> element has an <svg> element ancestor, this would cover > many of the use-cases. I will reconsider this issue shortly. > It would also be useful to mention the backslash escaping mechanism > for downlevel clients[2]. That technique is already adequately described in Selectors, and since this API is not inherently limited to downlevel clients (in fact, most implementations are not), doing so does not seem useful. -- Lachlan Hunt - Opera Software http://lachy.id.au/ http://www.opera.com/
Received on Tuesday, 9 December 2008 15:25:23 UTC