skipping and ignoring


while writing tests, we've hit upon something that could use a little  
clarification: the distinction between skip and ignore.

One interpretation that we can come to is that the two terms means the  
same thing for files and attributes, but for XML element processing  
"ignore" descends into the content whereas "skip" just moves on to the  
next. This is consistent for instance with the specification  
indicating that element content inside <name> has to be ignored. It  
is, however, not consistent with its application to <description> or  
<icon> examples whereby those that don't match the locale are said to  
be ignored (logically it would be skipped  even though descending  
into the subtree would likely do nothing).

Another interpretation is that when something is ignored the UA must  
act as if it hadn't even been there in the first place, whereas when  
skipping it ought to not process it but remember it has seen it. This  
interpretation is built on the fact that the definitions say that  
ignore causes the UA to "act as if [what is being ignored] is not  
present" whereas skip is to "proceed to the next element".

It becomes less astract if you look at the following conformance  

In "10.1.19 Algorithm to Process a Configuration Document", step 11,  
part "A content element", the following normative assertion is made:  
"If this is not the first content element encountered by the user  
agent, then the user agent must skip this element." A few lines later  
it is followed by "If the src attribute of the content element is  
absent, then the user agent must skip this element."

Take the following configuration:

   <content src="perfectly-good-start-file.html"/>

You see the first. It doesn't have an @src so you skip it. You reach  
the second. It's perfectly serviceable, but it's not the first. Or is  
it? If you consider the first one to have been ignored, then you have  
to act as if it wasn't there. But instead of ignored it says skipped   
and it's not clear whether skipped has the same meaning.

If the second element is not taken into account, then we have a  
potential problem with forward compatibility. Let's imagine that we  
have v2 out, for which the following is correct:

   <content uri=''/>
   <content src="perfectly-good-start-file.html"/>

Clearly the desired behaviour is for v2 runtimes to process the first,  
and v1 runtimes to fallback to the second.

The same issue applies to other elements that refer to the skip/ignore  
distinction. We believe that some editorial improvements to those  
definitions would be welcome.

Robin Berjon -

Received on Wednesday, 23 September 2009 09:45:24 UTC