Documentos con namespace
Todo lo explicado para documentos sin namespace es aplicable, excepto los nodos multilínea.
Como resumen anterior:
- Codificación UTF-8 Siempre
- Los Identificadores son CASE-INSENSITIVE
- No existen caracteres de escape
- En STxT son comentarios todas las líneas que empiezan por el carácter #
- 4 espacios equivalen a un tabulador
No se permite el uso de : para nodos multilínea.
Ésto esta implícito por el tipo de nodo.
En caso que se inserte el carcter : lo que pasará es que formará
parte del texto, no se considerará especial. Los otros tipos
de texto no permiten varias líneas, por lo que no tendrá efecto.
Definición de namespace
Un namespace es un documento sin namespace con el primer nodo llamado Namespace,
el cual es una estructura con todos los tipos de nodo posibles, a modo de ejemplo.
Un nodo se define sólamente una vez, después ya no se puede redefinir.
Se permite que aparezca antes siempre y cuando no se defina la estructura.
Vamos a ver un ejemplo:
Namespace: com.demo.documento
Documento:
Título: (1)
Secciones: (?)
Description: (1) TEXT
Tipo Documento: (1) ENUM
:informe
:artículo
:ensayo
Secciones:
Seccion: (+) TEXT
Otra forma de definirlo más simple hubiera sido:
Namespace: com.demo.documento
Documento:
Título: (1)
Secciones: (?)
Seccion: (+) TEXT
Description: (1) TEXT
Tipo Documento: (1) ENUM
:informe
:artículo
:ensayo
Finalmente un documento del namespace:
Documento (com.demo.documento):
Título: Primer documento simple
Description:
Este es el
primer documento
simple. Tiene varias líneas
Tipo Documento: informe
Secciones:
Seccion: Esta es una sección
Seccion:
Esta es una sección
con más de una
línea.
Definición de cantidad
Se permite definir la cantidad de nodos de la siguiente forma:
?: Puede o no aparecer (máximo 1)+: Al menos un nodo*: Cualquier número de nodosnum+: num o más nodosnum-: num o menos nodosnum: exactamente num nodos
Tipos de nodos
Se permiten los siguientes tipos de nodos:
STRING(Valor por defecto)TEXT(permite multiline, no permite nodos hijos)NUMBER: /^(-|+)?\d+(.\d+(e(-|+)?\d+)?/BOOLEAN: true | falseREGEX: valid regexENUM: En las siguientes multilineas se muestran los valores válidosDATE: YYYY-MM-DDTIMESTAMP: ISO_8601EMAIL: valid emailURL: valid urlHEXADECIMAL(permite multiline, no permite nodos hijos)BASE64(permite multiline, no permite nodos hijos)EMPTY: no permite contenidoINTEGER: (+|-)?\d+NATURAL: \d+