public void startElement(TagName tagName) throws SAXException {
   if (tagName.local.equals("Include") && tagName.uri.equals(WellKnownNamespace.XOP)) {
     // found xop:Include
     String href = tagName.atts.getValue("href");
     DataHandler attachment = au.getAttachmentAsDataHandler(href);
     if (attachment == null) {
       // report an error and ignore
       parent.getEventHandler().handleEvent(null);
       // TODO
     }
     base64data.set(attachment);
     next.text(base64data);
     inXopInclude = true;
     followXop = true;
   } else next.startElement(tagName);
 }
  /**
   * Creates and configures a new unmarshalling pipe line. Depending on the setting, we put a
   * validator as a filter.
   *
   * @return A component that implements both {@link UnmarshallerHandler} and {@link
   *     ValidationEventHandler}. All the parsing errors should be reported to this error handler
   *     for the unmarshalling process to work correctly.
   *     <p>Also, returned handler expects all the XML names to be interned.
   */
  public final XmlVisitor createUnmarshallerHandler(
      InfosetScanner scanner, boolean inplace, JaxBeanInfo expectedType) {

    coordinator.reset(scanner, inplace, expectedType, idResolver);
    XmlVisitor unmarshaller = coordinator;

    // delegate to JAXP 1.3 for validation if the client provided a schema
    if (schema != null) {
      unmarshaller = new ValidatingUnmarshaller(schema, unmarshaller);
    }

    if (attachmentUnmarshaller != null && attachmentUnmarshaller.isXOPPackage()) {
      unmarshaller = new MTOMDecorator(this, unmarshaller, attachmentUnmarshaller);
    }

    return unmarshaller;
  }