@Override
    public void startDocument() throws SAXException {
        for (int i = 0; i < filters.length; i++) {
            try {
                final XMLFilter filter = filters[i];
                filter.startDocument();
            } catch (final RuntimeException e1) {
                LOGGER.trace("Unable to start document!", e1);

                // Make sure the rest of the filters get the event.
                for (i = i + 1; i < filters.length; i++) {
                    final XMLFilter f = filters[i];
                    try {
                        f.startDocument();
                    } catch (final RuntimeException e2) {
                        LOGGER.trace("Unable to start document!", e2);
                    }
                }

                throw ProcessException.wrap(e1);
            }
        }
    }
Receive notification of the beginning of a document.
<p>
<p>
The SAX parser will invoke this method only once, before any other event
callbacks (except for {@link #setDocumentLocator setDocumentLocator}).
</p>

@throws org.xml.sax.SAXException any SAX exception, possibly wrapping another exception
@see #endDocument
stroom-pipeline/src/main/java/stroom/pipeline/filter/XMLFilterFork.java