Content model
A span directly inside a list and the obsolete align attribute fail the RELAX NG schema; a footer inside a footer, an image without alt and a button inside a link are caught by Schematron rules.
Content model
examples/showcase/content-model.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Content model</title>
</head>
<body>
<ul>
<li>Allowed</li>
<span>Not a list item</span>
</ul>
<p align="center">Obsolete attribute</p>
<footer><footer>Nested footer</footer></footer>
<p><img src="chart.png"></p>
<a href="/order"><button>Order</button></a>
</body>
</html>error 10:5 schema.html5 unexpected element `{http://www.w3.org/1999/xhtml}span` at 10:5 error 12:3 schema.html5 unexpected attribute `align` at 12:3 error 13:11 assertion.elements.no-footer-in-header-footer The element "footer" must not appear as a descendant of the "footer" or "header" element. error 14:6 assertion.elements.img-missing-alt An "img" element must have an "alt" attribute, except under certain conditions. For details, consult guidance on providing text alternatives for images. error 15:20 assertion.elements.button-in-a The element "button" must not appear as a descendant of the "a" element. 5 errors, 0 warnings