Capítulo 5: 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: www.demo.com/documento.stxt 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: www.demo.com/documento.stxt Documento: Título: (1) Secciones: (?) Seccion: (+) TEXT Description: (1) TEXT Tipo Documento: (1) ENUM :informe :artículo :ensayo
Finalmente un documento del namespace:
Documento (www.demo.com/documento.stxt): 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+