code: private void parsePI() throws SAXException, IOException {
          String name;
          boolean saved = expandPE;
  
          expandPE = false;
          name = readNmtoken(true);
          // NE08
          if (name.indexOf(':') >= 0) {
              fatal("Illegal character(':') in processing instruction name ",
                      name, null);
          }
          if ("xml".equalsIgnoreCase(name)) {
              fatal("Illegal processing instruction target", name, null);
          }
          if (!tryRead(endDelimPI)) {
              requireWhitespace();
              parseUntil(endDelimPI);
          }
          expandPE = saved;
          handler.processingInstruction(name, dataBufferToString());
      }
docs: Parse a processing instruction and do a call-back.
  
  <pre>
  [16] PI ::= '&lt;?' PITarget
  (S (Char* - (Char* '?&gt;' Char*)))?
  '?&gt;'
  [17] PITarget ::= Name - ( ('X'|'x') ('M'|m') ('L'|l') )
  </pre>
  
  <p>
  (The <code>&lt;?</code> has already been read.)