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

📄 dtd.cpp

📁 将konqueror浏览器移植到ARM9 2410中
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    int i = 0;    while(tagList[i] != 0)    {        if(tagList[i] == child) return true;    i++;    }    return false;}bool DOM::checkChild(ushort tagID, ushort childID){    //kdDebug( 6030 ) << "checkChild: " << tagID << "/" << childID << endl;    // ### allow comments inside ANY node that can contain children    if (tagID >= 1000 || childID >= 1000)        return true; // one or both of the elements in an XML element; just allow for now    switch(tagID)    {    case ID_TT:    case ID_I:    case ID_B:    case ID_U:    case ID_S:    case ID_STRIKE:    case ID_BIG:    case ID_SMALL:    case ID_EM:    case ID_STRONG:    case ID_DFN:    case ID_CODE:    case ID_SAMP:    case ID_KBD:    case ID_VAR:    case ID_CITE:    case ID_ABBR:    case ID_ACRONYM:    case ID_SUB:    case ID_SUP:    case ID_BDO:    case ID_P:    case ID_H1:    case ID_H2:    case ID_H3:    case ID_H4:    case ID_H5:    case ID_H6:    case ID_Q:    case ID_LEGEND:        // _0 *        return check_array(childID, tag_list_0);    case ID_BASEFONT:    case ID_BR:    case ID_AREA:    case ID_LINK:    case ID_IMG:    case ID_PARAM:    case ID_HR:    case ID_INPUT:    case ID_COL:    case ID_FRAME:    case ID_ISINDEX:    case ID_BASE:    case ID_META:    case ID_COMMENT:        // BASEFONT: EMPTY        return false;    case ID_BODY:        // BODY: _1 * + _2        if( check_array(childID, tag_list_1) ) return true;        return check_array(childID, tag_list_2);    case ID_ADDRESS:        // ADDRESS: ( _0 | P ) *        if( check_array(childID, tag_list_0) ) return true;        return (childID == ID_P);    case ID_FONT:        // special handling for FONT: (_0 | 3)        return check_array(childID, tag_list_3) || check_array(childID, tag_list_0);    case ID__KONQBLOCK:        if ( childID == ID__KONQBLOCK ) return false;        // Fall through!    case ID_LI:    case ID_DT:    case ID_DIV:    case ID_SPAN:    case ID_LAYER:    case ID_CENTER:    case ID_BLOCKQUOTE:    case ID_INS:    case ID_DEL:    case ID_DD:    case ID_TH:    case ID_TD:    case ID_IFRAME:    case ID_NOFRAMES:    case ID_NOSCRIPT:    case ID_CAPTION:        // DIV: _1 *        return check_array(childID, tag_list_1);    case ID_A:        // A: _0 * - A        if( check_array(childID, tag_list_0) ) return true;        if ( childID == ID_TABLE ) return false; // no table in anchor        if( check_array(childID, tag_list_3) ) return true;        if( childID == ID_ADDRESS ) return true;        return false;    case ID_MAP:        // MAP: ( _3 + | AREA + )        if( check_array(childID, tag_list_3) ) return true;        return (childID == ID_AREA);    case ID_OBJECT:    case ID_EMBED:    case ID_APPLET:        // OBJECT: _4 *        return check_array(childID, tag_list_4);    case ID_PRE:        // PRE: _0 * - _5        return check_array(childID, tag_list_1);    case ID_DL:        // DL: _6 +        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);    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;    }}#if 0struct 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);}#endif

⌨️ 快捷键说明

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