---
title: "PSML split config schema reference"
source: https://dev.pageseeder.com/reference/advanced/schemas/psml-split-config.html
last_updated: 2026-09-05T17:35:08+10:00
tokens: ~2116
---

# PSML split config schema reference

**Version:** 0.7.0

This schema defines rules for splitting a single PSML file into multiple containers, documents and fragments. A container is a `references` document containing xrefs to component documents that make up a [publication](../../glossary/publications.md).

## Schema header

```xml

<xs:schema  elementFormDefault="unqualified"  
            version="0.7.0"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:xml="http://www.w3.org/XML/1998/namespace" />
```

## \<split-config\>

This is the root element and must contain at least one empty `<container>` element (in other words, that has **no child elements**). The first empty `<container>` element defines the main container (aka the *publication root*).

\<container\> \<document\> \<fragment\>
version The version of the schema for this config file (optional).


```xml
<xs:element  name="split-config">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="container" minOccurs="1"  maxOccurs="unbounded" />
      <xs:element ref="document"  minOccurs="0"  maxOccurs="unbounded" />
      <xs:element ref="fragment"  minOccurs="0"  maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="version" type="xs:string" />
  </xs:complexType>
</xs:element>
```

## \<container\>

Defines when to create a new container. A container is a `references` document containing xrefs to component documents that make up the publication. All attributes are optional.

\<start\> \<continue\>
type The document type of the container – default `references` (optional).


folder The name of the folder to put the container document in (optional).


labels A comma-separated list of document labels for the container (optional).


contains A document type that this container is to reference (optional).


```xml
<xs:element  name="container">
  <xs:complexType>
    <xs:sequence>
      <xs:element  ref="start"  minOccurs="0"  maxOccurs="1" />
      <xs:element  ref="continue"  minOccurs="0"  maxOccurs="1" />
    </xs:sequence>
    <xs:attribute  name="type"  type="document-type" />
    <xs:attribute  name="folder"  type="xs:string" />
    <xs:attribute  name="labels"  type="label-list" />
    <xs:attribute  name="contains"  type="xs:string" />
  </xs:complexType>
</xs:element>
```

## \<start\>

If a container is to have other content before its list of xrefs, this element defines where this content starts.

\<heading\> \<block\>```xml

<xs:element  name="start">
  <xs:complexType>
    <xs:choice  minOccurs="0"  maxOccurs="unbounded">
      <xs:element  ref="heading" />
      <xs:element  ref="block" />
    </xs:choice>
  </xs:complexType>
</xs:element>
```

## \<continue\>

If a container is to have other content after its list of xrefs, this element defines where this content starts.

\<heading\> \<block\>```xml

<xs:element  name="continue">
  <xs:complexType>
    <xs:choice  minOccurs="0"  maxOccurs="unbounded">
      <xs:element  ref="heading" />
      <xs:element  ref="block" />
    </xs:choice>
  </xs:complexType>
</xs:element>
```

## \<document\>

Defines when to create a new document.

\<heading\> \<block\> \<inline\>
type The document type (optional).


folder The name of the folder to put the document in (optional).


labels A comma-separated list of document labels for the document (optional).


```xml

<xs:element  name="document">
  <xs:complexType>
    <xs:choice  minOccurs="0"  maxOccurs="unbounded">
      <xs:element  ref="heading" />
      <xs:element  ref="block" />
      <xs:element  ref="inline" />
    </xs:choice>
    <xs:attribute  name="type"    type="document-type" />
    <xs:attribute  name="folder"  type="xs:string" />
    <xs:attribute  name="labels"  type="label-list" />
  </xs:complexType>
</xs:element>
```

## \<fragment\>

Defines when to create a new fragment.

\<heading\> \<block\> \<para\>
type The type of the fragment if it has one (optional).


labels A comma-separated list of fragment labels for the fragment (optional).


```xml

<xs:element  name="fragment">
  <xs:complexType>
    <xs:choice  minOccurs="0"  maxOccurs="unbounded">
      <xs:element  ref="heading" />
      <xs:element  ref="block" />
      <xs:element  ref="para" />
    </xs:choice>
    <xs:attribute  name="type"  type="fragment-type" />
    <xs:attribute  name="labels"  type="label-list" />
  </xs:complexType>
</xs:element>
```

## \<heading\>

Defines a starting point for a container, document or fragment as any `<heading>` in the original PSML with the defined `@level` and `@numbered`. The `<heading>` must be a direct child or grandchild (child of a child) of `<fragment>`.

 
level The `@level` the heading must have (required).


 
numbered The `@numbered` the heading must have – if `false`, the heading must not have `numbered="true"`, if not specified, then any heading is matched (optional).


```xml


<xs:element  name="heading">
   <xs:complexType>
     <xs:attribute  name="level"  use="required">        
       <xs:simpleType>
         <xs:restriction  base="xs:integer">
           <xs:pattern  value="[1-6]" />
         </xs:restriction>
       </xs:simpleType>
     </xs:attribute>
     <xs:attribute  name="numbered"  type="xs:boolean" />
   </xs:complexType>
  </xs:element>
```

## \<block\>

Defines a starting point for a container, document or fragment as any `<block>` in the original PSML with the defined `@label`. However, the `<block>` must be a direct child of `<fragment>`.

 
label The `@label` the the block must have (required).


```xml


<xs:element  name="block">
   <xs:complexType>
     <xs:attribute  name="label"  type="label"  use="required" />
   </xs:complexType>
 </xs:element>
```

## \<para\>

Defines a starting point for a fragment as any `<para>` in the original PSML with the defined `@numbered`. The `<para>` must be a direct child or grandchild (child of a child) of `<fragment>`.

 
numbered The `@numbered` the para must have – if `false` the para must not have `numbered="true"`, if not specified, then any para is matched (optional).


prefix Whether the para must have a `@prefix` attribute – if `false` the para must not have a `@prefix` attribute, if not specified, then any para is matched (optional). *Requires pso-psml version `0.7.0` or higher.*


```xml


<xs:element  name="para">
   <xs:complexType>
     <xs:attribute  name="numbered"  type="xs:boolean" />
   </xs:complexType>
 </xs:element>
```

## \<inline\>

> **Deprecated:** The `<inline>` element is now deprecated. Instead you can post process the PSML using XSLT to insert [\<placeholder\>](../../../psml/elements/element_placeholder.md) elements.

Defines where an xref to a placeholder document is created by replacing an `<inline>` element that matches the definition. It also defines how the title and/or filename of the new placeholder document is generated. It can contain an `<inline>` element corresponding to a nested `<inline>` element in the PSML, but no further nesting is allowed.

\<inline\>
label The `@label` the the inline must have (required).


as If the text content of the `<inline>` is to be used for the placeholder document title or filename or both (allowed values are `title`, `filename` or `title-filename`). If filename is not defined, it is generated as `[documenttype]-[00N].psml` . If `title-filename` then square brackets are added around the title (optional).


```xml

<xs:element  name="inline">
  <xs:complexType>
    <xs:sequence>        <!--  only one nesting is supported  -->
      <xs:element  ref="inline"  minOccurs="0"  maxOccurs="1" />
    </xs:sequence>
    <xs:attribute  name="label"  type="label"  use="required" />
    <xs:attribute  name="as">
      <xs:simpleType>
        <xs:restriction  base="xs:string">
          <xs:enumeration  value="title" />
          <xs:enumeration  value="filename" />
          <xs:enumeration  value="title-filename" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:element>
```

**Example**

This example:

```xml

<document labels="field"  type="field"  folder="fields">
  <inline label="ps_field">
    <inline label="ps_field_name"  as="title-filename" />
  </inline>
</document>
```

would replace:

```xml

<inline label="ps_field">
  <inline label="ps_field_name">Birth day</inline> 10 June 2009
</inline>
```

with an xref to a new placeholder document with title `[Birth day]` and filename `birth_day.psml`.

