📄 dtd.cpp
字号:
/**
* This file is part of the DOM implementation for KDE.
*
* (C) 1999 Lars Knoll (knoll@kde.org)
* Copyright (C) 2003 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
*/
#include "html/dtd.h"
#include "misc/htmlhashes.h"
using namespace DOM;
#include <kdebug.h>
// priority of tags. Closing tags of higher priority close tags of lower
// priority.
// Update this list, whenever you change htmltags.*
//
// 0 elements with forbidden close tag and text. They don't get pushed
// to the stack.
// 1 inline elements
// 2 form elements
// 3 regular block level elements
// 4 lists (OL UL DIR MENU)
// 5 TD TH SELECT
// 6 TR
// 7 tbody thead tfoot caption object
// 8 table
// 9 body frameset
// 10 html
const unsigned short DOM::tagPriorityArray[] = {
0, // 0
1, // ID_A == 1
1, // ID_ABBR
1, // ID_ACRONYM
3, // ID_ADDRESS
1, // ID_APPLET
0, // ID_AREA
1, // ID_B
0, // ID_BASE
0, // ID_BASEFONT
1, // ID_BDO
1, // ID_BIG
5, // ID_BLOCKQUOTE
10, // ID_BODY
0, // ID_BR
1, // ID_BUTTON
0, // ID_CANVAS
5, // ID_CAPTION
5, // ID_CENTER
1, // ID_CITE
1, // ID_CODE
0, // ID_COL
1, // ID_COLGROUP
3, // ID_DD
1, // ID_DEL
1, // ID_DFN
5, // ID_DIR
5, // ID_DIV
5, // ID_DL
3, // ID_DT
1, // ID_EM
0, // ID_EMBED
3, // ID_FIELDSET
1, // ID_FONT
3, // ID_FORM
0, // ID_FRAME
10,// ID_FRAMESET
5, // ID_H1
5, // ID_H2
5, // ID_H3
5, // ID_H4
5, // ID_H5
5, // ID_H6
10,// ID_HEAD
0, // ID_HR
11,// ID_HTML
1, // ID_I
1, // ID_IFRAME
0, // ID_IMG
0, // ID_INPUT
1, // ID_INS
0, // ID_ISINDEX
1, // ID_KBD
0, // ID_KEYGEN
5, // ID_LABEL
1, // ID_LAYER
1, // ID_LEGEND
3, // ID_LI
0, // ID_LINK
1, // ID_MAP
3, // ID_MARQUEE
5, // ID_MENU
0, // ID_META
5, // ID_NOBR
10,// ID_NOEMBED
10,// ID_NOFRAMES
3, // ID_NOSCRIPT
1, // ID_NOLAYER
7, // ID_OBJECT
5, // ID_OL
1, // ID_OPTGROUP
2, // ID_OPTION
3, // ID_P
0, // ID_PARAM
5, // ID_PLAINTEXT
5, // ID_PRE
1, // ID_Q
1, // ID_S
1, // ID_SAMP
1, // ID_SCRIPT
6, // ID_SELECT
1, // ID_SMALL
1, // ID_SPAN
1, // ID_STRIKE
1, // ID_STRONG
1, // ID_STYLE
1, // ID_SUB
1, // ID_SUP
9,// ID_TABLE
8, // ID_TBODY
6, // ID_TD
1, // ID_TEXTAREA
8, // ID_TFOOT
6, // ID_TH
8, // ID_THEAD
1, // ID_TITLE
7, // ID_TR
1, // ID_TT
1, // ID_U
5, // ID_UL
1, // ID_VAR
1, // ID_WBR
5, // ID_XMP
0, // ID_TEXT
};
const tagStatus DOM::endTagArray[] = {
REQUIRED, // 0
REQUIRED, // ID_A == 1
REQUIRED, // ID_ABBR
REQUIRED, // ID_ACRONYM
REQUIRED, // ID_ADDRESS
REQUIRED, // ID_APPLET
FORBIDDEN, // ID_AREA
REQUIRED, // ID_B
FORBIDDEN, // ID_BASE
FORBIDDEN, // ID_BASEFONT
REQUIRED, // ID_BDO
REQUIRED, // ID_BIG
REQUIRED, // ID_BLOCKQUOTE
REQUIRED, // ID_BODY
FORBIDDEN, // ID_BR
REQUIRED, // ID_BUTTON
FORBIDDEN, // ID_CANVAS
REQUIRED, // ID_CAPTION
REQUIRED, // ID_CENTER
REQUIRED, // ID_CITE
REQUIRED, // ID_CODE
FORBIDDEN, // ID_COL
OPTIONAL, // ID_COLGROUP
OPTIONAL, // ID_DD
REQUIRED, // ID_DEL
REQUIRED, // ID_DFN
REQUIRED, // ID_DIR
REQUIRED, // ID_DIV
REQUIRED, // ID_DL
OPTIONAL, // ID_DT
REQUIRED, // ID_EM
REQUIRED, // ID_EMBED
REQUIRED, // ID_FIELDSET
REQUIRED, // ID_FONT
REQUIRED, // ID_FORM
FORBIDDEN, // ID_FRAME
REQUIRED, // ID_FRAMESET
REQUIRED, // ID_H1
REQUIRED, // ID_H2
REQUIRED, // ID_H3
REQUIRED, // ID_H4
REQUIRED, // ID_H5
REQUIRED, // ID_H6
OPTIONAL, // ID_HEAD
FORBIDDEN, // ID_HR
REQUIRED, // ID_HTML
REQUIRED, // ID_I
REQUIRED, // ID_IFRAME
FORBIDDEN, // ID_IMG
FORBIDDEN, // ID_INPUT
REQUIRED, // ID_INS
FORBIDDEN, // ID_ISINDEX
REQUIRED, // ID_KBD
REQUIRED, // ID_KEYGEN
REQUIRED, // ID_LABEL
REQUIRED, // ID_LAYER
REQUIRED, // ID_LEGEND
OPTIONAL, // ID_LI
FORBIDDEN, // ID_LINK
REQUIRED, // ID_MAP
REQUIRED, // ID_MARQUEE
REQUIRED, // ID_MENU
FORBIDDEN, // ID_META
REQUIRED, // ID_NOBR
REQUIRED, // ID_NOEMBED
REQUIRED, // ID_NOFRAMES
REQUIRED, // ID_NOSCRIPT
REQUIRED, // ID_NOLAYER
REQUIRED, // ID_OBJECT
REQUIRED, // ID_OL
REQUIRED, // ID_OPTGROUP
OPTIONAL, // ID_OPTION
OPTIONAL, // ID_P
FORBIDDEN, // ID_PARAM
REQUIRED, // ID_PLAINTEXT
REQUIRED, // ID_PRE
REQUIRED, // ID_Q
REQUIRED, // ID_S
REQUIRED, // ID_SAMP
REQUIRED, // ID_SCRIPT
REQUIRED, // ID_SELECT
REQUIRED, // ID_SMALL
REQUIRED, // ID_SPAN
REQUIRED, // ID_STRIKE
REQUIRED, // ID_STRONG
REQUIRED, // ID_STYLE
REQUIRED, // ID_SUB
REQUIRED, // ID_SUP
REQUIRED, // ID_TABLE
OPTIONAL, // ID_TBODY
OPTIONAL, // ID_TD
REQUIRED, // ID_TEXTAREA
OPTIONAL, // ID_TFOOT
OPTIONAL, // ID_TH
OPTIONAL, // ID_THEAD
REQUIRED, // ID_TITLE
OPTIONAL, // ID_TR
REQUIRED, // ID_TT
REQUIRED, // ID_U
REQUIRED, // ID_UL
REQUIRED, // ID_VAR
REQUIRED, // ID_WBR
REQUIRED, // ID_XMP
REQUIRED // ID_TEXT
};
static const ushort tag_list_0[] = {
ID_TEXT,
ID_TT,
ID_I,
ID_B,
ID_U,
ID_S,
ID_STRIKE,
ID_BIG,
ID_SMALL,
ID_EM,
ID_STRONG,
ID_DFN,
ID_CODE,
ID_SAMP,
ID_KBD,
ID_VAR,
ID_CITE,
ID_ABBR,
ID_ACRONYM,
ID_A,
ID_CANVAS,
ID_IMG,
ID_APPLET,
ID_OBJECT,
ID_EMBED,
ID_FONT,
ID_BASEFONT,
ID_BR,
ID_SCRIPT,
ID_MAP,
ID_Q,
ID_SUB,
ID_SUP,
ID_SPAN,
ID_BDO,
ID_IFRAME,
ID_INPUT,
ID_SELECT,
ID_TEXTAREA,
ID_LABEL,
ID_BUTTON,
ID_INS,
ID_DEL,
ID_COMMENT,
ID_NOBR,
ID_WBR,
0
};
static const ushort tag_list_1[] = {
ID_TEXT,
ID_P,
ID_H1,
ID_H2,
ID_H3,
ID_H4,
ID_H5,
ID_H6,
ID_UL,
ID_OL,
ID_DIR,
ID_MENU,
ID_PRE,
ID_PLAINTEXT,
ID_DL,
ID_DIV,
ID_LAYER,
ID_CENTER,
ID_NOSCRIPT,
ID_NOFRAMES,
ID_BLOCKQUOTE,
ID_FORM,
ID_ISINDEX,
ID_HR,
ID_TABLE,
ID_FIELDSET,
ID_ADDRESS,
ID_TT,
ID_I,
ID_B,
ID_U,
ID_S,
ID_STRIKE,
ID_BIG,
ID_SMALL,
ID_EM,
ID_STRONG,
ID_DFN,
ID_CODE,
ID_SAMP,
ID_KBD,
ID_VAR,
ID_CITE,
ID_ABBR,
ID_ACRONYM,
ID_A,
ID_CANVAS,
ID_IMG,
ID_APPLET,
ID_OBJECT,
ID_EMBED,
ID_FONT,
ID_BASEFONT,
ID_BR,
ID_SCRIPT,
ID_MAP,
ID_Q,
ID_SUB,
ID_SUP,
ID_SPAN,
ID_BDO,
ID_IFRAME,
ID_INPUT,
ID_KEYGEN,
ID_SELECT,
ID_TEXTAREA,
ID_LABEL,
ID_BUTTON,
ID_COMMENT,
ID_LI,
ID_DT,
ID_DD,
ID_XMP,
ID_INS,
ID_DEL,
ID_NOBR,
ID_WBR,
ID_MARQUEE,
0
};
static const ushort tag_list_2[] = {
ID_COMMENT,
0
};
static const ushort tag_list_3[] = {
ID_TEXT,
ID_P,
ID_H1,
ID_H2,
ID_H3,
ID_H4,
ID_H5,
ID_H6,
ID_UL,
ID_OL,
ID_DIR,
ID_MENU,
ID_PRE,
ID_PLAINTEXT,
ID_DL,
ID_DIV,
ID_LAYER,
ID_CENTER,
ID_NOSCRIPT,
ID_NOFRAMES,
ID_BLOCKQUOTE,
ID_FORM,
ID_ISINDEX,
ID_HR,
ID_TABLE,
ID_FIELDSET,
ID_ADDRESS,
ID_COMMENT,
ID_LI,
ID_XMP,
ID_MARQUEE,
0
};
static const ushort tag_list_4[] = {
ID_TEXT,
ID_PARAM,
ID_P,
ID_H1,
ID_H2,
ID_H3,
ID_H4,
ID_H5,
ID_H6,
ID_UL,
ID_OL,
ID_DIR,
ID_MENU,
ID_PRE,
ID_PLAINTEXT,
ID_DL,
ID_DIV,
ID_LAYER,
ID_CENTER,
ID_NOSCRIPT,
ID_NOFRAMES,
ID_BLOCKQUOTE,
ID_FORM,
ID_ISINDEX,
ID_HR,
ID_TABLE,
ID_FIELDSET,
ID_ADDRESS,
ID_TEXT,
ID_TT,
ID_I,
ID_B,
ID_U,
ID_S,
ID_STRIKE,
ID_BIG,
ID_SMALL,
ID_EM,
ID_STRONG,
ID_DFN,
ID_CODE,
ID_SAMP,
ID_KBD,
ID_VAR,
ID_CITE,
ID_ABBR,
ID_ACRONYM,
ID_A,
ID_CANVAS,
ID_IMG,
ID_APPLET,
ID_OBJECT,
ID_EMBED,
ID_FONT,
ID_BASEFONT,
ID_BR,
ID_SCRIPT,
ID_MAP,
ID_Q,
ID_SUB,
ID_SUP,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -