PageSeeder markup language
PSML is a description language designed to be a straightforward, generic but extensible abstraction for the broadest possible range of documents. Like a subset of the HTML (with less formatting, more semantics and structure), PSML is rich enough to express a whole spectrum of document complexity from the same element set.
The strength of this design is that any document that can be expressed in PSML can be edited, versioned, published, indexed and searched with no code required.
This makes it straightforward to quickly prototype and supports an emergent design model.
Documents
The user interface fundamentals of Microsoft Word and PageSeeder are very similar. However, for developers, a PageSeeder document is more like a record in an object database than a conventional text file.
Instead of storing an entire document as a single file, the content of a PageSeeder document is represented by one or more fragments (explained in more detail below) plus the following:
- Semantics – labels are a straightforward way to add semantics (see label config).
- Lifecycle – workflow and versions manage binding information about the document and tasks to group members.
- Name/Value pairs – a properties fragment provides a configurable object for representing and editing name/value pairs.
- Structure – a document type can specify the order, semantics and content of a document. For further information, see PSML document template.
- Permanent ID – a DocID is a persistent identifier that must be unique across the entire server, not only groups it belongs to. The DocID allows a developer to retrieve a document without having to specify a location.
Fragments
The way content models are defined by a DTD or schema often aligns with PageSeeder fragments, which are mostly complete objects but still contextual, based on order or hierarchy. When a fragment is requested for display or edit, it is converted to HTML and converted back to XML upon submission. Because invalid fragments won’t successfully submit, PSML documents are always valid.
For further examples of document validation, see Schematron.
Further reading
To know more about this, have a look at PageSeeder data modeling.