- From: Robin Berjon <robin.berjon@expway.fr>
- Date: Tue, 05 Jul 2005 21:07:48 +0200
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/
Received on Tuesday, 5 July 2005 12:07:48 UTC