Одновременно с разбором, SAX может выполнять проверку документов. Т.е. если документ имеет DOCTYPE ассоциированные и SAX было сказано, чтобы проверить документ, анализатор будет уведомлять о всех обработчиков данных возникли ошибки.
Обработчик перекрыть ошибки связанные с ними методы для того, чтобы слушать проверку событий. Есть три ошибки уровнях: предупреждения, ошибки и фатальная ошибка. Если ошибка произошла фатально, по умолчанию SAX-анализатор прерывает чтение файлов.
<!-- file: sample.xml --> <?xml version="1.0"?> <!DOCTYPE purchase-order [ <!-- declaration of the root element and its attributes --> <!ELEMENT purchase-order (purchased-by, order-items)> <!ATTLIST purchase-order date CDATA #REQUIRED number CDATA #REQUIRED > <!ELEMENT purchased-by (address)> <!ATTLIST purchased-by name CDATA #REQUIRED > <!ELEMENT address (#PCDATA)> <!-- order-items can contains at least on item --> <!ELEMENT order-items (item+)> <!ELEMENT item EMPTY> <!ATTLIST item code CDATA #REQUIRED type CDATA #REQUIRED label CDATA #REQUIRED > ]> <!-- In order to constrain the contents of XML-document a DTD-definition may be used. The DTD-definition can be inserted immediately into the caption of target XML-file. --> <purchase-order date="2005-10-31" number="12345"> <purchased-by name="My name"> <!-- we comment it to lead an error: <address>My address</address> --> </purchased-by> <order-items> <!-- here is an example of empty element i.e. containing no nested elements --> <item code="687" type="CD" label="Some music" /> <item code="129851" type="DVD" label="Some video"/> </order-items> </purchase-order>
|