---
title: "PageSeeder datatypes"
source: https://dev.pageseeder.com/psml/datatypes/pageseeder_datatypes.html
last_updated: 2026-08-07T17:09:54+10:00
tokens: ~3431
---

# PageSeeder datatypes

PageSeeder datatypes extend primitive types and are constrained by a pattern or by enumerated values. For readability, the following conventions are used.

**Character definitions used in this article**

| Letters | \[A-Za-z\] | ASCII letter in upper case and lower case |
| --- | --- | --- |
| Digits | \[0-9\] | ASCII digits 0 to 9 |
| Underscore | \_ | Underscore ASCII character U+005F |
| Hyphen | - | Hyphen-minus ASCII character U+002D |
| Dot | . | Full stop or baseline dot character U+002E |

## Boolean

An `xs:boolean` value can only be one of the canonical boolean values of `true` or `false`.

> **Note:** PageSeeder does not extends the XML Schema xs:boolean datatype to support literal values 1 or 0.

```xml

<xs:simpleType name="boolean">
  <xs:restriction base="xs:boolean">
    <xs:pattern value="true|false"/>
  </xs:restriction>
</xs:simpleType>
```

## Document ID

The document ID is an `xs:string` that only contains letters, digits, underscores or hyphens and must not exceed 100 characters.

```xml
<xs:simpleType  name="document-id">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_\-]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Document level

The document level is one of three values `metadata`, `portable` or `processed`.

Only `portable` documents can be uploaded to PageSeeder; but PageSeeder can generate documents in `metadata` or `processed` level.

```xml

<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="metadata"/>
    <xs:enumeration value="portable"/>
    <xs:enumeration value="processed"/>
  </xs:restriction>
</xs:simpleType>
```

## Document title

Also known as URI title, the title of a document title is an `xs:string` which must not exceed 250 characters.

```xml

<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:maxLength value="250"/>
  </xs:restriction>
</xs:simpleType>
```

## Document type

The document type is an `xs:string` that only contains letters, digits or underscores and must not exceed 50 characters.

```xml
<xs:simpleType name="document-type">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Fragment ID

The fragment ID is an `xs:string` that only contains letters, digits, underscores, equals, commas, ampersands, hyphens or dots and must not exceed 250 characters.

```xml
<xs:simpleType name="fragment-id">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_=,&amp;\-\.]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Fragment type

The fragment type is an `xs:string` that only contains letters, digits, underscores, hyphens or dots. 

```xml

<xs:simpleType name="fragment-type">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_\-\.]+"/>
  </xs:restriction>
</xs:simpleType
```

## Heading level

The heading level is an `xs:integer` value between 1 and 6.

```xml

<xs:simpleType>
  <xs:restriction base="xs:integer">
    <xs:pattern value="[1-6]"/>
  </xs:restriction>
</xs:simpleType>
```

## Horizontal alignment

An enumerated value used for attributes to determine the horizontal alignment of the text content.

It must be one of the following values: `left`, `center`, `right`, `justify`. Usually the value `left` is the default.

More formally, this type is defined as:

```xml

<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>
```

## Indent

The indent level is an `xs:integer` value between 1 and 6.

```xml

<xs:simpleType>
  <xs:restriction base="xs:integer">
    <xs:pattern value="[1-6]"/>
  </xs:restriction>
</xs:simpleType>
```

## Label

The `@label` datatype extends `xs:string `but can only contain the following characters `[a-zA-Z0-9_-]`.

> **Note:** There is no limit on the length of a label – it is recommended that the name of a label does not exceed 245 characters.

```xml
<xs:simpleType name="label">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_\-]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Label list

An unordered comma-separated list of label names.

Empty and duplicate label names are ignored, so the `note,important,important,` is semantically equivalent to `important,note`.

```xml

<xs:simpleType name="label-list">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_\-,]*"/>
  </xs:restriction>
</xs:simpleType>
```

## List type (ordered)

The list type determines what prefix is displayed before each item. The list type is used for predetermined prefixes. It's possible to use custom schemes using the `@role` attribute.

**Prefixes for each list type**

| Type | Prefixes |
| --- | --- |
| `arabic` | 1  2  3  4  5 ... |
| `upperalpha` | A.  B.  C.  D.  E. ... |
| `loweralpha` | a.  b.  c.  d.  e. ... |
| `upperroman` | I  II  III  IV  V ... |
| `lowerroman` | i  ii iii iv  iv ... |

```xml

<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="arabic"/>
    <xs:enumeration value="upperalpha"/>
    <xs:enumeration value="loweralpha"/>
    <xs:enumeration value="upperroman"/>
    <xs:enumeration value="lowerroman"/>
  </xs:restriction>
</xs:simpleType>
```

## List type (unordered)

The list type determines the bullet style of each list item. This list type is used as a fallback. It’s possible and often preferable to define the bullet style externally (for example in CSS, or Word template properties when PSML is converted to HTML or DOCX).

```xml
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="none"/>
    <xs:enumeration value="disc"/>
    <xs:enumeration value="circle"/>
    <xs:enumeration value="square"/>
  </xs:restriction>
</xs:simpleType>
```

## Length

The length is the width or height of an object in pixels or percent, or more formally:

```regex

[0-9\.]+(px|%)?
```

## Length (fixed)

The fixed length of an object is numeric value that corresponds to the length in pixels.

## Port number

The port number of a URI.

```xml

<xs:simpleType>
  <xs:restriction base="xs:positiveInteger">
    <maxInclusive value="65535"/>
  </xs:restriction>
</xs:simpleType>
```

## Property count

The property count defines the maximum number of values that the property can have.

```xml

<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[0-9n]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Publication ID

The publication ID is an `xs:string` that only contains letters, digits, underscores or hyphens and must not exceed 250 characters.

```xml
<xs:simpleType name="publication-id">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_\-]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Publication type

The publication type is an `xs:string` that only contains letters, digits or underscores and must not exceed 50 characters.

```xml
<xs:simpleType name="publication-type">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Role

The role of an object is an `xs:string` that only contains letters, digits, underscores and hyphens.

```xml

<xs:simpleType name="role">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_\-]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Section ID

The section ID is an `xs:string` that only contains letters, digits, underscores, hyphens or dots.

```xml

<xs:simpleType name="section-id">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_\-\.]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Table part

The part of the table the row or column belongs to.

**Meaning of table part on \<row\> or \<col\>**

| Value | Row | Column |
| --- | --- | --- |
| `body` | implied default value and provided for completeness (it needn't be used) |
| `header` | Is part of the table header (e.g. inside `<thead>` in HTML)   | Cells in the column are considered to be header cells. (e.g. `<th>` in HTML) |
| `footer` | Is part of the table footer (e.g. inside `<tfoot>` in HTML)   | Cells in the column are considered to be footer cells. This is used for columns to right-hand side of a table that might represent aggregate values of the cells to their left (e.g. Total column) |

```xml

<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="body" />
    <xs:enumeration value="header" />
    <xs:enumeration value="footer" />
  </xs:restriction>
</xs:simpleType>
```

## URL type

The url type is an `xs:string` that only contains letters, digits or underscores and must not exceed 50 characters.

```xml
<xs:simpleType name="document-type">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Vertical alignment

An enumerated value used for attributes to determine the vertical alignment of the text content. It must be one of the following values: `top`, `middle`, `bottom`, `baseline`. Usually the value `baseline` is the default.

More formally, this type is defined as:

```xml

<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="top" />
    <xs:enumeration value="middle" />
    <xs:enumeration value="bottom" />
    <xs:enumeration value="baseline" />
  </xs:restriction>
</xs:simpleType>
```

## Xref config

The configuration name for an xref of a certain kind, see `xref-config.xml.`

```xml
<xs:simpleType name="xref-config">
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9\-_]+"/>
  </xs:restriction>
</xs:simpleType>
```

## Xref display

An `xs:string` value determines the display of a [cross-reference](../../reference/glossary/cross_reference.md).

When PageSeeder resolves a cross-reference, the textual content of an inline xref is affected. This is the reason why the textual content of an xref is considered [informational](../universal_format/psml_upload.md).

| `Value` | `Effect` |
| --- | --- |
| `document` | The URI title of the target document: `[document title]` |
| `document+manual` | The URI title of the target document, followed by some manual text: `[document title]: [manual title]` |
| `document+fragment` | The URI title of the target document, followed by the fragment ID: `[document title]: [target fragment ID]` |
| `manual` | Only the manual text: `[manual title]` |
| `template` | The manual title (`@title` on the xref) can contain any combination of text and the following tokens which are replaced dynamically: `{document}`: display title of the target document.`{filename}`: filename of the target document.`{docid}`: docid of the target document.`{fragment}`: target fragment ID.`{prefix}`: the `@prefix` of the first heading or para in the target fragment (`<xref>` only).`{parentnumber}`: the number of the parent heading or para for the target fragment (`<xref>` only).`{heading}`: the text of the first heading or property (before `<para>`) in the target fragment (`<xref>` only). The property can not have type `markdown` or have multiple values. The `{prefix}`, `{parentnumber}` and `{heading}` can be used with each other but are not to be used in the same title with other tokens or in `<blockxref>`. They are also not to be used in xrefs that are part of headings, as they are not resolved by the table of contents. |

> **Note:** The `display` attribute only affects the forward direction, [reverse cross-references](../../reference/glossary/reverse_xref.md) must use a fixed reverse title.

```xml
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="document" />
    <xs:enumeration value="document+manual" />
    <xs:enumeration value="document+fragment" />
    <xs:enumeration value="manual" /> 
    <xs:enumeration value="template" />
  </xs:restriction>
</xs:simpleType>
```

## Xref level

The level of an xref indicates how the heading levels in the target document are affected.

```xml
<xs:simpleType>
  <xs:restriction base="xs:integer">
    <xs:pattern value="[1-5]"/>
  </xs:restriction>
</xs:simpleType>
```

## Xref type

The type of [cross-reference](../../reference/glossary/cross_reference.md) in the forward direction.

| Type | Effect |
| --- | --- |
| `none` | Defines a reference between the source and the target content much like a regular link. |
| `alternate` | An alternate representations of the current document |
| `math` | An in-line transclude link to a file or `<media-fragment>` with mediatype of `application/mathml+xml` or `text/asciimath`. Used for equations. Only allowed on `<xref>`. |
| `embed` | Indicates that the target content is intended to be embedded in place of the link during publishing or some post-processing. Only allowed on `<blockxref>`. |
| `transclude` | Indicates that the target content is to be included in place of the link whenever the document is viewed. Only allowed on `<blockxref>`. |

See article on [transclusion](../../reference/glossary/transclusion.md) for a discussion on the differences between embedded links and transclusions.  
The model for `<xref>` is the following:

```xml
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="none"/>
    <xs:enumeration value="alternate"/>
    <xs:enumeration value="math"/>
  </xs:restriction>
</xs:simpleType>
```

The model for `<blockxref>` is the following:

```xml
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:enumeration value="none"/>
    <xs:enumeration value="alternate"/> 
    <xs:enumeration value="embed"/>
    <xs:enumeration value="transclude"/>
  </xs:restriction>
</xs:simpleType>
```

