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

📄 dtd.cpp

📁 monqueror一个很具有参考价值的源玛
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	return check_array(childID, tag_list_6);    case ID_OL:    case ID_UL:	// OL: LI +	if(childID == ID_LI) return true;	return false;    case ID_DIR:    case ID_MENU:	// (DIR|MENU): LI + - _3	if(childID == ID_LI) return true;	return false;    case ID_FORM:	// FORM: _1 * - FORM	return check_array(childID, tag_list_1);    case ID_LABEL:	// LABEL: _0 * - LABEL	return check_array(childID, tag_list_0);    case ID_SELECT:	// SELECT: _7 +	return check_array(childID, tag_list_7);    case ID_OPTGROUP:	// OPTGROUP: OPTION +	if(childID == ID_OPTION) return true;	return false;    case ID_OPTION:    case ID_TEXTAREA:    case ID_TITLE:    case ID_STYLE:    case ID_SCRIPT:	// OPTION: TEXT	if(childID == ID_TEXT) return true;	return false;    case ID_FIELDSET:	// FIELDSET: ( TEXT , LEGEND , _1 * )	if(childID == ID_TEXT) return true;	if(childID == ID_LEGEND) return true;	return check_array(childID, tag_list_1);    case ID_BUTTON:	// BUTTON: _1 * - _8	return check_array(childID, tag_list_1);    case ID_TABLE:	// TABLE: ( CAPTION ? , ( COL * | COLGROUP * ) , THEAD ? , TFOOT ? , TBODY + )	switch(childID)	{	case ID_CAPTION:	case ID_COL:	case ID_COLGROUP:	case ID_THEAD:	case ID_TFOOT:	case ID_TBODY:	    return true;	default:		    return false;	}    case ID_THEAD:    case ID_TFOOT:    case ID_TBODY:	// THEAD: TR +	if(childID == ID_TR) return true;	return false;    case ID_COLGROUP:	// COLGROUP: COL *	if(childID == ID_COL) return true;	return false;    case ID_TR:	// TR: _9 +	return check_array(childID, tag_list_9);	return false;    case ID_FRAMESET:	// FRAMESET: ( _10 + & NOFRAMES ? )	return check_array(childID, tag_list_10);	return (childID == ID_NOFRAMES);    case ID_HEAD:	// HEAD: ( TITLE & ISINDEX ? & BASE ? ) + _11	if(childID == ID_TITLE || childID == ID_ISINDEX || childID == ID_BASE)	    return true;	return check_array(childID, tag_list_11);    case ID_HTML:	// HTML: ( HEAD , COMMENT, ( BODY | ( FRAMESET & NOFRAMES ? ) ) )	switch(childID)	{	case ID_HEAD:	case ID_COMMENT:	case ID_BODY:	case ID_FRAMESET:	case ID_NOFRAMES:	case ID_SCRIPT:	    return true;	default:	    return false;	}    default:	//kdDebug( 6030 ) << "unhandled tag in dtd.cpp:checkChild(): tagID=" << tagID << "!" << endl;	return false;    }}void DOM::addForbidden(int tagId, ushort *forbiddenTags){    switch(tagId)    {    case ID_A:	// we allow nested anchors. The innermost one wil be taken...	//forbiddenTags[ID_A]++;	break;    case ID_PRE:	//forbiddenTags[ID_IMG]++;	forbiddenTags[ID_OBJECT]++;	forbiddenTags[ID_EMBED]++;	forbiddenTags[ID_APPLET]++;	// why forbid them. We can deal with them in PRE	//forbiddenTags[ID_BIG]++;	//forbiddenTags[ID_SMALL]++;	//forbiddenTags[ID_SUB]++;	//forbiddenTags[ID_SUP]++;	forbiddenTags[ID_BASEFONT]++;	break;    case ID_DIR:    case ID_MENU:	forbiddenTags[ID_P]++;	forbiddenTags[ID_H1]++;	forbiddenTags[ID_H2]++;	forbiddenTags[ID_H3]++;	forbiddenTags[ID_H4]++;	forbiddenTags[ID_H5]++;	forbiddenTags[ID_H6]++;	forbiddenTags[ID_UL]++;	forbiddenTags[ID_OL]++;	forbiddenTags[ID_DIR]++;	forbiddenTags[ID_MENU]++;	forbiddenTags[ID_PRE]++;	forbiddenTags[ID_DL]++;	forbiddenTags[ID_DIV]++;	forbiddenTags[ID_CENTER]++;	forbiddenTags[ID_NOSCRIPT]++;	forbiddenTags[ID_NOFRAMES]++;	forbiddenTags[ID_BLOCKQUOTE]++;	forbiddenTags[ID_FORM]++;	forbiddenTags[ID_ISINDEX]++;	forbiddenTags[ID_HR]++;	forbiddenTags[ID_TABLE]++;	forbiddenTags[ID_FIELDSET]++;	forbiddenTags[ID_ADDRESS]++;	break;    case ID_FORM:	// the parser deals with them in another way. helps supporting some broken html	//forbiddenTags[ID_FORM]++;	break;    case ID_LABEL:	forbiddenTags[ID_LABEL]++;	break;    case ID_BUTTON:	forbiddenTags[ID_A]++;	forbiddenTags[ID_INPUT]++;	forbiddenTags[ID_SELECT]++;	forbiddenTags[ID_TEXTAREA]++;	forbiddenTags[ID_LABEL]++;	forbiddenTags[ID_BUTTON]++;	forbiddenTags[ID_FORM]++;	forbiddenTags[ID_ISINDEX]++;	forbiddenTags[ID_FIELDSET]++;	forbiddenTags[ID_IFRAME]++;	break;    default:	break;    }}void DOM::removeForbidden(int tagId, ushort *forbiddenTags){    switch(tagId)    {    case ID_A:	//forbiddenTags[ID_A]--;	break;    case ID_PRE:	//forbiddenTags[ID_IMG]--;	forbiddenTags[ID_OBJECT]--;	forbiddenTags[ID_EMBED]--;	forbiddenTags[ID_APPLET]--;	//forbiddenTags[ID_BIG]--;	//forbiddenTags[ID_SMALL]--;	//forbiddenTags[ID_SUB]--;	//forbiddenTags[ID_SUP]--;	forbiddenTags[ID_BASEFONT]--;	break;    case ID_DIR:    case ID_MENU:	forbiddenTags[ID_P]--;	forbiddenTags[ID_H1]--;	forbiddenTags[ID_H2]--;	forbiddenTags[ID_H3]--;	forbiddenTags[ID_H4]--;	forbiddenTags[ID_H5]--;	forbiddenTags[ID_H6]--;	forbiddenTags[ID_UL]--;	forbiddenTags[ID_OL]--;	forbiddenTags[ID_DIR]--;	forbiddenTags[ID_MENU]--;	forbiddenTags[ID_PRE]--;	forbiddenTags[ID_DL]--;	forbiddenTags[ID_DIV]--;	forbiddenTags[ID_CENTER]--;	forbiddenTags[ID_NOSCRIPT]--;	forbiddenTags[ID_NOFRAMES]--;	forbiddenTags[ID_BLOCKQUOTE]--;	forbiddenTags[ID_FORM]--;	forbiddenTags[ID_ISINDEX]--;	forbiddenTags[ID_HR]--;	forbiddenTags[ID_TABLE]--;	forbiddenTags[ID_FIELDSET]--;	forbiddenTags[ID_ADDRESS]--;	break;    case ID_FORM:	//forbiddenTags[ID_FORM]--;	break;    case ID_LABEL:	forbiddenTags[ID_LABEL]--;	break;    case ID_BUTTON:	forbiddenTags[ID_A]--;	forbiddenTags[ID_INPUT]--;	forbiddenTags[ID_SELECT]--;	forbiddenTags[ID_TEXTAREA]--;	forbiddenTags[ID_LABEL]--;	forbiddenTags[ID_BUTTON]--;	forbiddenTags[ID_FORM]--;	forbiddenTags[ID_ISINDEX]--;	forbiddenTags[ID_FIELDSET]--;	forbiddenTags[ID_IFRAME]--;	break;    default:	break;    }}struct attr_priv {    attr_priv() { id = len = 0, val = 0; }    attr_priv(ushort i, const QChar *v, ushort l)    { id =i; len = l, val = v; }    ushort id;    const QChar *val;    ushort len;};DOMString find_attr(ushort id, const attr_priv *attrs){    int i = 0;    while(attrs[i].id != 0)    {        if(attrs[i].id == id)            return DOMString(attrs[i].val, attrs[i].len);        i++;    }    return DOMString();}static const QChar value_1_0 [] = { 'N','O','N','E' };attr_priv attr_list_1[] = {    attr_priv(ATTR_CLEAR, value_1_0, 4)};static const QChar value_2_0 [] = { 'R','E','C','T' };attr_priv attr_list_2[] = {    attr_priv(ATTR_SHAPE, value_2_0, 4)};static const QChar value_3_0 [] = { 'R','E','C','T' };attr_priv attr_list_3[] = {    attr_priv(ATTR_SHAPE, value_3_0, 4)};static const QChar value_4_0 [] = { 'D','A','T','A' };attr_priv attr_list_4[] = {    attr_priv(ATTR_VALUETYPE, value_4_0, 4)};static const QChar value_5_0 [] = { 'G','E','T' };static const QChar value_5_1 [] = { 'A','P','P','L','I','C','A','T','I','O','N','/','X','-','W','W','W','-','F','O','R','M','-','U','R','L','E','N','C','O','D','E','D' };attr_priv attr_list_5[] = {    attr_priv(ATTR_METHOD, value_5_0, 3),    attr_priv(ATTR_ENCTYPE, value_5_1, 33)};static const QChar value_6_0 [] = { 'T','E','X','T' };attr_priv attr_list_6[] = {    attr_priv(ATTR_TYPE, value_6_0, 4)};static const QChar value_7_0 [] = { 'S','U','B','M','I','T' };attr_priv attr_list_7[] = {    attr_priv(ATTR_TYPE, value_7_0, 6)};static const QChar value_8_0 [] = { '1' };attr_priv attr_list_8[] = {    attr_priv(ATTR_SPAN, value_8_0, 1)};static const QChar value_9_0 [] = { '1' };attr_priv attr_list_9[] = {    attr_priv(ATTR_SPAN, value_9_0, 1)};static const QChar value_10_0 [] = { '1' };static const QChar value_10_1 [] = { '1' };attr_priv attr_list_10[] = {    attr_priv(ATTR_ROWSPAN, value_10_0, 1),    attr_priv(ATTR_COLSPAN, value_10_1, 1)};static const QChar value_11_0 [] = { '1' };static const QChar value_11_1 [] = { 'A','U','T','O' };attr_priv attr_list_11[] = {    attr_priv(ATTR_FRAMEBORDER, value_11_0, 1),    attr_priv(ATTR_SCROLLING, value_11_1, 4)};static const QChar value_12_0 [] = { '1' };static const QChar value_12_1 [] = { 'A','U','T','O' };attr_priv attr_list_12[] = {    attr_priv(ATTR_FRAMEBORDER, value_12_0, 1),    attr_priv(ATTR_SCROLLING, value_12_1, 4)};static const QChar value_13_0 [] = { '-','/','/','W','3','C','/','/','D','T','D' };static const QChar value_13_1 [] = { 'T','R','A','N','S','I','T','I','O','N','A','L','/','/','E','N' };attr_priv attr_list_13[] = {    attr_priv(ATTR_VERSION, value_13_0, 11),    attr_priv(ATTR_HTML, value_13_1, 16)};DOMString DOM::findDefAttrNone(ushort){    return DOMString();};DOMString DOM::findDefAttrBR(ushort id){    return find_attr(id, attr_list_1);}DOMString DOM::findDefAttrA(ushort id){    return find_attr(id, attr_list_2);}DOMString DOM::findDefAttrAREA(ushort id){    return find_attr(id, attr_list_3);}DOMString DOM::findDefAttrPARAM(ushort id){    return find_attr(id, attr_list_4);}DOMString DOM::findDefAttrFORM(ushort id){    return find_attr(id, attr_list_5);}DOMString DOM::findDefAttrINPUT(ushort id){    return find_attr(id, attr_list_6);}DOMString DOM::findDefAttrBUTTON(ushort id){    return find_attr(id, attr_list_7);}DOMString DOM::findDefAttrCOLGROUP(ushort id){    return find_attr(id, attr_list_8);}DOMString DOM::findDefAttrCOL(ushort id){    return find_attr(id, attr_list_9);}DOMString DOM::findDefAttrTH(ushort id){    return find_attr(id, attr_list_10);}DOMString DOM::findDefAttrFRAME(ushort id){    return find_attr(id, attr_list_11);}DOMString DOM::findDefAttrIFRAME(ushort id){    return find_attr(id, attr_list_12);}DOMString DOM::findDefAttrHTML(ushort id){    return find_attr(id, attr_list_13);}

⌨️ 快捷键说明

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