Documents with namespace
Everything explained for documents without namespace is applicable, except for multiline nodes.
As a previous summary:
- Always UTF-8 Encoding
- Identifiers are CASE-INSENSITIVE
- There are no escape characters
- In STxT, all lines starting with the character # are comments
- 4 spaces are equivalent to a tab
The use of : for multiline nodes is not allowed.
This is implied by the node type.
If the character : is inserted, what will happen is that it will become
part of the text, it will not be considered special. The other types
of text do not allow multiple lines, so it will have no effect.
Namespace definition
A namespace is a document without namespace with the first node called Namespace,
which is a structure with all possible node types, as an example.
A node is defined only once, after that it cannot be redefined.
It is allowed to appear before as long as the structure is not defined.
Let's look at an example:
Namespace: com.demo.document
Documento:
Title: (1)
Sections: (?)
Description: (1) TEXT
Document Type: (1) ENUM
:report
:article
:essay
Sections:
Section: (+) TEXT
Another simpler way to define it would have been:
Namespace: com.demo.document
Documento:
Title: (1)
Sections: (?)
Section: (+) TEXT
Description: (1) TEXT
Document Type: (1) ENUM
:report
:article
:essay
Finally, a document from the namespace:
Documento (com.demo.document):
Title: First simple document
Description:
This is the
first simple
document. It has several lines
Document Type: report
Sections:
Section: This is a section
Section:
This is a section
with more than one
line.
Quantity definition
It is allowed to define the quantity of nodes as follows:
?: May or may not appear (maximum 1)+: At least one node*: Any number of nodesnum+: num or more nodesnum-: num or fewer nodesnum: exactly num nodes
Node types
The following node types are allowed:
STRING(Default value)TEXT(allows multiline, does not allow child nodes)NUMBER: /^(-|+)?\d+(.\d+(e(-|+)?\d+)?/BOOLEAN: true | falseREGEX: valid regexENUM: The following multilines show the valid valuesDATE: YYYY-MM-DDTIMESTAMP: ISO_8601EMAIL: valid emailURL: valid urlHEXADECIMAL(allows multiline, does not allow child nodes)BASE64(allows multiline, does not allow child nodes)EMPTY: does not allow contentINTEGER: (+|-)?\d+NATURAL: \d+