⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlrole.c

📁 一个很好用的解析
💻 C
📖 第 1 页 / 共 2 页
字号:
    return XML_ROLE_NONE;  case XML_TOK_LITERAL:    state->handler = notation4;    return XML_ROLE_NOTATION_PUBLIC_ID;  }  return common(state, tok);}staticint notation3(PROLOG_STATE *state,	      int tok,	      const char *ptr ATTR_UNUSED,	      const char *end ATTR_UNUSED,	      const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_LITERAL:    state->handler = declClose;    return XML_ROLE_NOTATION_SYSTEM_ID;  }  return common(state, tok);}staticint notation4(PROLOG_STATE *state,	      int tok,	      const char *ptr ATTR_UNUSED,	      const char *end ATTR_UNUSED,	      const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_LITERAL:    state->handler = declClose;    return XML_ROLE_NOTATION_SYSTEM_ID;  case XML_TOK_DECL_CLOSE:    setTopLevel(state);    return XML_ROLE_NOTATION_NO_SYSTEM_ID;  }  return common(state, tok);}staticint attlist0(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NAME:  case XML_TOK_PREFIXED_NAME:    state->handler = attlist1;    return XML_ROLE_ATTLIST_ELEMENT_NAME;  }  return common(state, tok);}staticint attlist1(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_DECL_CLOSE:    setTopLevel(state);    return XML_ROLE_NONE;  case XML_TOK_NAME:  case XML_TOK_PREFIXED_NAME:    state->handler = attlist2;    return XML_ROLE_ATTRIBUTE_NAME;  }  return common(state, tok);}staticint attlist2(PROLOG_STATE *state,	     int tok,	     const char *ptr,	     const char *end,	     const ENCODING *enc){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NAME:    {      static const char *types[] = {	KW_CDATA,        KW_ID,        KW_IDREF,        KW_IDREFS,        KW_ENTITY,        KW_ENTITIES,        KW_NMTOKEN,        KW_NMTOKENS,      };      int i;      for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++)	if (XmlNameMatchesAscii(enc, ptr, end, types[i])) {	  state->handler = attlist8;	  return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i;	}    }    if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) {      state->handler = attlist5;      return XML_ROLE_NONE;    }    break;  case XML_TOK_OPEN_PAREN:    state->handler = attlist3;    return XML_ROLE_NONE;  }  return common(state, tok);}staticint attlist3(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NMTOKEN:  case XML_TOK_NAME:  case XML_TOK_PREFIXED_NAME:    state->handler = attlist4;    return XML_ROLE_ATTRIBUTE_ENUM_VALUE;  }  return common(state, tok);}staticint attlist4(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_CLOSE_PAREN:    state->handler = attlist8;    return XML_ROLE_NONE;  case XML_TOK_OR:    state->handler = attlist3;    return XML_ROLE_NONE;  }  return common(state, tok);}staticint attlist5(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_OPEN_PAREN:    state->handler = attlist6;    return XML_ROLE_NONE;  }  return common(state, tok);}staticint attlist6(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NAME:    state->handler = attlist7;    return XML_ROLE_ATTRIBUTE_NOTATION_VALUE;  }  return common(state, tok);}staticint attlist7(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_CLOSE_PAREN:    state->handler = attlist8;    return XML_ROLE_NONE;  case XML_TOK_OR:    state->handler = attlist6;    return XML_ROLE_NONE;  }  return common(state, tok);}/* default value */staticint attlist8(PROLOG_STATE *state,	     int tok,	     const char *ptr,	     const char *end,	     const ENCODING *enc){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_POUND_NAME:    if (XmlNameMatchesAscii(enc,			    ptr + MIN_BYTES_PER_CHAR(enc),			    end,			    KW_IMPLIED)) {      state->handler = attlist1;      return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE;    }    if (XmlNameMatchesAscii(enc,			    ptr + MIN_BYTES_PER_CHAR(enc),			    end,			    KW_REQUIRED)) {      state->handler = attlist1;      return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE;    }    if (XmlNameMatchesAscii(enc,			    ptr + MIN_BYTES_PER_CHAR(enc),			    end,			    KW_FIXED)) {      state->handler = attlist9;      return XML_ROLE_NONE;    }    break;  case XML_TOK_LITERAL:    state->handler = attlist1;    return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE;  }  return common(state, tok);}staticint attlist9(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_LITERAL:    state->handler = attlist1;    return XML_ROLE_FIXED_ATTRIBUTE_VALUE;  }  return common(state, tok);}staticint element0(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NAME:  case XML_TOK_PREFIXED_NAME:    state->handler = element1;    return XML_ROLE_ELEMENT_NAME;  }  return common(state, tok);}staticint element1(PROLOG_STATE *state,	     int tok,	     const char *ptr,	     const char *end,	     const ENCODING *enc){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NAME:    if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) {      state->handler = declClose;      return XML_ROLE_CONTENT_EMPTY;    }    if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) {      state->handler = declClose;      return XML_ROLE_CONTENT_ANY;    }    break;  case XML_TOK_OPEN_PAREN:    state->handler = element2;    state->level = 1;    return XML_ROLE_GROUP_OPEN;  }  return common(state, tok);}staticint element2(PROLOG_STATE *state,	     int tok,	     const char *ptr,	     const char *end,	     const ENCODING *enc){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_POUND_NAME:    if (XmlNameMatchesAscii(enc,			    ptr + MIN_BYTES_PER_CHAR(enc),			    end,			    KW_PCDATA)) {      state->handler = element3;      return XML_ROLE_CONTENT_PCDATA;    }    break;  case XML_TOK_OPEN_PAREN:    state->level = 2;    state->handler = element6;    return XML_ROLE_GROUP_OPEN;  case XML_TOK_NAME:  case XML_TOK_PREFIXED_NAME:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT;  case XML_TOK_NAME_QUESTION:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT_OPT;  case XML_TOK_NAME_ASTERISK:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT_REP;  case XML_TOK_NAME_PLUS:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT_PLUS;  }  return common(state, tok);}staticint element3(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_CLOSE_PAREN:  case XML_TOK_CLOSE_PAREN_ASTERISK:    state->handler = declClose;    return XML_ROLE_GROUP_CLOSE_REP;  case XML_TOK_OR:    state->handler = element4;    return XML_ROLE_NONE;  }  return common(state, tok);}staticint element4(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NAME:  case XML_TOK_PREFIXED_NAME:    state->handler = element5;    return XML_ROLE_CONTENT_ELEMENT;  }  return common(state, tok);}staticint element5(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_CLOSE_PAREN_ASTERISK:    state->handler = declClose;    return XML_ROLE_GROUP_CLOSE_REP;  case XML_TOK_OR:    state->handler = element4;    return XML_ROLE_NONE;  }  return common(state, tok);}staticint element6(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_OPEN_PAREN:    state->level += 1;    return XML_ROLE_GROUP_OPEN;  case XML_TOK_NAME:  case XML_TOK_PREFIXED_NAME:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT;  case XML_TOK_NAME_QUESTION:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT_OPT;  case XML_TOK_NAME_ASTERISK:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT_REP;  case XML_TOK_NAME_PLUS:    state->handler = element7;    return XML_ROLE_CONTENT_ELEMENT_PLUS;  }  return common(state, tok);}staticint element7(PROLOG_STATE *state,	     int tok,	     const char *ptr ATTR_UNUSED,	     const char *end ATTR_UNUSED,	     const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_CLOSE_PAREN:    state->level -= 1;    if (state->level == 0)      state->handler = declClose;    return XML_ROLE_GROUP_CLOSE;  case XML_TOK_CLOSE_PAREN_ASTERISK:    state->level -= 1;    if (state->level == 0)      state->handler = declClose;    return XML_ROLE_GROUP_CLOSE_REP;  case XML_TOK_CLOSE_PAREN_QUESTION:    state->level -= 1;    if (state->level == 0)      state->handler = declClose;    return XML_ROLE_GROUP_CLOSE_OPT;  case XML_TOK_CLOSE_PAREN_PLUS:    state->level -= 1;    if (state->level == 0)      state->handler = declClose;    return XML_ROLE_GROUP_CLOSE_PLUS;  case XML_TOK_COMMA:    state->handler = element6;    return XML_ROLE_GROUP_SEQUENCE;  case XML_TOK_OR:    state->handler = element6;    return XML_ROLE_GROUP_CHOICE;  }  return common(state, tok);}#ifdef XML_DTDstaticint condSect0(PROLOG_STATE *state,	      int tok,	      const char *ptr,	      const char *end,	      const ENCODING *enc){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_NAME:    if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) {      state->handler = condSect1;      return XML_ROLE_NONE;    }    if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) {      state->handler = condSect2;      return XML_ROLE_NONE;    }    break;  }  return common(state, tok);}staticint condSect1(PROLOG_STATE *state,	      int tok,	      const char *ptr,	      const char *end,	      const ENCODING *enc){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_OPEN_BRACKET:    state->handler = externalSubset1;    state->includeLevel += 1;    return XML_ROLE_NONE;  }  return common(state, tok);}staticint condSect2(PROLOG_STATE *state,	      int tok,	      const char *ptr,	      const char *end,	      const ENCODING *enc){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_OPEN_BRACKET:    state->handler = externalSubset1;    return XML_ROLE_IGNORE_SECT;  }  return common(state, tok);}#endif /* XML_DTD */staticint declClose(PROLOG_STATE *state,	      int tok,	      const char *ptr ATTR_UNUSED,	      const char *end ATTR_UNUSED,	      const ENCODING *enc ATTR_UNUSED){  switch (tok) {  case XML_TOK_PROLOG_S:    return XML_ROLE_NONE;  case XML_TOK_DECL_CLOSE:    setTopLevel(state);    return XML_ROLE_NONE;  }  return common(state, tok);}#if 0staticint ignore(PROLOG_STATE *state,	   int tok,	   const char *ptr,	   const char *end,	   const ENCODING *enc){  switch (tok) {  case XML_TOK_DECL_CLOSE:    state->handler = internalSubset;    return 0;  default:    return XML_ROLE_NONE;  }  return common(state, tok);}#endifstaticint error(PROLOG_STATE *state ATTR_UNUSED,	  int tok ATTR_UNUSED,	  const char *ptr ATTR_UNUSED,	  const char *end ATTR_UNUSED,	  const ENCODING *enc ATTR_UNUSED){  return XML_ROLE_NONE;}staticint common(PROLOG_STATE *state, int tok ATTR_UNUSED){#ifdef XML_DTD  if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF)    return XML_ROLE_INNER_PARAM_ENTITY_REF;#endif  state->handler = error;  return XML_ROLE_ERROR;}void xmlrpc_XmlPrologStateInit(PROLOG_STATE *state){  state->handler = prolog0;#ifdef XML_DTD  state->documentEntity = 1;  state->includeLevel = 0;#endif /* XML_DTD */}#ifdef XML_DTDvoid XmlPrologStateInitExternalEntity(PROLOG_STATE *state){  state->handler = externalSubset0;  state->documentEntity = 0;  state->includeLevel = 0;}#endif /* XML_DTD */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -