PageSeeder markup language
PSML is a description language designed to be a simple, 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, searched with no code required.
This makes it easy to quickly prototype and supports an emergent design model.
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 documents 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 bind 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 just groups it belongs to. The DocID allows a developer to retrieve a document without having to specify a location.
The way content models are defined by a DTDs or schema often aligns with PageSeeder fragments. 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 will not successfully submit, PSML documents are always valid.
For further examples of document validation, see Schematron.
To know more about this, have a look at PageSeeder data modeling.