Here’s our favorite (from the comments in the ISOSTS Schematron Rule Set)
<!-- All sec should have @id except 1) within boxed-text or 2) sec which are not part of the structure, e.g. inside Corrigenda or some Prolog Notes -->