STXT - Semantic Text
Built for humans. Reliable for machines.

STXT Tutorial

1. ¿Qué es STXT?
2. Ejemplo básico: ficha de un libro
3. Uso de namespaces
4. Validación con Plantillas
5. Validación con Schemas
6. Documento final validable
7. Buenas prácticas

1. ¿Qué es STXT?

STXT (Semantic Text) es un lenguaje textual jerárquico y semántico, diseñado para ser Human-First:

STXT permite representar documentos estructurados mediante:

La sintaxis base es mínima. La semántica avanzada se añade mediante:

2. Ejemplo básico: ficha de un libro

Veamos un ejemplo sencillo de un documento STXT que describe un libro. No hay validación todavía: es sólo lenguaje STXT. Además, no tiene ningún namespace asociado.

Book:
	Title: Arquitectura de software moderna
	Authors:
		Author: María Pérez
		Author: Juan García
	ISBN: 978-84-123456-7-8
	Publisher: ACME Editorial
	Published: 2025-10-01
	Summary >>
		Este libro ofrece una visión práctica de patrones y buenas prácticas
		para diseñar sistemas distribuidos y escalables.
	Chapter: Introducción a la arquitectura
		Content >>
			En este capítulo presentamos conceptos básicos:
			monolitos, microservicios y criterios de diseño.
	Chapter: Comunicación entre servicios
		Content >>
			Se describen protocolos, mensajería y patrones de integración.

Observaciones:

3. Uso de namespaces

Los namespaces permiten agrupar nodos en categorías. Además, si se define un namespace para un nodo, los nodos hijos heredan el namespace del padre, a no ser que uno de ellos lo redefina.

Ejemplo de un documento con namespace:

Book (com.acme.book):
	Title: Arquitectura de software moderna
	Authors:
		Author: María Pérez
		Author: Juan García
	ISBN: 978-84-123456-7-8

En este ejemplo vemos el nodo Book que pertenece al namespace com.acme.book. Además, también vemos nodos Title, Authors, Author y ISBN, que al ser descendientes de Book también heredan el namespace com.acme.book.

Reglas clave:

3.1 Namespaces especiales con `@`

Los namespace pueden empezar o no con @. Esto nos indica que son namespaces especiales o reservados. Por ejemplo, tanto los plantillas como los esquemas empiezan por @.

Esto es sólo una indicación semántica, pero el funcionamiento es el mismo.

3.2 Validación de documentos

Para poder validar semánticamente un documento, debe asociarse a un namespace. Una vez tiene el namespace, se usa un esquema (@stxt.schema) o template (@stxt.template) para validarlo. Las validaciones son extensiones al lenguaje base, que los parsers pueden o no implementar.

Para validar un documento es necesario que pertenezca a un namespace.
Por otro lado, un documento con namespace no es obligatorio validarlo.

4. Validación con Plantillas

Las Plantillas permiten definir reglas estructurales y de tipo de forma compacta. Son ideales para prototipos y documentación viva.

Un template es un documento STXT cuyo namespace es @stxt.template.

4.1 Template para libros

Template (@stxt.template): com.acme.book
	Description: Template para fichas de libros editoriales
	Structure >>
		Book:
			Title: (1)
			Authors: (1)
				Author: (+)
			ISBN: (1)
			Publisher: (?)
			Published: (?) DATE
			Summary: (?) TEXT
			Chapter: (+)
				Content: (?) TEXT

Qué define este template:

4.2 Formas permitidas para la numeración

Forma Significado
num Exactamente num.
* Cualquier número (0..∞).
+ Una o más (1..∞).
? Cero o una (0..1).
num+ num o más (num..∞).
num- Hasta num (0..num).
min,max Entre min y max.

4.3 Aplicación del template

Un validador que soporte plantillas debe:

El lenguaje STXT no cambia: el template se aplica sobre el árbol ya parseado. Dependiendo del parser, puede validar al mismo tiempo que parsea el contenido.

5. Validación con Schemas

Los Schemas proporcionan la misma información que un template, pero de forma más explícita y formal.

Un schema:

5.1 Schema equivalente al template

Schema (@stxt.schema): com.acme.book
	Node: Book
		Type: GROUP
		Children:
			Child: Title
				Min: 1
				Max: 1
			Child: Authors
				Min: 1
				Max: 1
			Child: ISBN
				Min: 1
				Max: 1
			Child: Publisher
				Max: 1
			Child: Published
				Max: 1
			Child: Summary
				Max: 1
			Child: Chapters
				Max: 1

	Node: Authors
		Children:
			Child: Author
				Min: 1

	Node: Chapters
		Children:
			Child: Chapter
				Min: 1

	Node: Chapter
		Children:
			Child: Content
				Max: 1

	Node: Title
	Node: Author
	Node: ISBN
	Node: Publisher
	Node: Published
		Type: DATE
	Node: Summary
		Type: TEXT
	Node: Content
		Type: TEXT

6. Documento final validable

Documento STXT completo que puede validarse con el template o el schema anterior:

Book (@com.acme.book):
	Title: Arquitectura de software moderna
	Authors:
		Author: María Pérez
		Author: Juan García
	ISBN: 978-84-123456-7-8
	Published: 2025-10-01
	Summary: Una introducción práctica a la arquitectura de sistemas modernos.
	Chapter: Introducción
		Content >>
			Conceptos básicos y objetivos del libro.

Este documento:

7. Buenas prácticas