}
for (;;) {
int role;
+ XML_Bool handleDefault = XML_TRUE;
*eventPP = s;
*eventEndPP = next;
if (tok <= 0) {
if (result != XML_ERROR_NONE)
return result;
enc = encoding;
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_DOCTYPE_NAME:
return XML_ERROR_NO_MEMORY;
poolFinish(&tempPool);
doctypePubid = NULL;
+ handleDefault = XML_FALSE;
}
doctypeSysid = NULL; /* always initialize to NULL */
break;
doctypePubid, 1);
doctypeName = NULL;
poolClear(&tempPool);
+ handleDefault = XML_FALSE;
}
break;
#ifdef XML_DTD
if (result != XML_ERROR_NONE)
return result;
enc = encoding;
+ handleDefault = XML_FALSE;
}
break;
#endif /* XML_DTD */
if (!doctypePubid)
return XML_ERROR_NO_MEMORY;
poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
}
#ifdef XML_DTD
declEntity = (ENTITY *)lookup(&dtd.paramEntities,
case XML_ROLE_ENTITY_PUBLIC_ID:
if (!XmlIsPublicId(enc, s, next, eventPP))
return XML_ERROR_SYNTAX;
- if (declEntity) {
+ if (dtd.keepProcessing && declEntity) {
XML_Char *tem = poolStoreString(&dtd.pool,
enc,
s + enc->minBytesPerChar,
normalizePublicId(tem);
declEntity->publicId = tem;
poolFinish(&dtd.pool);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_DOCTYPE_CLOSE:
startDoctypeDeclHandler(handlerArg, doctypeName,
doctypeSysid, doctypePubid, 0);
poolClear(&tempPool);
+ handleDefault = XML_FALSE;
}
/* doctypeSysid will be non-NULL in the case of
XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler
was not set, indicating an external subset
*/
- if ((dtd.keepProcessing || dtd.standalone) && doctypeSysid) {
+ if (doctypeSysid) {
+ dtd.paramEntityRead = XML_FALSE;
#ifdef XML_DTD
if (paramEntityParsing && externalEntityRefHandler) {
ENTITY *entity = (ENTITY *)lookup(&dtd.paramEntities,
externalSubsetName,
0);
- dtd.paramEntityRead = XML_FALSE;
if (!externalEntityRefHandler(externalEntityRefHandlerArg,
0,
entity->base,
entity->publicId))
return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
if (!dtd.paramEntityRead)
- dtd.keepProcessing = XML_FALSE;
+ dtd.keepProcessing = dtd.standalone;
}
else
- dtd.keepProcessing = XML_FALSE;
+ dtd.keepProcessing = dtd.standalone;
#endif /* XML_DTD */
if (dtd.paramEntityRead
&& !dtd.standalone
&& !notStandaloneHandler(handlerArg))
return XML_ERROR_NOT_STANDALONE;
}
- if (endDoctypeDeclHandler)
+ if (endDoctypeDeclHandler) {
endDoctypeDeclHandler(handlerArg);
+ handleDefault = XML_FALSE;
+ }
break;
case XML_ROLE_INSTANCE_START:
processor = contentProcessor;
declElementType = getElementType(parser, enc, s, next);
if (!declElementType)
return XML_ERROR_NO_MEMORY;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_NAME:
declAttributeId = getAttributeId(parser, enc, s, next);
if (!declAttributeId)
declAttributeIsCdata = XML_FALSE;
declAttributeType = NULL;
declAttributeIsId = XML_FALSE;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_CDATA:
declAttributeIsCdata = XML_TRUE;
declAttributeType = atypeCDATA;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_ID:
declAttributeIsId = XML_TRUE;
declAttributeType = atypeID;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_IDREF:
declAttributeType = atypeIDREF;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_IDREFS:
declAttributeType = atypeIDREFS;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_ENTITY:
declAttributeType = atypeENTITY;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES:
declAttributeType = atypeENTITIES;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN:
declAttributeType = atypeNMTOKEN;
- break;
+ goto checkAttListDeclHandler;
case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS:
declAttributeType = atypeNMTOKENS;
+ checkAttListDeclHandler:
+ if (dtd.keepProcessing && attlistDeclHandler)
+ handleDefault = XML_FALSE;
break;
case XML_ROLE_ATTRIBUTE_ENUM_VALUE:
case XML_ROLE_ATTRIBUTE_NOTATION_VALUE:
- if (attlistDeclHandler) {
+ if (dtd.keepProcessing && attlistDeclHandler) {
const XML_Char *prefix;
if (declAttributeType) {
prefix = enumValueSep;
if (!poolAppend(&tempPool, enc, s, next))
return XML_ERROR_NO_MEMORY;
declAttributeType = tempPool.start;
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE:
case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE:
- if (dtd.keepProcessing || dtd.standalone) {
+ if (dtd.keepProcessing) {
if (!defineAttribute(declElementType, declAttributeId,
declAttributeIsCdata, declAttributeIsId, 0,
parser))
declAttributeId->name, declAttributeType,
0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE);
poolClear(&tempPool);
+ handleDefault = XML_FALSE;
}
}
break;
case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE:
case XML_ROLE_FIXED_ATTRIBUTE_VALUE:
- if (dtd.keepProcessing || dtd.standalone) {
+ if (dtd.keepProcessing) {
const XML_Char *attVal;
enum XML_Error result
= storeAttributeValue(parser, enc, declAttributeIsCdata,
attVal,
role == XML_ROLE_FIXED_ATTRIBUTE_VALUE);
poolClear(&tempPool);
+ handleDefault = XML_FALSE;
}
}
break;
case XML_ROLE_ENTITY_VALUE:
- {
+ if (dtd.keepProcessing) {
enum XML_Error result = storeEntityValue(parser, enc,
- s + enc->minBytesPerChar,
- next - enc->minBytesPerChar);
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
if (declEntity) {
declEntity->textPtr = poolStart(&dtd.entityValuePool);
declEntity->textLen = poolLength(&dtd.entityValuePool);
declEntity->textPtr,
declEntity->textLen,
curBase, 0, 0, 0);
+ handleDefault = XML_FALSE;
}
}
else
if (doctypeSysid == NULL)
return XML_ERROR_NO_MEMORY;
poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
}
else
#ifdef XML_DTD
/* fall through */
#endif /* XML_DTD */
case XML_ROLE_ENTITY_SYSTEM_ID:
- if (declEntity) {
+ if (dtd.keepProcessing && declEntity) {
declEntity->systemId = poolStoreString(&dtd.pool, enc,
s + enc->minBytesPerChar,
next - enc->minBytesPerChar);
return XML_ERROR_NO_MEMORY;
declEntity->base = curBase;
poolFinish(&dtd.pool);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_ENTITY_COMPLETE:
- if (declEntity && entityDeclHandler) {
+ if (dtd.keepProcessing && declEntity && entityDeclHandler) {
*eventEndPP = s;
entityDeclHandler(handlerArg,
declEntity->name,
declEntity->systemId,
declEntity->publicId,
0);
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_ENTITY_NOTATION_NAME:
- if (declEntity) {
+ if (dtd.keepProcessing && declEntity) {
declEntity->notation = poolStoreString(&dtd.pool, enc, s, next);
if (!declEntity->notation)
return XML_ERROR_NO_MEMORY;
declEntity->systemId,
declEntity->publicId,
declEntity->notation);
+ handleDefault = XML_FALSE;
+
}
else if (entityDeclHandler) {
*eventEndPP = s;
declEntity->systemId,
declEntity->publicId,
declEntity->notation);
+ handleDefault = XML_FALSE;
}
}
break;
declEntity = NULL;
break;
}
- if (dtd.keepProcessing || dtd.standalone) {
+ if (dtd.keepProcessing) {
const XML_Char *name = poolStoreString(&dtd.pool, enc, s, next);
if (!name)
return XML_ERROR_NO_MEMORY;
entity, then the entity declaration is not considered "internal"
*/
declEntity->is_internal = !(parentParser || openInternalEntities);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
}
}
else {
break;
case XML_ROLE_PARAM_ENTITY_NAME:
#ifdef XML_DTD
- if (dtd.keepProcessing || dtd.standalone) {
+ if (dtd.keepProcessing) {
const XML_Char *name = poolStoreString(&dtd.pool, enc, s, next);
if (!name)
return XML_ERROR_NO_MEMORY;
entity, then the entity declaration is not considered "internal"
*/
declEntity->is_internal = !(parentParser || openInternalEntities);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
}
}
else {
if (!declNotationName)
return XML_ERROR_NO_MEMORY;
poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_NOTATION_PUBLIC_ID:
if (!XmlIsPublicId(enc, s, next, eventPP))
return XML_ERROR_SYNTAX;
- if (declNotationName) {
+ if (declNotationName) { /* means notationDeclHandler != NULL */
XML_Char *tem = poolStoreString(&tempPool,
enc,
s + enc->minBytesPerChar,
normalizePublicId(tem);
declNotationPublicId = tem;
poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_NOTATION_SYSTEM_ID:
curBase,
systemId,
declNotationPublicId);
+ handleDefault = XML_FALSE;
}
poolClear(&tempPool);
break;
curBase,
0,
declNotationPublicId);
+ handleDefault = XML_FALSE;
}
poolClear(&tempPool);
break;
enum XML_Error result;
if (defaultHandler)
reportDefault(parser, enc, s, next);
+ handleDefault = XML_FALSE;
result = doIgnoreSection(parser, enc, &next, end, nextPtr);
if (!next) {
processor = ignoreSectionProcessor;
dtd.scaffIndex[dtd.scaffLevel] = myindex;
dtd.scaffLevel++;
dtd.scaffold[myindex].type = XML_CTYPE_SEQ;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
}
break;
case XML_ROLE_GROUP_SEQUENCE:
if (groupConnector[prologState.level] == '|')
return XML_ERROR_SYNTAX;
groupConnector[prologState.level] = ',';
+ if (dtd.in_eldecl && elementDeclHandler)
+ handleDefault = XML_FALSE;
break;
case XML_ROLE_GROUP_CHOICE:
if (groupConnector[prologState.level] == ',')
) {
dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type
= XML_CTYPE_CHOICE;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
}
groupConnector[prologState.level] = '|';
break;
if (prologState.documentEntity &&
role == XML_ROLE_INNER_PARAM_ENTITY_REF)
return XML_ERROR_PARAM_ENTITY_REF;
+ dtd.paramEntityRead = XML_FALSE;
if (!paramEntityParsing)
- dtd.keepProcessing = XML_FALSE;
+ dtd.keepProcessing = dtd.standalone;
else {
const XML_Char *name;
ENTITY *entity;
return XML_ERROR_ENTITY_DECLARED_IN_PE;
}
else if (!entity) {
- dtd.keepProcessing = XML_FALSE;
+ dtd.keepProcessing = dtd.standalone;
/* cannot report skipped entities in declarations */
- if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler)
+ if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) {
skippedEntityHandler(handlerArg, name, 1);
+ handleDefault = XML_FALSE;
+ }
break;
}
if (entity->open)
result = processInternalParamEntity(parser, entity);
if (result != XML_ERROR_NONE)
return result;
+ handleDefault = XML_FALSE;
break;
}
if (externalEntityRefHandler) {
- dtd.paramEntityRead = XML_FALSE;
entity->open = XML_TRUE;
if (!externalEntityRefHandler(externalEntityRefHandlerArg,
0,
return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
}
entity->open = XML_FALSE;
- if (!dtd.paramEntityRead) {
- dtd.keepProcessing = XML_FALSE;
- break;
- }
+ handleDefault = XML_FALSE;
+ if (!dtd.paramEntityRead)
+ dtd.keepProcessing = dtd.standalone;
}
+ else
+ dtd.keepProcessing = dtd.standalone;
}
#endif /* XML_DTD */
- if (!dtd.standalone
+ if (dtd.paramEntityRead
+ && !dtd.standalone
&& notStandaloneHandler
&& !notStandaloneHandler(handlerArg))
return XML_ERROR_NOT_STANDALONE;
- if (
-#ifdef XML_DTD
- !paramEntityParsing &&
-#endif /* XML_DTD */
- defaultHandler)
- reportDefault(parser, enc, s, next);
break;
- /* Element declaration stuff */
+ /* Element declaration stuff */
case XML_ROLE_ELEMENT_NAME:
if (elementDeclHandler) {
- declElementType = getElementType(parser, enc, s, next);
+ declElementType = getElementType(parser, enc, s, next);
if (!declElementType)
- return XML_ERROR_NO_MEMORY;
- dtd.scaffLevel = 0;
- dtd.scaffCount = 0;
- dtd.in_eldecl = XML_TRUE;
+ return XML_ERROR_NO_MEMORY;
+ dtd.scaffLevel = 0;
+ dtd.scaffCount = 0;
+ dtd.in_eldecl = XML_TRUE;
+ handleDefault = XML_FALSE;
}
break;
XML_CTYPE_EMPTY);
*eventEndPP = s;
elementDeclHandler(handlerArg, declElementType->name, content);
+ handleDefault = XML_FALSE;
}
dtd.in_eldecl = XML_FALSE;
}
if (dtd.in_eldecl) {
dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type
= XML_CTYPE_MIXED;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
}
break;
nameLen = 0;
for (; name[nameLen++]; );
dtd.contentStringLen += nameLen;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
}
break;
quant = XML_CQUANT_PLUS;
closeGroup:
if (dtd.in_eldecl) {
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
dtd.scaffLevel--;
dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel]].quant = quant;
if (dtd.scaffLevel == 0) {
- if (elementDeclHandler) {
+ if (!handleDefault) {
XML_Content *model = build_model(parser);
if (!model)
return XML_ERROR_NO_MEMORY;
break;
/* End element declaration stuff */
+ case XML_ROLE_PI:
+ if (!reportProcessingInstruction(parser, enc, s, next))
+ return XML_ERROR_NO_MEMORY;
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_COMMENT:
+ if (!reportComment(parser, enc, s, next))
+ return XML_ERROR_NO_MEMORY;
+ handleDefault = XML_FALSE;
+ break;
case XML_ROLE_NONE:
switch (tok) {
- case XML_TOK_PI:
- if (!reportProcessingInstruction(parser, enc, s, next))
- return XML_ERROR_NO_MEMORY;
- break;
- case XML_TOK_COMMENT:
- if (!reportComment(parser, enc, s, next))
- return XML_ERROR_NO_MEMORY;
+ case XML_TOK_BOM:
+ handleDefault = XML_FALSE;
break;
}
break;
+ case XML_ROLE_DOCTYPE_NONE:
+ if (startDoctypeDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_ENTITY_NONE:
+ if (dtd.keepProcessing && entityDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_NOTATION_NONE:
+ if (notationDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_ATTLIST_NONE:
+ if (dtd.keepProcessing && attlistDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_ELEMENT_NONE:
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
} /* end of big switch */
- if (defaultHandler) {
- switch (tok) {
- case XML_TOK_PI:
- case XML_TOK_COMMENT:
- case XML_TOK_BOM:
- case XML_TOK_XML_DECL:
-#ifdef XML_DTD
- case XML_TOK_IGNORE_SECT:
-#endif /* XML_DTD */
- case XML_TOK_PARAM_ENTITY_REF:
- break;
- default:
-#ifdef XML_DTD
- if (role != XML_ROLE_IGNORE_SECT)
-#endif /* XML_DTD */
- reportDefault(parser, enc, s, next);
- }
- }
+ if (handleDefault && defaultHandler)
+ reportDefault(parser, enc, s, next);
s = next;
tok = XmlPrologTok(enc, s, end, &next);
if (skippedEntityHandler)
skippedEntityHandler(handlerArg, name, 0);
*/
- dtd.keepProcessing = XML_FALSE;
+ dtd.keepProcessing = dtd.standalone;
goto endEntityValue;
}
if (entity->open) {
}
entity->open = XML_FALSE;
if (!dtd.paramEntityRead)
- dtd.keepProcessing = XML_FALSE;
+ dtd.keepProcessing = dtd.standalone;
}
+ else
+ dtd.keepProcessing = dtd.standalone;
}
else {
entity->open = XML_TRUE;
return XML_ROLE_XML_DECL;
case XML_TOK_PI:
state->handler = prolog1;
- return XML_ROLE_NONE;
+ return XML_ROLE_PI;
case XML_TOK_COMMENT:
state->handler = prolog1;
+ return XML_ROLE_COMMENT;
case XML_TOK_BOM:
return XML_ROLE_NONE;
case XML_TOK_DECL_OPEN:
KW_DOCTYPE))
break;
state->handler = doctype0;
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_INSTANCE_START:
state->handler = error;
return XML_ROLE_INSTANCE_START;
case XML_TOK_PROLOG_S:
return XML_ROLE_NONE;
case XML_TOK_PI:
+ return XML_ROLE_PI;
case XML_TOK_COMMENT:
+ return XML_ROLE_COMMENT;
case XML_TOK_BOM:
return XML_ROLE_NONE;
case XML_TOK_DECL_OPEN:
KW_DOCTYPE))
break;
state->handler = doctype0;
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_INSTANCE_START:
state->handler = error;
return XML_ROLE_INSTANCE_START;
case XML_TOK_PROLOG_S:
return XML_ROLE_NONE;
case XML_TOK_PI:
+ return XML_ROLE_PI;
case XML_TOK_COMMENT:
- return XML_ROLE_NONE;
+ return XML_ROLE_COMMENT;
case XML_TOK_INSTANCE_START:
state->handler = error;
return XML_ROLE_INSTANCE_START;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_NAME:
case XML_TOK_PREFIXED_NAME:
state->handler = doctype1;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_OPEN_BRACKET:
state->handler = internalSubset;
return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
case XML_TOK_NAME:
if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
state->handler = doctype3;
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
}
if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
state->handler = doctype2;
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
}
break;
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_LITERAL:
state->handler = doctype3;
return XML_ROLE_DOCTYPE_PUBLIC_ID;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_LITERAL:
state->handler = doctype4;
return XML_ROLE_DOCTYPE_SYSTEM_ID;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_OPEN_BRACKET:
state->handler = internalSubset;
return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
case XML_TOK_DECL_CLOSE:
state->handler = prolog2;
return XML_ROLE_DOCTYPE_CLOSE;
end,
KW_ENTITY)) {
state->handler = entity0;
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
}
if (XmlNameMatchesAscii(enc,
ptr + 2 * MIN_BYTES_PER_CHAR(enc),
end,
KW_ATTLIST)) {
state->handler = attlist0;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
}
if (XmlNameMatchesAscii(enc,
ptr + 2 * MIN_BYTES_PER_CHAR(enc),
end,
KW_ELEMENT)) {
state->handler = element0;
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
}
if (XmlNameMatchesAscii(enc,
ptr + 2 * MIN_BYTES_PER_CHAR(enc),
end,
KW_NOTATION)) {
state->handler = notation0;
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
}
break;
case XML_TOK_PI:
+ return XML_ROLE_PI;
case XML_TOK_COMMENT:
- return XML_ROLE_NONE;
+ return XML_ROLE_COMMENT;
case XML_TOK_PARAM_ENTITY_REF:
return XML_ROLE_PARAM_ENTITY_REF;
case XML_TOK_CLOSE_BRACKET:
state->handler = doctype5;
- return XML_ROLE_NONE;
+ return XML_ROLE_DOCTYPE_NONE;
}
return common(state, tok);
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_PERCENT:
state->handler = entity1;
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_NAME:
state->handler = entity2;
return XML_ROLE_GENERAL_ENTITY_NAME;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_NAME:
state->handler = entity7;
return XML_ROLE_PARAM_ENTITY_NAME;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_NAME:
if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
state->handler = entity4;
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
}
if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
state->handler = entity3;
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
}
break;
case XML_TOK_LITERAL:
state->handler = declClose;
+ state->role_none = XML_ROLE_ENTITY_NONE;
return XML_ROLE_ENTITY_VALUE;
}
return common(state, tok);
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_LITERAL:
state->handler = entity4;
return XML_ROLE_ENTITY_PUBLIC_ID;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_LITERAL:
state->handler = entity5;
return XML_ROLE_ENTITY_SYSTEM_ID;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_DECL_CLOSE:
setTopLevel(state);
return XML_ROLE_ENTITY_COMPLETE;
case XML_TOK_NAME:
if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) {
state->handler = entity6;
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
}
break;
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_NAME:
state->handler = declClose;
+ state->role_none = XML_ROLE_ENTITY_NONE;
return XML_ROLE_ENTITY_NOTATION_NAME;
}
return common(state, tok);
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_NAME:
if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
state->handler = entity9;
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
}
if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
state->handler = entity8;
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
}
break;
case XML_TOK_LITERAL:
state->handler = declClose;
+ state->role_none = XML_ROLE_ENTITY_NONE;
return XML_ROLE_ENTITY_VALUE;
}
return common(state, tok);
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_LITERAL:
state->handler = entity9;
return XML_ROLE_ENTITY_PUBLIC_ID;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_LITERAL:
state->handler = entity10;
return XML_ROLE_ENTITY_SYSTEM_ID;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ENTITY_NONE;
case XML_TOK_DECL_CLOSE:
setTopLevel(state);
return XML_ROLE_ENTITY_COMPLETE;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
case XML_TOK_NAME:
state->handler = notation1;
return XML_ROLE_NOTATION_NAME;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
case XML_TOK_NAME:
if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
state->handler = notation3;
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
}
if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
state->handler = notation2;
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
}
break;
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
case XML_TOK_LITERAL:
state->handler = notation4;
return XML_ROLE_NOTATION_PUBLIC_ID;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
case XML_TOK_LITERAL:
state->handler = declClose;
+ state->role_none = XML_ROLE_NOTATION_NONE;
return XML_ROLE_NOTATION_SYSTEM_ID;
}
return common(state, tok);
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_NOTATION_NONE;
case XML_TOK_LITERAL:
state->handler = declClose;
+ state->role_none = XML_ROLE_NOTATION_NONE;
return XML_ROLE_NOTATION_SYSTEM_ID;
case XML_TOK_DECL_CLOSE:
setTopLevel(state);
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_NAME:
case XML_TOK_PREFIXED_NAME:
state->handler = attlist1;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_DECL_CLOSE:
setTopLevel(state);
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_NAME:
case XML_TOK_PREFIXED_NAME:
state->handler = attlist2;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_NAME:
{
static const char *types[] = {
}
if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) {
state->handler = attlist5;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
}
break;
case XML_TOK_OPEN_PAREN:
state->handler = attlist3;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
}
return common(state, tok);
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_NMTOKEN:
case XML_TOK_NAME:
case XML_TOK_PREFIXED_NAME:
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_CLOSE_PAREN:
state->handler = attlist8;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_OR:
state->handler = attlist3;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
}
return common(state, tok);
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_OPEN_PAREN:
state->handler = attlist6;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
}
return common(state, tok);
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_NAME:
state->handler = attlist7;
return XML_ROLE_ATTRIBUTE_NOTATION_VALUE;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_CLOSE_PAREN:
state->handler = attlist8;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_OR:
state->handler = attlist6;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
}
return common(state, tok);
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_POUND_NAME:
if (XmlNameMatchesAscii(enc,
ptr + MIN_BYTES_PER_CHAR(enc),
end,
KW_FIXED)) {
state->handler = attlist9;
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
}
break;
case XML_TOK_LITERAL:
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ATTLIST_NONE;
case XML_TOK_LITERAL:
state->handler = attlist1;
return XML_ROLE_FIXED_ATTRIBUTE_VALUE;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_NAME:
case XML_TOK_PREFIXED_NAME:
state->handler = element1;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_NAME:
if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) {
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
return XML_ROLE_CONTENT_EMPTY;
}
if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) {
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
return XML_ROLE_CONTENT_ANY;
}
break;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_POUND_NAME:
if (XmlNameMatchesAscii(enc,
ptr + MIN_BYTES_PER_CHAR(enc),
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_CLOSE_PAREN:
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
return XML_ROLE_GROUP_CLOSE;
case XML_TOK_CLOSE_PAREN_ASTERISK:
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
return XML_ROLE_GROUP_CLOSE_REP;
case XML_TOK_OR:
state->handler = element4;
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
}
return common(state, tok);
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_NAME:
case XML_TOK_PREFIXED_NAME:
state->handler = element5;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_CLOSE_PAREN_ASTERISK:
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
return XML_ROLE_GROUP_CLOSE_REP;
case XML_TOK_OR:
state->handler = element4;
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
}
return common(state, tok);
}
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_OPEN_PAREN:
state->level += 1;
return XML_ROLE_GROUP_OPEN;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return XML_ROLE_ELEMENT_NONE;
case XML_TOK_CLOSE_PAREN:
state->level -= 1;
- if (state->level == 0)
+ if (state->level == 0) {
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
return XML_ROLE_GROUP_CLOSE;
case XML_TOK_CLOSE_PAREN_ASTERISK:
state->level -= 1;
- if (state->level == 0)
+ if (state->level == 0) {
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
return XML_ROLE_GROUP_CLOSE_REP;
case XML_TOK_CLOSE_PAREN_QUESTION:
state->level -= 1;
- if (state->level == 0)
+ if (state->level == 0) {
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
return XML_ROLE_GROUP_CLOSE_OPT;
case XML_TOK_CLOSE_PAREN_PLUS:
state->level -= 1;
- if (state->level == 0)
+ if (state->level == 0) {
state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
return XML_ROLE_GROUP_CLOSE_PLUS;
case XML_TOK_COMMA:
state->handler = element6;
{
switch (tok) {
case XML_TOK_PROLOG_S:
- return XML_ROLE_NONE;
+ return state->role_none;
case XML_TOK_DECL_CLOSE:
setTopLevel(state);
- return XML_ROLE_NONE;
+ return state->role_none;
}
return common(state, tok);
}