| Syntax 
   invalid-data condition?
     action*
 Purpose
 
 A rule used to process erroneous input. The DTD restricts where the data content is permitted to occur in an SGML instance. The invalid-datarule is intended to process data content which violates these restrictions. As with the selection of any other markup processor rule, the selection of an invalid-datarule is determined by the currently active groups and the condition, if any, on each invalid data rule in an active group. The%coperator is used in the body of theinvalid-datarule to capture the data in question, and either it or thesuppressaction must be used (but only once). If there are no invalid-datarules in an OmniMark program, and invalid data is encountered, then themarked-section ignorerules are examined as though the invalid data was the text of an ignore marked section. OmniMark follows this procedure when invalid data is found:
 An error message is issued indicating that invalid data was found. 
The invalid data is either discarded or processed. If there is an invalid-datarule which can be performed, it processes the invalid data. If there are noinvalid-datarules at all, it searches for amarked-section ignorerule to be performed, and processes the data. If there is nomarked-section ignorerule, the data is discarded.
 The following is an example of invalid data:
   <!doctype i [
  <!element i - o (a)>
  <!element a - o #pcdata>
  ]>
  <i>
  <a>
 You are about to see invalid data.
   </a>
  This is invalid data
  <? Did you see the invalid data >
 The following is an example of an invalid-datarule:
   invalid-data
     put #error "Trashed: %"%c%".%n"
 |