---
title: "Element <col>"
source: https://dev.pageseeder.com/psml/elements/element-col.html
description: "PSML Element reference for <col>"
last_updated: 2026-08-07T17:09:54+10:00
tokens: ~861
---

# \<col\>

## Summary

The `<col>` element defines a column in a table.

It is an optional element akin to the HTML's `<col>` or docbook `<colspec>` elements.

It can be used to specify some properties such as width, horizontal alignment or role to a column, or a range of columns, so that all cells belonging to that column inherit these properties.

A column can also be defined as a `header` column, meaning that all the cells in the column are considered to be header cells.

## Usage context

| Element category | table |
| --- | --- |
| PSML level | portable |
| Permitted content | none |
| Permitted parent | `<table>` |
| HTML equivalent | `<col>` or `<colspan>` |
| OpenXML equivalent | `<w:gridCol>` in `<w:tblGrid>` |

## Attributes

This element includes the following attributes:

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| align | [alignment](../datatypes/pageseeder_datatypes.md) | no | Horizontal alignment of cell within that column |
| part | [table-part](../datatypes/pageseeder_datatypes.md) | no | The part of the table the column belongs to |
| role | [role](../datatypes/pageseeder_datatypes.md) | no | Custom value that can be used for formatting |
| span | [xs:positiveInteger](../datatypes/xml_schema_datatypes.md) | no | The number of columns this definition extends to. **Deprecated.** |
| width | [length](../datatypes/pageseeder_datatypes.md) | no | Width of column in pixels or percent |

### `@align`

The horizontal alignment of text within cells belonging to that column (may not be supported by all export formats).

Possible values are:

- `center`
- `justify`
- `left`
- `right`

### `@part`

The part of the table the column belongs to.

For example, if a `<col>` element includes a `@part` attribute set to`header`, all cells in that column are considered to be header cells.

### `@role`

A role for the table which can be used for formatting.

### `@span`

The number of columns this definition extends to.

> **Warning:** Using `@span` is deprecated as it can cause errors when editing tables via the user interface. Instead, define all columns separately to apply the same formatting.

### `@width`

The width of column in pixels or percent (pixels if no px or % suffix).

## Examples

See [table examples](element-table.md).

## Schema

### XML Schema

```lang-xml

<xs:element name="col">
  <xs:complexType>

    <xs:attribute name="width">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="[0-9\.]+(px|%)?"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>

    <xs:attribute name="span" type="xs:positiveInteger"/>

    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="left" />
          <xs:enumeration value="center" />
          <xs:enumeration value="right" />
          <xs:enumeration value="justify" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="role" type="role"/>
  </xs:complexType>
</xs:element>
```

### Relax Schema

```lang-relax

element col {
   attribute width { text { pattern: "[0-9\.]+(px|%)?" } }?,
   attribute span { xs:positiveInteger }?,
   attribute align { "center" | "justify" | "left" | "right" }?,
   attribute role { role }?,
   empty
}
```

## Compatibility

This element was introduced in PSML Beta 7 and is only supported from PageSeeder 5.6.

