STXT

Built for humans. Reliable for machines.

Empezar el tutorial Abrir el playground Herramientas

STXT: Introducción

STXT es un lenguaje de marcado Human-First, donde los documentos son legibles y expresivos, y al mismo tiempo fiables para máquinas.

STXT se pronuncia "ESS-text o ESE-text" — primero la letra S, después text, como S-TEXT.

Documentos

STXT es un lenguaje de marcado legible para personas, pensado para documentos y datos estructurados: sin llaves, sin etiquetas de cierre, sin caracteres de escape — solo nombres, valores e indentación. Está orientado a:

  • Representar documentos y datos de manera clara.
  • Ser sencillo de leer y escribir.
  • Ser trivial de parsear en cualquier lenguaje de programación.
  • Permitir tanto contenido estructurado como texto libre.
  • Aplicar reglas de contenido mediante @stxt.schema o @stxt.template.

Un documento STXT combina la legibilidad con una estructura semántica explícita, lo que lo hace adecuado para documentos corporativos, contenido de un CMS y ficheros de configuración:

# Un email sencillo, sin validación
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!

Las reglas del lenguaje son pocas, y el ejemplo de arriba ya usa dos. La indentación es la estructura: un tabulador o cuatro espacios por nivel, y la jerarquía en pantalla es la jerarquía del documento. El texto libre es literal: todo lo indentado bajo un nodo >> es texto tal como se escribió, sin escapes ni comillas. El tutorial recorre el resto en quince secciones breves.

Documentos con namespace y esquemas

STXT permite el uso de namespaces para agrupar documentos. Se pueden definir además 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): (?)

La validación es opcional y forma parte del propio lenguaje: la plantilla de arriba también es STXT. Una herramienta de validación comprueba que cada nodo está declarado, que las cardinalidades se cumplen y que los valores con tipo — fechas, números, direcciones de correo — están bien formados; el modelo de contenido cerrado rechaza un campo mal escrito en lugar de aceptarlo en silencio. Cómo encajan documentos, definiciones y herramientas en un proyecto se describe en El entorno de trabajo.

Comparado con otros formatos

STXT comparte terreno con los formatos de texto estructurado habituales, y la comparación con cada uno tiene su propia página:

  • YAML también se basa en la indentación, pero optimiza para la serialización de datos antes que para los documentos.
  • JSON es un formato para máquinas, no pensado para escribirse a mano — y el que STXT adopta como representación de su árbol.
  • XML tiene todas las características de STXT y más, a cambio del enfoque Human-First: esquemas más complejos, etiquetas de cierre y escapes.
  • TOML comparte el objetivo pero no el modelo: tablas de claves con valores tipados, pensadas para configuración plana.
  • Markdown da formato a la prosa pero no estructura los datos: ambos se complementan.

La versión corta de los cinco está en la FAQ, y el razonamiento de fondo, en Principios de diseño.

Por dónde empezar

El lenguaje es estable: la sintaxis y el árbol canónico están en estado Zenith, y un documento válido hoy lo es para siempre. La promesa exacta está en Estabilidad y versiones, y la FAQ responde el resto.