code: protected void isPIWellFormed(ProcessingInstruction node) {
          // Is the PI Target a valid XML name
          if (!isXMLName(node.getNodeName(), fIsXMLVersion11)) {
              String msg =
                  Utils.messages.createMessage(
                      MsgKey.ER_WF_INVALID_CHARACTER_IN_NODE_NAME,
                      new Object[] { "ProcessingInstruction", node.getTarget()});
  
              if (fErrorHandler != null) {
                  fErrorHandler.handleError(
                      new DOMErrorImpl(
                          DOMError.SEVERITY_FATAL_ERROR,
                          msg,
                          MsgKey.ER_WF_INVALID_CHARACTER_IN_NODE_NAME,
                          null,
                          null,
                          null));
              }
          }
  
          // Does the PI Data carry valid XML characters
  
          // REVISIT: Should we check if the PI DATA contains a ?> ???
          Character invalidChar = isWFXMLChar(node.getData());
          if (invalidChar != null) {
              String msg =
                  Utils.messages.createMessage(
                      MsgKey.ER_WF_INVALID_CHARACTER_IN_PI,
                      new Object[] { Integer.toHexString(Character.getNumericValue(invalidChar.charValue())) });
  
              if (fErrorHandler != null) {
                  fErrorHandler.handleError(
                      new DOMErrorImpl(
                          DOMError.SEVERITY_FATAL_ERROR,
                          msg,
                          MsgKey.ER_WF_INVALID_CHARACTER,
                          null,
                          null,
                          null));
              }
          }
      }
docs: Checks if a PI node is well-formed, by checking it's Name and data
  for well-formedness.
  
  @param data The contents of the comment node