Difference between revisions for Playground / Table Markup Guide




← Previous edit
Next edit →

Version1 Version2 Differences
1 1 As of **!!(green)6.2!!**, Wacko introduces a flexible markup for data tables. Any kind of tables allowed by HTML5 can be created using this markup, from the most basic examples (e.g. simple rows of cells) to complex tables with full support for accessibility options.
2  
  2  
3 3 {{toc numerate=1}}
4    
  4
5 5 ===Table basics===
6 6 ====Cells====
7 7
136 136 ^| John | 400Kg | 630Kg ||
137 137 |#
138 138
139   ===Spans===
140   **Spans** are used to combine multiple cells or multiple headings vertically or horizontally and are created using the following [[TableMarkupReference attribute parameters]]:
141  
142   ##""||""(''span options'')Element content""||""##
143  
144   A **cell spanning multiple columns** is generated by prefixing the cell content with a ##(x=''n'')## parameter, where ##''n''## is the number of columns to be spanned. The following example shows how to create a cell spanning two columns:
145  
146   %%
147   #|
148   ||(x=2) Cell spanning 2 columns | Cell 3 ||
  139 ===Cell Spans===
  140 **Cell spans** are used to combine multiple cells or multiple headings vertically or horizontally and are created using the following [[TableMarkupReference attribute parameters]]:
  141
  142 ##""||""(''span options'') Element content ""||""##
  143
  144 A **cell spanning multiple columns** is generated by prefixing the cell content with a ##(colspan=''n'')## parameter, where ##''n''## is the number of columns to be spanned. The following example shows how to create a cell spanning two columns:
  145
  146 %%
  147 #|
  148 ||(colspan=2) Cell spanning 2 columns | Cell 3 ||
149 149 || Cell 4 | Cell 5 | Cell 6 ||
150 150 || Cell 7 | Cell 8 | Cell 9 ||
151 151 |#
152 152 %%
153 153
154 154 #|
155   ||(x=2) Cell spanning 2 columns | Cell 3 ||
  155 ||(colspan=2) Cell spanning 2 columns | Cell 3 ||
156 156 || Cell 4 | Cell 5 | Cell 6 ||
157 157 || Cell 7 | Cell 8 | Cell 9 ||
158 158 |#
159 159
160   Spans can also be applied to rows. A **cell spanning multiple rows** is generated by prefixing the cell content with a ##(y=''n'')## parameter, where ##''n''## is the number of rows to be spanned. The following example shows how to create a cell spanning two rows:
161  
162   %%
163   #|
164   ||(y=2) Cell spanning 2 rows | Cell 2 | Cell 3 ||
  160 Spans can also be applied to rows. A **cell spanning multiple rows** is generated by prefixing the cell content with a ##(rowspan=''n'')## parameter, where ##''n''## is the number of rows to be spanned. The following example shows how to create a cell spanning two rows:
  161
  162 %%
  163 #|
  164 ||(rowspan=2) Cell spanning 2 rows | Cell 2 | Cell 3 ||
165 165 || Cell 5 | Cell 6 ||
166 166 || Cell 7 | Cell 8 | Cell 9 ||
167 167 |#
168 168 %%
169 169
170 170 #|
171   ||(y=2) Cell spanning 2 rows | Cell 2 | Cell 3||
  171 ||(rowspan=2) Cell spanning 2 rows | Cell 2 | Cell 3 ||
172 172 || Cell 5 | Cell 6 ||
173 173 || Cell 7 | Cell 8 | Cell 9 ||
174 174 |#
178 178 %%
179 179 #|
180 180 *| | Mon | Tue | Wed | Thu | Fri |*
181   || 8-9 | |(y=9) Outreach | |(y=9) Outreach | ||
  181 || 8-9 | |(rowspan=9) Outreach | |(rowspan=9) Outreach | ||
182 182 || 9-10 | | | || <-- reduced by two columns
183 183 || 10-11 | | | ||
184 184 || 11-12 | | | ||
185 185 || 12-13 | | | ||
186 186 || 13-14 | | | ||
187   || 14-15 |(y=3) CSCI 102 | CSCI 101 | CSCI 101 ||
  187 || 14-15 |(rowspan=3) CSCI 102 | CSCI 101 | CSCI 101 ||
188 188 || 15-16 | | || <-- reduced by one column
189 189 || 16-17 | | ||
190 190 |#
192 192
193 193 #|
194 194 *| | Mon | Tue | Wed | Thu | Fri |*
195   || 8-9 | |(y=9) Outreach | |(y=9) Outreach | ||
  195 || 8-9 | |(rowspan=9) Outreach | |(rowspan=9) Outreach | ||
196 196 || 9-10 | | | ||
197 197 || 10-11 | | | ||
198 198 || 11-12 | | | ||
199 199 || 12-13 | | | ||
200 200 || 13-14 | | | ||
201   || 14-15 |(y=3) CSCI 102 | CSCI 101 | CSCI 101 ||
  201 || 14-15 |(rowspan=3) CSCI 102 | CSCI 101 | CSCI 101 ||
202 202 || 15-16 | | ||
203 203 || 16-17 | | ||
204 204 |#
208 208 %%
209 209 #|
210 210 ?| Fruit production in the last two years |?
211   *| |(x=2) Apples |(x=2) Pears |*
  211 *| |(colspan=2) Apples |(colspan=2) Pears |*
212 212 *| | 2025 | 2026 | 2025 | 2026 |*
213 213 ^| Mary | 300Kg | 320Kg | 400kg | 280Kg ||
214 214 ^| John | 400Kg | 630Kg | 210Kg | 300Kg ||
217 217
218 218 #|
219 219 ?| Fruit production in the last two years |?
220   *| |(x=2) Apples |(x=2) Pears |*
  220 *| |(colspan=2) Apples |(colspan=2) Pears |*
221 221 *| | 2025 | 2026 | 2025 | 2026 |*
222 222 ^| Mary | 300Kg | 320Kg | 400kg | 280Kg ||
223 223 ^| John | 400Kg | 630Kg | 210Kg | 300Kg ||
227 227
228 228 %%
229 229 #|
230   ||(x=2 y=2) 2x2 |(x=2) 2x1 |(y=2) 1x2 ||
231   ||(y=2) 1x2 | 1x1 ||
232   || 1x1 | 1x1 |(x=2) 2x1 ||
233   |#
234   %%
235  
236   #|
237   ||(x=2 y=2) 2x2 |(x=2) 2x1 |(y=2) 1x2 ||
238   ||(y=2) 1x2 | 1x1 ||
239   || 1x1 | 1x1 |(x=2) 2x1 ||
240   |#
241  
242  
243   ===Formatting text within tables===
  230 ||(colspan=2 rowspan=2) 2x2 |(colspan=2) 2x1 |(rowspan=2) 1x2 ||
  231 ||(rowspan=2) 1x2 | 1x1 ||
  232 || 1x1 | 1x1 |(colspan=2) 2x1 ||
  233 |#
  234 %%
  235
  236 #|
  237 ||(colspan=2 rowspan=2) 2x2 |(colspan=2) 2x1 |(rowspan=2) 1x2 ||
  238 ||(rowspan=2) 1x2 | 1x1 ||
  239 || 1x1 | 1x1 |(colspan=2) 2x1 ||
  240 |#
  241
  242
  243 ===Formatting text===
244 244
245 245 You can use any kind of basic [[wackowiki:Doc/English/Formatting Wacko markup]] to render text within tables.
246 246 The following example adds basic formatting to cell content:
249 249 #|
250 250 ?| Using text formatting within tables |?
251 251 || ##Monospaced## | //Italics// | **Bold** | __Underlined__ ||
252   || !!Highlighted!! | --Strikethrough-- |(x=2) **//Bold italics//** ||
  252 || !!Highlighted!! | --Strikethrough-- |(colspan=2) **//Bold italics//** ||
253 253 |#
254 254 %%
255 255
256 256 #|
257 257 ?| Using text formatting within tables |?
258 258 || ##Monospaced## | //Italics// | **Bold** | __Underlined__ ||
259   || !!Highlighted!! | --Strikethrough-- |(x=2) **//Bold italics//** ||
260   |#
261  
262   ===Adding actions and images within tables===
  259 || !!Highlighted!! | --Strikethrough-- |(colspan=2) **//Bold italics//** ||
  260 |#
  261
  262 ===Actions and images===
263 263
264 264 Simple, content-generating [[Docs:UsingActions actions]] (including [[Docs:AddingImages images]]) can be added within table cells and headings.
265 265
279 279 || !!some colored text!! ||
280 280 |#
281 281
282   ===Adding links within tables===
  282 ===Links===
283 283
284 284 All the available options to create [[Docs:AddingLinks links]] can be used within table cells or headings:
285 285
293 293 || Forced interwiki links: | [[Wikipedia:Unicode Unicode article on Wikipedia]] ||
294 294 || External links: | http://www.example.com ||
295 295 || Forced external links: | [[http://www.example.com Example.com]] ||
296   || Image links: | file:/Przewalski-horses.jpg?600 ||
  296 || Image links: | file:/IMG_20250615_134454_135-min.jpg?600 ||
297 297 |#
298 298 %%
299 299
306 306 || Forced interwiki links: | [[Wikipedia:Unicode Unicode article on Wikipedia]] ||
307 307 || External links: | http://www.example.com ||
308 308 || Forced external links: | [[http://www.example.com Example.com]] ||
309   || Image links: | file:/Przewalski-horses.jpg?600 ||
310   |#
311  
312   ===Adding HTML within tables===
  309 || Image links: | file:/IMG_20250615_134454_135-min.jpg?600 ||
  310 |#
  311
  312 ===HTML===
313 313
314 314 You can also use [[Docs:UsingHTML embedded HTML]] in table elements:
315 315
329 329 || I love acronyms: (?WYTIWYG What You Think Is What You Get?) ||
330 330 |#
331 331
332   ===Adding a touch of style===
  332 ===Styling===
333 333 The table markup introduces a new [[TableMarkupReference style selector]]. CSS style options can be added to any element by enclosing them within **single braces**, right before the element content, e.g.:
334   ##""||""{''style options''}Element content""||""##
  334 ##""||""{''style options''} Element content ""||""##
335 335
336 336 For example, to render a cell with **red background** and **white text color**, you can do the following:
337 337
392 392 %%
393 393 #|
394 394 ?| Give priority |?
395   ||(x=2 y=2){background-color:pink} 2x2 |(x=2){background-color:lightblue} 2x1 |(y=2){background-color:lightyellow} 1x2 ||
396   ||(y=2){background-color:lightyellow} 1x2 |{background-color:#333;color:white} 1x1 ||
397   ||{background-color:lightblue} 1x1 |{background-color:#333;color:white} 1x1 |(x=2){background-color:pink} 2x1 ||
  395 ||(x=2 y=2){background-color:pink} 2x2 |(colspan=2){background-color:lightblue} 2x1 |(rowspan=2){background-color:lightyellow} 1x2 ||
  396 ||(rowspan=2){background-color:lightyellow} 1x2 |{background-color:#333;color:white} 1x1 ||
  397 ||{background-color:lightblue} 1x1 |{background-color:#333;color:white} 1x1 |(colspan=2){background-color:pink} 2x1 ||
398 398 |#
399 399 %%
400 400
401 401 #|
402 402 ?| Give priority |?
403   ||(x=2 y=2){background-color:pink} 2x2 |(x=2){background-color:lightblue} 2x1 |(y=2){background-color:lightyellow} 1x2 ||
404   ||(y=2){background-color:lightyellow} 1x2 |{background-color:#333;color:white} 1x1 ||
405   ||{background-color:lightblue} 1x1 |{background-color:#333;color:white} 1x1 |(x=2){background-color:pink} 2x1 ||
  403 ||(x=2 y=2){background-color:pink} 2x2 |(colspan=2){background-color:lightblue} 2x1 |(rowspan=2){background-color:lightyellow} 1x2 ||
  404 ||(rowspan=2){background-color:lightyellow} 1x2 |{background-color:#333;color:white} 1x1 ||
  405 ||{background-color:lightblue} 1x1 |{background-color:#333;color:white} 1x1 |(colspan=2){background-color:pink} 2x1 ||
406 406 |#
407 407
408 408 ===Adding style through classes===
449 449
450 450 ===Referring to elements: the ##id## attribute===
451 451
452   ##id## attributes are used to refer to unique elements in a page and to provide an anchor for styling and linking. You can specify an ##id## for any table element by using the ##(i=''id'')## parameter.
  452 ##id## attributes are used to refer to unique elements in a page and to provide an anchor for styling and linking. You can specify an ##id## for any table element by using the ##(id=''id'')## parameter.
453 453
454 454 For example, the following markup creates a table with the ##id## "main_table" containing two cells with ##id##'s "cell_1" and "cell_2"
455 455
456 456 %%
457 457 #|
458   !|(i=main_table)|!
  458 !|(id=main_table)|!
459 459 ?|Using id to refer to table elements|?
460   ||(i=cell_1)This cell can be referred to by using the ##cell_1## id||
461   ||(i=cell_2)This cell can be referred to by using the ##cell_2## id||
  460 ||(id=cell_1)This cell can be referred to by using the ##cell_1## id||
  461 ||(id=cell_2)This cell can be referred to by using the ##cell_2## id||
462 462 |#
463 463 %%
464 464
465 465 #|
466 466 !|(i:main_table)|!
467 467 ?|Using id to refer to table elements|?
468   ||(i=cell_1)This cell can be referred to by using the ##cell_1## id||
469   ||(i=cell_2)This cell can be referred to by using the ##cell_2## id||
  468 ||(id=cell_1)This cell can be referred to by using the ##cell_1## id||
  469 ||(id=cell_2)This cell can be referred to by using the ##cell_2## id||
470 470 |#
471 471
472 472 ===Accessibility options===
515 515 ====Heading scope====
516 516
517 517 To be semantically correct and accessible to users with non-visual browsers, headings should contain scope attributes describing the cell range they refer to.
518     * Column heading scopes can be specified using the ##(o=col)## parameter in the corresponding column heading;
519     * Row heading scopes can be specified using the ##(o=row)## parameter in the corresponding row heading;
  518   * Column heading scopes can be specified using the ##(scope=col)## parameter in the corresponding column heading;
  519   * Row heading scopes can be specified using the ##(scope=row)## parameter in the corresponding row heading;
520 520
521 521 The following example shows how to correctly add column and row scopes to a table to make it accessible:
522 522
524 524 #|
525 525 ?|Table 1: Company data||
526 526 |[|
527   *| |(o=col)Employees|(o=col)Founded|*
  527 *| |(scope=col)Employees|(scope=col)Founded|*
528 528 |#|
529   ^|(o=row)ACME Inc|1000|1947||
530   ^|(o=row)XYZ Corp|2000|1973||
  529 ^|(scope=row)ACME Inc|1000|1947||
  530 ^|(scope=row)XYZ Corp|2000|1973||
531 531 |#
532 532 %%
533 533
534 534 #|
535 535 ?|Table 1: Company data|?
536 536 |[|
537   *| |(o=col)Employees|(o=col)Founded|*
  537 *| |(scope=col)Employees|(scope=col)Founded|*
538 538 |#|
539   ^|(o=row)ACME Inc|1000|1947||
540   ^|(o=row)XYZ Corp|2000|1973||
541   |#
542  
  539 ^|(scope=row)ACME Inc|1000|1947||
  540 ^|(scope=row)XYZ Corp|2000|1973||
  541 |#
  542