/** Parse a doctype declaration * * <p>The resulting token will contain "<!DOCTYPE" */ protected void parseDocType (Token token) { token.setType (Type.DOCTYPE); nextChars ("<!DOCTYPE", pos - 3, "Expected '<!DOCTYPE'"); }
protected void parseDocTypeText (Token token) { token.setType (Type.TEXT); pos --; while (pos < source.length () && getCharValidator ().isNameChar (source.charAt (pos))) pos ++; String s = source.substring (token.getStartOffset (), pos); if (s.length () == 0) throw new XMLParseException ("Expected some text"+lookAheadForErrorMessage ("but found", token.getStartOffset (), 20), token); // TODO How about "<!DOCTYPE SYSTEM ..."? if ("SYSTEM".equals (s)) token.setType (Type.DOCTYPE_SYSTEM); else if ("PUBLIC".equals (s)) token.setType (Type.DOCTYPE_PUBLIC); else if ("NDATA".equals (s)) token.setType (Type.DOCTYPE_NDATA); }
token.setType (Type.DOCTYPE_BEGIN_SUBSET); docTypeLevel ++; break; token.setType (Type.DOCTYPE_END_SUBSET); docTypeLevel --; break; token.setType (Type.DOCTYPE_BEGIN_GROUP); docTypeLevel ++; break; token.setType (Type.DOCTYPE_END_GROUP); docTypeLevel --; break; token.setType (Type.DOCTYPE_ZERO_OR_ONE); break; token.setType (Type.DOCTYPE_ZERO_OR_MORE); break; token.setType (Type.DOCTYPE_ONE_OR_MORE); break; token.setType (Type.DOCTYPE_ALTERNATIVE); break; token.setType (Type.DOCTYPE_SEQUENCE);
case 'I': expected = "#IMPLIED"; token.setType (Type.DOCTYPE_IMPLIED); break; case 'P': expected = "#PCDATA"; token.setType (Type.DOCTYPE_PCDATA); break; case 'R': expected = "#REQUIRED"; token.setType (Type.DOCTYPE_REQUIRED); break; case 'F': expected = "#FIXED"; token.setType (Type.DOCTYPE_FIXED); break;
/** * Read an end tag. * * <p>The resulting token will contain the '</' and '>' plus the * name plus any whitespace between those three. */ protected void parseEndElement (Token token) { token.setType (Type.END_ELEMENT); skipWhiteSpace (); parseName ("end tag"); skipWhiteSpace (); expect ('>'); }
protected void parseDocTypeComment (Token token) { expect ('-'); while (pos < source.length ()) { char c = source.charAt (pos); if (c == '-') { c = nextChar ("Expected '--'"); if (c == '-') { pos ++; break; } } pos ++; } token.setType (Type.DOCTYPE_COMMENT); }
protected void parseEntity (Token token) { token.setType (Type.ENTITY); char c; if (pos < source.length ()) { c = source.charAt (pos); if (c == '#') pos ++; } while (pos < source.length ()) { c = source.charAt (pos); if (c == ';') break; if (!charValidator.isNameChar (c)) throw new XMLParseException ("Illegal character in entity: ["+c+"] ("+Integer.toHexString (c)+")", source, pos); pos ++; } expect (';'); verifyEntity (token.getStartOffset (), pos); }
/** Read the name of an element. * * <p>The resulting token will contain the '<' plus any whitespace between * it and the name plus the name itself but no whitespace after the name. */ protected void parseBeginElement (Token token) { token.setType (Type.BEGIN_ELEMENT); inStartElement = true; skipWhiteSpace (); int nameStartOffset = pos; parseName ("start tag"); if (pos == nameStartOffset) throw new XMLParseException ("Missing element name", token); if (pos >= source.length ()) throw new XMLParseException ("Missing '>' of start tag", source, pos); char c = source.charAt (pos); if (!charValidator.isWhitespace (c) && c != '/' && c != '>') throw new XMLParseException ("Expected whitespace, '>' or '/>' after element name", source, pos); }
token.setType (Type.PROCESSING_INSTRUCTION); int errorPos = pos - 2;
token.setType (Type.CDATA);
token.setType (Type.TEXT); int errorPos = pos - 1; boolean insideEntity = false;
protected void parseDocTypeQuotedText (Token token) token.setType (Type.DOCTYPE_QUOTED_TEXT); int errorPos = pos - 1; char quoteChar = source.charAt (errorPos);
token.setType (Type.COMMENT);
token.setType(Type.ATTRIBUTE);
token.setType (Type.ATTRIBUTE);
token.setType(Type.ATTRIBUTE);