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);
}
}