@Override
    public void startElement(final String uri, final String localName, final String qName, final Attributes atts)
            throws SAXException {
        Set<Flag> flags = null;

        final DitaClass cls = atts.getValue(ATTRIBUTE_NAME_CLASS) != null ? new DitaClass(atts.getValue(ATTRIBUTE_NAME_CLASS)) : new DitaClass("");

        if (cls.isValid() && (TOPIC_TOPIC.matches(cls) || MAP_MAP.matches(cls))) {
            final String domains = atts.getValue(ATTRIBUTE_NAME_DOMAINS);
            if (domains == null) {
                logger.info(MessageUtils.getMessage("DOTJ029I", localName).toString());
            } else {
                props = StringUtils.getExtProps(domains);
            }
        }

        if (exclude) {
            // If it is the start of a child of an excluded tag, level increase
            level++;
        } else { // exclude shows whether it's excluded by filtering
            if (cls.isValid() && filterUtils.stream().anyMatch(f -> f.needExclude(atts, props))) {
                exclude = true;
                level = 0;
            } else {
                elementOutput = true;
                for (final Map.Entry<String, String> prefix: prefixes.entrySet()) {
                    getContentHandler().startPrefixMapping(prefix.getKey(), prefix.getValue());
                }
                prefixes.clear();
                getContentHandler().startElement(uri, localName, qName, atts);
                if (doFlag && cls.isValid()) {
                    flags = filterUtils.stream()
                            .flatMap(f -> f.getFlags(atts, props).stream())
                            .map(f -> f.adjustPath(currentFile, job))
                            .collect(Collectors.toSet());
                    for (final Flag flag: flags) {
                        flag.writeStartFlag(getContentHandler());
                    }
                }
            }
        }

        if (doFlag) {
            flagStack.push(flags);
        }
    }
@ Override public void startElement ( final String uri , final String localName , final String qName , final Attributes atts ) throws SAXException { Set < Flag > flags = null ; final DitaClass cls = atts . getValue ( ATTRIBUTE_NAME_CLASS ) != null ? new DitaClass ( atts . getValue ( ATTRIBUTE_NAME_CLASS ) ) : new DitaClass ( "" ) ; if ( cls . isValid ( ) && ( TOPIC_TOPIC . matches ( cls ) || MAP_MAP . matches ( cls ) ) ) { final String domains = atts . getValue ( ATTRIBUTE_NAME_DOMAINS ) ; if ( domains == null ) { logger . info ( MessageUtils . getMessage ( "DOTJ029I" , localName ) . toString ( ) ) ; } else { props = StringUtils . getExtProps ( domains ) ; } } if ( exclude ) { level ++ ; } else { if ( cls . isValid ( ) && filterUtils . stream ( ) . anyMatch ( f -> f . needExclude ( atts , props ) ) ) { exclude = true ; level = 0 ; } else { elementOutput = true ; for ( final Map . Entry < String , String > prefix : prefixes . entrySet ( ) ) { getContentHandler ( ) . startPrefixMapping ( prefix . getKey ( ) , prefix . getValue ( ) ) ; } prefixes . clear ( ) ; getContentHandler ( ) . startElement ( uri , localName , qName , atts ) ; if ( doFlag && cls . isValid ( ) ) { flags = filterUtils . stream ( ) . flatMap ( f -> f . getFlags ( atts , props ) . stream ( ) ) . map ( f -> f . adjustPath ( currentFile , job ) ) . collect ( Collectors . toSet ( ) ) ; for ( final Flag flag : flags ) { flag . writeStartFlag ( getContentHandler ( ) ) ; } } } } if ( doFlag ) { flagStack . push ( flags ) ; } }
SAX methods