STXT: Introducción
STXT es un lenguaje Human-First, pensado para documentos y datos estructurados.
Documentos
STXT es un formato con las siguientes características:
- La indentación es la estructura: sin llaves ni etiquetas de cierre
- El texto libre es literal: sin caracteres de escape
- Esquemas con @stxt.template o @stxt.schema: validación y estructura escritos en STXT
- Seguridad: la seguridad no es un añadido, forma parte del diseño del lenguaje
Un documento STXT combina legibilidad y semántica, lo que lo hace adecuado en muchos ámbitos, por ejemplo:
- Wikis y documentos corporativos
- Gestores de contenido (CMS)
- Generación vía LLMs
- Ficheros de configuración
- Logs en streaming
Documentos sin namespace
# Un documento sencillo, sin validación ni namespace
Email:
From: John Smith
To: Mery Adams
Cc: Keyla Brown
Title: Project report
# El cuerpo es un bloque de texto literal
Body Content >>
Hello Mery!
The book is finished!Documentos con namespace y esquemas
STXT permite el uso de namespaces para agrupar documentos. Además, se pueden definir esquemas o plantillas para validar el contenido de un documento.
# Un documento `Email` del namespace `com.example.docs`:
Email (com.example.docs):
From: John Smith <[email protected]>
To: Mery Adams <[email protected]>
Cc: Keyla Brown <[email protected]>
Title: Project report
Body Content >>
Hello Mery!!
The book is finished!!Y la plantilla que valida ese namespace:
Template (@stxt.template): com.example.docs
Structure >>
Email (com.example.docs):
From: EMAIL
To: EMAIL
Cc: EMAIL
Bcc: EMAIL
Title: (?)
Body Content: (1) TEXT
Metadata (org.example.meta): (?)Comparación con otros formatos
STXT puede parecer YAML a primera vista, pero realmente se acerca más a XML en su diseño: conjuntos de nodos de texto anidados, ordenados, con namespaces y esquemas. Se eliminan etiquetas de cierre, atributos, referencias y entidades.
Como YAML, la indentación es la estructura, pero limita el número de construcciones
de texto a dos: nodos inline : y nodos bloque de texto >>; ambos sin caracteres de escape.
Como NestedText, todo es texto. Pero al tener namespaces, se pueden definir esquemas, lo que permite validación y semántica sin tener que recurrir a otros lenguajes.
Al preservar el orden de los nodos, no se necesita una nomenclatura adicional para listas, ya que todo son listas.
Por dónde empezar
- Probar STXT en el playground
- Leer el tutorial
- Leer las FAQ
- Instalar las herramientas que se necesiten:
stxten línea de comandos, la extensión de VS Code o alguna biblioteca (Java, TypeScript, Python).