@Override
    public void processingInstruction(String target, String data)
            throws SAXException {
        try {
            if ("SaxCompiler-package".equals(target)) {
                assertState(0);
                w.write("package ");
                w.write(data);
                w.write(";\n");
                state = 1;
            } else if ("SaxCompiler-class".equals(target)) {
                assertStateLEQ(1);
                w.write("public final class ");
                w.write(data);
                w.write(" {\n");
                w.write("private ");
                w.write(data);
                w.write("() {}\n");
                state = 2;
            } else if ("SaxCompiler-args".equals(target)) {
                assertState(2);
                w.write("public static void emit(org.xml.sax.ContentHandler contentHandler, ");
                w.write(data);
                w.write(") throws org.xml.sax.SAXException {\n");
                state = 3;
                writeStart();
            } else if ("SaxCompiler-omitRoot".equals(target)) {
                assertStateLEQ(2);
                omitRoot = true;
            } else if ("SaxCompiler-code".equals(target)) {
                ensureState();
                w.write(data);
                w.write("\n");
            } else {
                ensureState();
                w.write("contentHandler.processingInstruction(");
                w.write(stringLiteral(target));
                w.write(", ");
                w.write(stringLiteral(data));
                w.write(");\n");
            }
        } catch (IOException e) {
            throw new SAXException(e);
        }
    }
@see org.xml.sax.ContentHandler#processingInstruction(java.lang.String,
     java.lang.String)
src/nu/validator/xml/SaxCompiler.java