The "Simple Section" document type has a rather simple table element. A table contains an optional tableHeader row, followed by one or more tableRow rows. A tableHeader or tableRow element contains one or more tableCell cells. A tableCell may span several columns, which is specified using attribute columns.
The table element is styled using standard CSS rules, expect for the number of columns spanned by a cell. Excerpts from rng_section_config/section.css (same file for all variants):
table {
display: table;
border: 1px solid gray;
margin-top: 1.33ex;
margin-bottom: 1.33ex;
}
tableHeader,
tableRow {
display: table-row;
}
tableCell {
display: table-cell;
border: 1px solid gray;
padding: 0.5ex;
}
...
tableCell[columns] {
column-span: concatenate(attr(columns));
}Extension property column-span in XMLmind XML Editor - Support of Cascading Style Sheets (W3C CSS) may be used to specify the number of columns spanned by an element having display: table-cell. Similarly, extension property row-span in XMLmind XML Editor - Support of Cascading Style Sheets (W3C CSS) may be used to specify the number of rows spanned by an element having display: table-cell.
The value of property column-span (and row-span) is a positive integer. In the case of a tableCell, this value is obtained by parsing the value of attribute columns as a number. Expression concatenate(attr(columns)) does exactly this:
Standard CSS pseudo-function attr() is used to return the value of attribute columns.
Extension pseudo-function concatenate() in XMLmind XML Editor - Support of Cascading Style Sheets (W3C CSS) concatenates all its string arguments, then parses the result of the concatenation and finally returns the parsed CSS property value.