[whatwg] [WF2] Web Forms 2.0: Repetition and type ID

Robin Berjon robin.berjon at expway.fr
Tue Jul 5 12:07:48 PDT 2005


Ian Hickson wrote:
> On Mon, 4 Jul 2005, Robin Berjon wrote:
>>Amongst the tools that have been mentionned was Schematron. Out of the 
>>box Schematron can't check a media type, but with a very trivial to 
>>write extension function it could. All the rest that you mention seems 
>>very much doable. Schematron is built on XPath, which is a very useful 
>>and powerful little language.
> 
> Cool. In that case I look forward to a Schematron HTML5 conformance 
> checker.

As fantasai said, RNG+Schematron will be much easier, but yeah they make 
for a great validation combo.

> Just out of interest, how would you do the second one above? Making sure 
> that in any one document, there is only one <dfn> for each term defined? 

Completely untested and looking scary as a regex, but off the top of my 
head the following should do the trick. Inside a <rule> matching your 
<dfn>, you use <let> to set $title to:

@title |
.[not(@title) and count(./*|text()) == 1]/abbr/@title |
string(.[not(@title) and (not(abbr/@title) or count(./*|text()) != 1)])

which should make it contain the value of the string used for the 
current <dfn>. Then you put the following in an <assert> inside that rule:

preceding::dfn[@title] != $title and
preceding::dfn[
                not(@title) and abbr/@title and (count(./*|text()) == 1)
               ]/text() != $title and
string(preceding::dfn[
                      not(@title) and
                      (not(abbr/@title) or (count(./*|text()) != 1))
                     ]) != $title

> The relevant part of the spec being:
> 
> | Defining term: If the dfn element has a title attribute, then the exact 
> | value of that attribute is the term being defined. Otherwise, if it 
> | contains exactly one element child node and no child text nodes, and 
> | that child element is an abbr element with a title attribute, then the 
> | exact value of that attribute is the term being defined. Otherwise, it 
> | is the exact textContent of the dfn element that gives the term being 
> | defined. [...]
> | 
> | There must only be one dfn element per document for each term defined 
> | (i.e. there must not be any duplicate terms). 

> It's simple to implement that in, e.g., a dedicated perl-based conformance 
> checker, but I have no idea how you'd do that in Schematron.

In Perl, one would use some XPath :) Though in Perl one may be combining 
smaller XPath expressions with a hash to the same effect (I'm unsure 
that would be the clearest way of writing it though).

> You seriously think that nested templates will be common enough for this 
> to be a FAQ? Wow. A few months ago people were saying that this would be 
> so rarely used that we should take it out!

See fantasai's answer, I fully agree with her.

-- 
Robin Berjon
   Senior Research Scientist
   Expway, http://expway.com/





More information about the whatwg mailing list