1 /* 2 Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 6 /** 7 * @fileOverview Defines the {@link CKEDITOR.dtd} object, which holds the DTD 8 * mapping for XHTML 1.0 Transitional. This file was automatically 9 * generated from the file: xhtml1-transitional.dtd. 10 */ 11 12 /** 13 * @namespace Holds and object representation of the HTML DTD to be used by the 14 * editor in its internal operations.<br /> 15 * <br /> 16 * Each element in the DTD is represented by a property in this object. Each 17 * property contains the list of elements that can be contained by the element. 18 * Text is represented by the "#" property.<br /> 19 * <br /> 20 * Several special grouping properties are also available. Their names start 21 * with the "$" character. 22 * @example 23 * // Check if "div" can be contained in a "p" element. 24 * alert( !!CKEDITOR.dtd[ 'p' ][ 'div' ] ); "false" 25 * @example 26 * // Check if "p" can be contained in a "div" element. 27 * alert( !!CKEDITOR.dtd[ 'div' ][ 'p' ] ); "true" 28 * @example 29 * // Check if "p" is a block element. 30 * alert( !!CKEDITOR.dtd.$block[ 'p' ] ); "true" 31 */ 32 CKEDITOR.dtd = (function() 33 { 34 var X = CKEDITOR.tools.extend, 35 36 A = {isindex:1,fieldset:1}, 37 B = {input:1,button:1,select:1,textarea:1,label:1}, 38 C = X({a:1},B), 39 D = X({iframe:1},C), 40 E = {hr:1,ul:1,menu:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1}, 41 F = {ins:1,del:1,script:1,style:1}, 42 G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1,wbr:1},F), 43 H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1,mark:1},G), 44 I = X({p:1},H), 45 J = X({iframe:1},H,B), 46 K = {img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1}, 47 48 L = X({a:1},J), 49 M = {tr:1}, 50 N = {'#':1}, 51 O = X({param:1},K), 52 P = X({form:1},A,D,E,I), 53 Q = {li:1}, 54 R = {style:1,script:1}, 55 S = {base:1,link:1,meta:1,title:1}, 56 T = X(S,R), 57 U = {head:1,body:1}, 58 V = {html:1}; 59 60 var block = {address:1,blockquote:1,center:1,dir:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1}; 61 62 return /** @lends CKEDITOR.dtd */ { 63 64 // The "$" items have been added manually. 65 66 // List of elements living outside body. 67 $nonBodyContent: X(V,U,S), 68 69 /** 70 * List of block elements, like "p" or "div". 71 * @type Object 72 * @example 73 */ 74 $block : block, 75 76 /** 77 * List of block limit elements. 78 * @type Object 79 * @example 80 */ 81 $blockLimit : { body:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,td:1,th:1,caption:1,form:1 }, 82 83 /** 84 * List of inline (<span> like) elements. 85 */ 86 $inline : L, // Just like span. 87 88 /** 89 * list of elements that can be children at <body>. 90 */ 91 $body : X({script:1,style:1}, block), 92 93 $cdata : {script:1,style:1}, 94 95 /** 96 * List of empty (self-closing) elements, like "br" or "img". 97 * @type Object 98 * @example 99 */ 100 $empty : {area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1,wbr:1}, 101 102 /** 103 * List of list item elements, like "li" or "dd". 104 * @type Object 105 * @example 106 */ 107 $listItem : {dd:1,dt:1,li:1}, 108 109 /** 110 * List of list root elements. 111 * @type Object 112 * @example 113 */ 114 $list: {ul:1,ol:1,dl:1}, 115 116 /** 117 * Elements that accept text nodes, but are not possible to edit into 118 * the browser. 119 * @type Object 120 * @example 121 */ 122 $nonEditable : {applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1,audio:1,video:1}, 123 124 /** 125 * List of block tags with each one a singleton element lives in the corresponding structure for description. 126 */ 127 $captionBlock : { caption:1, legend:1 }, 128 129 /** 130 * List of elements that can be ignored if empty, like "b" or "span". 131 * @type Object 132 * @example 133 */ 134 $removeEmpty : {abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1,mark:1}, 135 136 /** 137 * List of elements that have tabindex set to zero by default. 138 * @type Object 139 * @example 140 */ 141 $tabIndex : {a:1,area:1,button:1,input:1,object:1,select:1,textarea:1}, 142 143 /** 144 * List of elements used inside the "table" element, like "tbody" or "td". 145 * @type Object 146 * @example 147 */ 148 $tableContent : {caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}, 149 150 html: U, 151 head: T, 152 style: N, 153 script: N, 154 body: P, 155 base: {}, 156 link: {}, 157 meta: {}, 158 title: N, 159 col : {}, 160 tr : {td:1,th:1}, 161 img : {}, 162 colgroup : {col:1}, 163 noscript : P, 164 td : P, 165 br : {}, 166 wbr : {}, 167 th : P, 168 center : P, 169 kbd : L, 170 button : X(I,E), 171 basefont : {}, 172 h5 : L, 173 h4 : L, 174 samp : L, 175 h6 : L, 176 ol : Q, 177 h1 : L, 178 h3 : L, 179 option : N, 180 h2 : L, 181 form : X(A,D,E,I), 182 select : {optgroup:1,option:1}, 183 font : L, 184 ins : L, 185 menu : Q, 186 abbr : L, 187 label : L, 188 table : {thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1}, 189 code : L, 190 tfoot : M, 191 cite : L, 192 li : P, 193 input : {}, 194 iframe : P, 195 strong : L, 196 textarea : N, 197 noframes : P, 198 big : L, 199 small : L, 200 span : L, 201 hr : {}, 202 dt : L, 203 sub : L, 204 optgroup : {option:1}, 205 param : {}, 206 bdo : L, 207 'var' : L, 208 div : P, 209 object : O, 210 sup : L, 211 dd : P, 212 strike : L, 213 area : {}, 214 dir : Q, 215 map : X({area:1,form:1,p:1},A,F,E), 216 applet : O, 217 dl : {dt:1,dd:1}, 218 del : L, 219 isindex : {}, 220 fieldset : X({legend:1},K), 221 thead : M, 222 ul : Q, 223 acronym : L, 224 b : L, 225 a : J, 226 blockquote : P, 227 caption : L, 228 i : L, 229 u : L, 230 tbody : M, 231 s : L, 232 address : X(D,I), 233 tt : L, 234 legend : L, 235 q : L, 236 pre : X(G,C), 237 p : L, 238 em : L, 239 dfn : L, 240 //HTML5 241 section : P, 242 header : P, 243 footer : P, 244 nav : P, 245 article : P, 246 aside : P, 247 figure: P, 248 dialog : P, 249 hgroup : P, 250 mark : L, 251 time : L, 252 meter : L, 253 menu : L, 254 command : L, 255 keygen : L, 256 output : L, 257 progress : O, 258 audio : O, 259 video : O, 260 details : O, 261 datagrid : O, 262 datalist : O 263 }; 264 })(); 265 266 // PACKAGER_RENAME( CKEDITOR.dtd ) 267