- From: Laurens Holst <lholst@students.cs.uu.nl>
- Date: Tue, 24 May 2005 02:35:47 +0200
- To: Sjoerd Visscher <sjoerd@w3future.com>
- Cc: www-html@w3.org
Sjoerd Visscher wrote:
>> I also haven't heard any response to the issue that it creates
>> problems with XPath and CSS selectors.
>
> OK, show me the XPath that selects the content between 2 separators.
If CSS isn’t a valid argument for changing markup (which I happen to
agree with :)), why should the incapability of XPath be a good argument?
But ok, I take you up on that challenge!
(However, I’ll cheat (a little) and use XPath 2.0 :))
separator[$i]/following-sibling::* intersect
separator[$i+1]/preceding-sibling::*
Or, something which also works when either of the separators doesn’t
exist (0 = before first separator, 1 = between first and second
separator, ..., n = after last separator):
* except separator[$i]/preceding-sibling::* except
separator[$i+1]/following-sibling::* except separator
Using the DOM it’s pretty easy too:
var blockno = 2; // which block inbetween separators you want
var list = new Array();
for (var i=0; i<elm.childNodes.length || blockno < 0; i++) {
if (elm.childNodes[i].nodeName == 'separator') blockno--;
else if (blockno == 0) list.push(elm.childNodes[j]);
}
Hardly any longer than most other Javascript functions to recreate an
XPath query using the DOM functions.
As far as CSS is concerned, you can select the elements following a
<separator/> element by using the ‘~’ selector (or the element following
it immediately using ‘+’). So within its common limitations, CSS is
capable of styling sections around and inbetween separators as well.
So, let’s get this straight, you’re to argueing to change a nice general
markup element which represents exactly what it does into something with
a stricter meaning (e.g. a <perspective> tag which only applies to one
<selector/> use case)...
...just because of a limitation in a selector language (XPath 1.0)?
~Grauw
--
Ushiko-san! Kimi wa doushite, Ushiko-san!!
Received on Tuesday, 24 May 2005 00:35:43 UTC