Skip to main content


Configuration manual for PageSeeder

PSML properties editor


In PSML, a property is a single or multi-value object, typed as either a string, a date or a cross-reference.  With no modification, PageSeeder serves properties in a type-specific editing interface. However, for improved productivity or data quality, the editing interface for properties can be customized. 

To create a custom properties editor, go to the Template configuration administration page. Go to the Editing column and select the row for the document type to customize. You can create or edit the editor-config.xml file that stores the custom editor configuration for one or more of the fragment types in the document type.


The default PageSeeder editing interface can be specialized according to the @datatype of the <property> element. Examples include:

  • String editor:
    • checkboxes (checkbox).
    • select lists (select).
    • patterns constrained by regular expression (text).
  • Date editor (date):
    • date.
  • A cross-reference editor that is preconfigured to auto-suggest only link targets that are:  (xref)
    • contained by a certain folder structure.
    • with a certain document type or document label.
    • with a certain filename or ID.

Configuration options

The PSML properties editor can be customized using the <editor-config name="PSMLProperties"> element.

<editor-config name="PSMLProperties">
  <field ... />
  <field ... /> 

 The allowed attributes for each <field> are as follows.

AttributeDescriptionDefault value
@nameThe name of the property (required)
@typeOne of text, select, checkbox, date, datetime, xref, link, markup or markdown (required)
@labelTo be displayed as a title, next to the editable field[name]
@placeholderText that has been ‘ghosted’ into the text fields as guidance for the users
@patternA regular expression that constrains the value of the field (property). In other words, to be valid, the text string must conform to the pattern.
@autocompleteList the values of the same property in other document instances as suggestions for this property (for PSMLCreation config, the <t:param> name must match the property name).false
@uniqueWhether the property value should be unique in all document instances (for PSMLCreation config, the <t:param> name must match the property name).false
@readonlyWhether the field should be editablefalse
@requiredWhether the field value is required (only applies to PSMLCreation config)false


If type="xref", the <field> element can contain one <xref-config> element with the same content as for the xref config except that @name is optional.

If @name is specified, then the configuration from the PSML xref config for the project (xref-config.xml) with the same name is used and this <xref-config> element should be empty.

As properties can’t contain <blockxref>, only options for <xref> should be used in the xref config. Also, the @fragmenttype attribute on <xref-config> is ignored in the properties editor.


If type= select or checkbox, the <field> element can contain one or more <value> elements which contain the allowed values for the property.


The field type in the properties editor configuration defines the input type for the property and is related to the @datatype attribute of the property.


In the PSMLCreationconfiguration, a field corresponds to a <t:param> in the PSML document template with the same @name. The t:param/@type determines how the field value is formatted in the template as shown in the following table (?means optional and +means zero or more). Requires PageSeeder v5.98 or higher.

texttexttextcomma-separated texttexttexttext
integerintegerintegercomma-separated integer


The text type displays an input field for text to be entered manually. The placeholder option can be used to display a hint in the field when no value has been specified.

The pattern option can specify a regular expression that the value must match to be submitted. This can be useful mechanism to constrain the format or possible values.


The select type displays a drop-down list. Only one value can be selected by the user. The list of possible values can be set using  <value> elements. 


The checkbox type displays a list of checkboxes so that multiple values can be selected. The list of possible values can be set using <value> elements. Normally the PSML property should have @count="n" or @multiple="true", but if @count="1" and there is no @multiple  the options are comma-separated in the value attribute (note: @count is deprecated as of PageSeeder 5.9800).


The date type provides a date picker to the user and stores the value as ISO8601 (yyyy-mm-dd).


The datetime type provides a date and time picker to the user and stores the value as ISO8601 (yyyy-mm-ddThh:mm:ss±hh:mm). Requires PageSeeder v6.00 or higher.


The xref type allows users to set or edit cross-references with a label.


The Link type allows users to set or edit a link to a URL with a label. Requires PageSeeder v5.99 or higher.


The markdown type is for formatted text, see markdown.


Markup allows any of the elements <heading>, <para>, <list>, <nlist> or <preformat> and anything that they can contain. However, the UI doesn’t currently support <xref>, <image>or <inline>elements. Requires PageSeeder v5.98 or higher.


This option is designed to promote better consistency in values used for a property. It is less restrictive than the select input type, but it provides suggestion from usage data that is more useful than free text or suggestions from the browser (which are restricted to the user & machine).

It only applies to fields of type text – both single and multi-valued.

The editor lists the values previously used for that property so that the user can select one of them. The scope of the lookup is based on the property name but not the document type within the current group.


<field name="category" type="text" autocomplete="true" />


This option is designed to prevent users entering duplicate values in properties which should be considered unique.

It only applies to single valued fields of type text and for values of at least 3 characters.

The editor performs a lookup in the index for that specific property to check whether any other document uses the same value to determine whether the field value is unique.

The editor also lists values starting with the same strings which have already been used. For example, if ‘1234’ and ‘1235’ already exist, and the user types ‘123’ both values are displayed underneath in red with the name of documents these values are used in.

The scope of the ID is based on the property name but not the document type within the current group. This could be changed in the future to reduce the scope of uniqueness within documents of the same type rather than all documents or expand it to other groups.

This option defaults to false and takes precedence over autocomplete.


<field name="isbn" type="text" unique="true" />


This option is used to prevent some values from being editable. It is useful when values have been previously generated by a template or uploaded.

It could also be used when shared documents include some properties that can be edited by one group but not the other. But remember that if the permissions allow users to edit the document, PageSeeder doesn’t prevent the property from being modified.

It only applies to date, text and xref input types.

This option defaults to false and takes precedence over autocomplete and unique – they are ignored if specified.


<field name="payment" type="text" readonly="true" />


This option is used to require the user to enter a value for this field when creating a document or fragment. It is only applicable in the PSMLCreation config. Requires PageSeeder v5.98 or higher.

This option defaults to false.


<field name="payment" type="text" required="true" />


If you’re having trouble getting your configuration file to work, check the following:

  • The name of the file must be editor-config.xml if you have used the Template configuration administration page, it is already the case.
  • The file must be in the correct location template/[project]/psml/[document type]/ if you have used the Template configuration administration page, it is already the case.
  • Click the Validate all button on the Template configuration administration page which validates the contents of all config files.

Sample config

<editor-config name="PSMLProperties">
  <field name="author"
  <field name="category"
  <field name="in-stock"
         label="In Stock">
  <field name="available-date"
         label="Available Date"/>
  <field name="isbn"
         placeholder="Enter a valid ISBN 13 number (97xxxxxxxxxxx)"
  <field name="publisher"
         placeholder="Lookup publisher"/>

Before the properties editor can display the fields, it requires some default content in the PSML, which is usually added to the PSML document template for that document type.

The sample config above would require something similar to the following default content:

<properties-fragment id="2">
  <property title="Author"
            count="n" />
  <property title="Category"
            count="n" />
  <property title="In Stock"
            name="in-stock" />
  <property title="Available Date"
            datatype="date" />
  <property title="ISBN"
            name="isbn" />
  <property title="Publisher"
            datatype="xref" />
Created on , last edited on