public void startElement (String name,
			    AttributeList atts)
    throws SAXException {

    if (abandonHope) {
      return;
    }

    if (saxParser == null) {
      String prefix = "";
      if (name.indexOf(':') > 0) {
	prefix = name.substring(0, name.indexOf(':'));
      }

      String localName = name;
      if (localName.indexOf(':') > 0) {
	localName = localName.substring(localName.indexOf(':')+1);
      }

      String namespaceURI = null;
      if (prefix.equals("")) {
	namespaceURI = atts.getValue("xmlns");
      } else {
	namespaceURI = atts.getValue("xmlns:" + prefix);
      }

      String saxParserClass = getCatalogParser(namespaceURI,
					       localName);

      if (saxParserClass == null) {
	abandonHope = true;
	if (namespaceURI == null) {
	  debug.message(2, "No Catalog parser for " + name);
	} else {
	  debug.message(2, "No Catalog parser for "
			+ "{" + namespaceURI + "}"
			+ name);
	}
	return;
      }

      try {
	saxParser = (SAXCatalogParser)
	  Class.forName(saxParserClass).newInstance();

	saxParser.setCatalog(catalog);
	saxParser.startDocument();
	saxParser.startElement(name, atts);
      } catch (ClassNotFoundException cnfe) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, cnfe.toString());
      } catch (InstantiationException ie) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, ie.toString());
      } catch (IllegalAccessException iae) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, iae.toString());
      } catch (ClassCastException cce ) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, cce.toString());
      }
    } else {
      saxParser.startElement(name, atts);
    }
  }
public void startElement (String name,
			    AttributeList atts)
    throws SAXException {

    if (abandonHope) {
      return;
    }

    if (saxParser == null) {
      String prefix = "";
      if (name.indexOf(':') > 0) {
	prefix = name.substring(0, name.indexOf(':'));
      }

      String localName = name;
      if (localName.indexOf(':') > 0) {
	localName = localName.substring(localName.indexOf(':')+1);
      }

      String namespaceURI = null;
      if (prefix.equals("")) {
	namespaceURI = atts.getValue("xmlns");
      } else {
	namespaceURI = atts.getValue("xmlns:" + prefix);
      }

      String saxParserClass = getCatalogParser(namespaceURI,
					       localName);

      if (saxParserClass == null) {
	abandonHope = true;
	if (namespaceURI == null) {
	  debug.message(2, "No Catalog parser for " + name);
	} else {
	  debug.message(2, "No Catalog parser for "
			+ "{" + namespaceURI + "}"
			+ name);
	}
	return;
      }

      try {
	saxParser = (SAXCatalogParser)
	  Class.forName(saxParserClass).newInstance();

	saxParser.setCatalog(catalog);
	saxParser.startDocument();
	saxParser.startElement(name, atts);
      } catch (ClassNotFoundException cnfe) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, cnfe.toString());
      } catch (InstantiationException ie) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, ie.toString());
      } catch (IllegalAccessException iae) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, iae.toString());
      } catch (ClassCastException cce ) {
	saxParser = null;
	abandonHope = true;
	debug.message(2, cce.toString());
      }
    } else {
      saxParser.startElement(name, atts);
    }
  }
public void startElement ( String name , AttributeList atts ) throws SAXException { if ( abandonHope ) { return ; } if ( saxParser == null ) { String prefix = "" ; if ( name . indexOf ( ' ' ) > 0 ) { prefix = name . substring ( 0 , name . indexOf ( ' ' ) ) ; } String localName = name ; if ( localName . indexOf ( ' ' ) > 0 ) { localName = localName . substring ( localName . indexOf ( ' ' ) + 1 ) ; } String namespaceURI = null ; if ( prefix . equals ( "" ) ) { namespaceURI = atts . getValue ( "xmlns" ) ; } else { namespaceURI = atts . getValue ( "xmlns:" + prefix ) ; } String saxParserClass = getCatalogParser ( namespaceURI , localName ) ; if ( saxParserClass == null ) { abandonHope = true ; if ( namespaceURI == null ) { debug . message ( 2 , "No Catalog parser for " + name ) ; } else { debug . message ( 2 , "No Catalog parser for " + "{" + namespaceURI + "}" + name ) ; } return ; } try { saxParser = ( SAXCatalogParser ) Class . forName ( saxParserClass ) . newInstance ( ) ; saxParser . setCatalog ( catalog ) ; saxParser . startDocument ( ) ; saxParser . startElement ( name , atts ) ; } catch ( ClassNotFoundException cnfe ) { saxParser = null ; abandonHope = true ; debug . message ( 2 , cnfe . toString ( ) ) ; } catch ( InstantiationException ie ) { saxParser = null ; abandonHope = true ; debug . message ( 2 , ie . toString ( ) ) ; } catch ( IllegalAccessException iae ) { saxParser = null ; abandonHope = true ; debug . message ( 2 , iae . toString ( ) ) ; } catch ( ClassCastException cce ) { saxParser = null ; abandonHope = true ; debug . message ( 2 , cce . toString ( ) ) ; } } else { saxParser . startElement ( name , atts ) ; } }
The SAX <code>startElement</code> method.

<p>The catalog parser is selected based on the namespace of the
first element encountered in the catalog.</p>
The SAX <code > startElement< / code > method .