Document (globalcampus.site/namespace.stxt): Capítulo 5: Documentos con namespace Default: Title: STXT: El Libro Navigation: Previous: Anterior (04-raw-docs) Next: Siguiente (06-examples) Assert: Todo lo explicado para documentos sin namespace es aplicable, excepto los nodos multilínea. Content: 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 Assert: No se permite el uso de `:` para nodos multilínea.\ Ésto esta implícito por el tipo de nodo. Content: 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. Header: Definición de namespace Content: 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. Assert: 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. Content: Vamos a ver un ejemplo: Code: 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*** Content: Otra forma de definirlo más simple hubiera sido: Code: Namespace: www.demo.com/documento.stxt Documento: Título: (1) ***Secciones: (?)*** ***Seccion: (+) TEXT*** Description: (1) TEXT Tipo Documento: (1) ENUM :informe :artículo :ensayo Content: Finalmente un documento del namespace: Code: 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. Subheader: Definición de cantidad Content: 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 nodos * `num+`: _num_ o más nodos * `num-`: _num_ o menos nodos * `num`: exactamente _num_ nodos Subheader: Tipos de nodos Content: 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 | false * `REGEX`: valid regex * `ENUM`: En las siguientes multilineas se muestran los valores válidos * `DATE`: YYYY-MM-DD * `TIMESTAMP`: ISO_8601 * `EMAIL`: valid email * `URL`: valid url * `HEXADECIMAL` (permite multiline, no permite nodos hijos) * `BASE64` (permite multiline, no permite nodos hijos) * `EMPTY`: no permite contenido * `INTEGER`: (+|-)?\d+ * `NATURAL`: \d+