protected int nextInAttList()

in batik-xml/src/main/java/org/apache/batik/xml/XMLScanner.java [1338:1711]


    protected int nextInAttList() throws IOException, XMLException {
        switch (current) {
        case 0x9:
        case 0xA:
        case 0xD:
        case 0x20:
            do {
                nextChar();
            } while (current != -1 && XMLUtilities.isXMLSpace((char)current));
            return LexicalUnits.S;

        case '>':
            nextChar();
            context = DTD_DECLARATIONS_CONTEXT;
            return type = LexicalUnits.END_CHAR;

        case '%':
            int t = readName(LexicalUnits.PARAMETER_ENTITY_REFERENCE);
            if (current != ';') {
                throw createXMLException("malformed.parameter.entity");
            }
            nextChar();
            return t;

        case 'C':
            return readIdentifier("DATA",
                                  LexicalUnits.CDATA_IDENTIFIER,
                                  LexicalUnits.NAME);

        case 'I':
            nextChar();
            if (current != 'D') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.ID_IDENTIFIER;
            }
            if (current != 'R') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.NAME;
            }
            if (current != 'E') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.NAME;
            }
            if (current != 'F') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.IDREF_IDENTIFIER;
            }
            if (current != 'S') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.IDREFS_IDENTIFIER;
            }
            do {
                nextChar();
            } while (current != -1 &&
                     XMLUtilities.isXMLNameCharacter((char)current));
            return type = LexicalUnits.NAME;

        case 'N':
            switch (nextChar()) {
            default:
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;

            case 'O':
                context = NOTATION_TYPE_CONTEXT;
                return readIdentifier("TATION",
                                      LexicalUnits.NOTATION_IDENTIFIER,
                                      LexicalUnits.NAME);

            case 'M':
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                if (current != 'T') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                if (current != 'O') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                if (current != 'K') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                if (current != 'E') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                if (current != 'N') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NMTOKEN_IDENTIFIER;
                }
                if (current != 'S') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NMTOKENS_IDENTIFIER;
                }
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }

        case 'E':
            nextChar();
            if (current != 'N') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.NAME;
            }
            if (current != 'T') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.NAME;
            }
            if (current != 'I') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.NAME;
            }
            if (current != 'T') {
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return type = LexicalUnits.NAME;
            }
            nextChar();
            if (current == -1 ||
                !XMLUtilities.isXMLNameCharacter((char)current)) {
                return LexicalUnits.NAME;
            }
            switch (current) {
            case 'Y':
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.ENTITY_IDENTIFIER;
                }
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            case 'I':
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                if (current != 'E') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                nextChar();
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                if (current != 'S') {
                    do {
                        nextChar();
                    } while (current != -1 &&
                             XMLUtilities.isXMLNameCharacter((char)current));
                    return LexicalUnits.NAME;
                }
                return LexicalUnits.ENTITIES_IDENTIFIER;

            default:
                if (current == -1 ||
                    !XMLUtilities.isXMLNameCharacter((char)current)) {
                    return LexicalUnits.NAME;
                }
                do {
                    nextChar();
                } while (current != -1 &&
                         XMLUtilities.isXMLNameCharacter((char)current));
                return LexicalUnits.NAME;
            }

        case '"':
            attrDelimiter = '"';
            nextChar();
            if (current == -1) {
                throw createXMLException("unexpected.eof");
            }
            if (current != '"' && current != '&') {
                do {
                    nextChar();
                } while (current != -1 && current != '"' && current != '&');
            }
            switch (current) {
            case '&':
                context = ATTRIBUTE_VALUE_CONTEXT;
                return LexicalUnits.FIRST_ATTRIBUTE_FRAGMENT;

            case '"':
                nextChar();
                return LexicalUnits.STRING;

            default:
                throw createXMLException("invalid.character");
            }

        case '\'':
            attrDelimiter = '\'';
            nextChar();
            if (current == -1) {
                throw createXMLException("unexpected.eof");
            }
            if (current != '\'' && current != '&') {
                do {
                    nextChar();
                } while (current != -1 && current != '\'' && current != '&');
            }
            switch (current) {
            case '&':
                context = ATTRIBUTE_VALUE_CONTEXT;
                return LexicalUnits.FIRST_ATTRIBUTE_FRAGMENT;

            case '\'':
                nextChar();
                return LexicalUnits.STRING;

            default:
                throw createXMLException("invalid.character");
            }

        case '#':
            switch (nextChar()) {
            case 'R':
                return readIdentifier("EQUIRED",
                                      LexicalUnits.REQUIRED_IDENTIFIER,
                                      -1);

            case 'I':
                return readIdentifier("MPLIED",
                                      LexicalUnits.IMPLIED_IDENTIFIER,
                                      -1);
            case 'F':
                return readIdentifier("IXED",
                                      LexicalUnits.FIXED_IDENTIFIER,
                                      -1);
            default:
                throw createXMLException("invalid.character");
            }

        case '(':
            nextChar();
            context = ENUMERATION_CONTEXT;
            return LexicalUnits.LEFT_BRACE;

        default:
            return readName(LexicalUnits.NAME);
        }
    }