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.
Schema header
<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).
version The version of the schema for this config file (optional).
<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.
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).
<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.
<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.
<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.
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).
<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.
type The type of the fragment if it has one (optional).
labels A comma-separated list of fragment labels for the fragment (optional).
<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).
<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>
.
<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.
<xs:element name="para"> <xs:complexType> <xs:attribute name="numbered" type="xs:boolean" /> </xs:complexType> </xs:element>
<inline>
The <inline>
element is now deprecated. Instead you can post process the PSML using XSLT to insert <placeholder> 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.
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).
<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:
<document labels="field" type="field" folder="fields"> <inline label="ps_field"> <inline label="ps_field_name" as="title-filename" /> </inline> </document>
would replace:
<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
.