protected void handleStartTag()

in doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java [110:191]


    protected void handleStartTag(XmlPullParser parser, Sink sink)
            throws XmlPullParserException, MacroExecutionException {
        isEmptyElement = parser.isEmptyElementTag();

        SinkEventAttributeSet attribs = getAttributesFromParser(parser);

        if (parser.getName().equals(DOCUMENT_TAG.toString())) {
            // Do nothing
            return;
        } else if (parser.getName().equals(HEAD.toString())) {
            if (!inHead) // we might be in head from a <properties> already
            {
                this.inHead = true;

                sink.head(attribs);
            }
        } else if (parser.getName().equals(TITLE.toString())) {
            if (hasTitle) {
                LOGGER.warn("<title> was already defined in <properties>, ignored <title> in <head>.");

                try {
                    parser.nextText(); // ignore next text event
                } catch (IOException ex) {
                    throw new XmlPullParserException("Failed to parse text", parser, ex);
                }
            } else {
                sink.title(attribs);
            }
        } else if (parser.getName().equals(AUTHOR_TAG.toString())) {
            sink.author(attribs);
        } else if (parser.getName().equals(DATE_TAG.toString())) {
            sink.date(attribs);
        } else if (parser.getName().equals(META.toString())) {
            handleMetaStart(parser, sink, attribs);
        } else if (parser.getName().equals(BODY.toString())) {
            if (inHead) {
                sink.head_();
                this.inHead = false;
            }

            sink.body(attribs);
        } else if (parser.getName().equals(SECTION_TAG.toString())) {
            handleSectionStart(Sink.SECTION_LEVEL_1, sink, attribs, parser);
        } else if (parser.getName().equals(SUBSECTION_TAG.toString())) {
            handleSectionStart(Sink.SECTION_LEVEL_2, sink, attribs, parser);
        } else if (parser.getName().equals(SOURCE_TAG.toString())) {
            verbatim();

            attribs.addAttributes(SinkEventAttributeSet.SOURCE);

            sink.verbatim(attribs);
        } else if (parser.getName().equals(PROPERTIES_TAG.toString())) {
            if (!inHead) // we might be in head from a <head> already
            {
                this.inHead = true;

                sink.head(attribs);
            }
        }

        // ----------------------------------------------------------------------
        // Macro
        // ----------------------------------------------------------------------

        else if (parser.getName().equals(MACRO_TAG.toString())) {
            handleMacroStart(parser);
        } else if (parser.getName().equals(PARAM.toString())) {
            handleParamStart(parser, sink);
        } else if (!baseStartTag(parser, sink)) {
            if (isEmptyElement) {
                handleUnknown(parser, sink, TAG_TYPE_SIMPLE);
            } else {
                handleUnknown(parser, sink, TAG_TYPE_START);
            }

            LOGGER.warn(
                    "Unrecognized xdoc tag <{}> at [{}:{}]",
                    parser.getName(),
                    parser.getLineNumber(),
                    parser.getColumnNumber());
        }
    }