code: @Override
      public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
      {
          if (this.currentHandler != null) {
              this.currentHandler.startElement(uri, localName, qName, attributes);
          } else {
              if (qName.equals(XDOMXMLConstants.ELEM_BLOCK)) {
                  String name = attributes.getValue(XDOMXMLConstants.ATT_BLOCK_NAME);
                  String version = attributes.getValue(XDOMXMLConstants.ATT_BLOCK_VERSION);
  
                  if (this.level == 0 && this.blockName == null) {
                      this.blockName = name;
                      this.blockVersion = version;
                  } else {
                      flushBeginBlock();
  
                      // start parsing new child block
                      try {
                          BlockParser blockParser = getBlockParser(name);
  
                          blockParser.setListener(getListener());
                          blockParser.setVersion(getVersion());
  
                          setCurrentHandler(blockParser);
                      } catch (ComponentLookupException e) {
                          throw new SAXException("Failed to find a block parser for [" + name + "]", e);
                      }
                  }
              } else {
                  startElementInternal(uri, localName, qName, attributes);
              }
  
              if (this.currentHandler != null) {
                  this.currentHandler.startElement(uri, localName, qName, attributes);
              }
          }
  
          ++this.level;
      }
docs: ContentHandler