Good idea David and why not link to it from the polyglot spec.
I think I have found one more bug, I know you call the schema a first shot only:
The following assertion tests if textarea or pre contain linefeeds.
They are allowed to contain that but they must not begin with a
linefeed, that is something else. Also I guess it is better to have an
optional, "?", between carriage return and linefeed?
<sch:pattern>
<sch:rule context="h:textarea|h:pre">
<sch:assert test="not(matches(.,(:'^\s':)'[ ]'))">textarea
and pre should not start with <!--white space-->newline</sch:assert>
</sch:rule>
</sch:pattern>
Cheers,
Jesper Tverskov
http://www.xmlplease.com