Document (globalcampus.site/namespace.stxt):Capítulo 8: Ejemplos y otras tecnologías
Default:
Title: STXT: El Libro
Navigation:
Previous: Anterior (07-parser)
Next: Siguiente (09-semantic-web)
Metadata:
Title: Capítulo 8: Ejemplos y otras tecnologías
Description: Se muestran diversos ejemplos de STxT, y se comparan con otros lenguajes populares.
Author: Joan Costa Mombiela
last modif: 2013-03-01
header: Ejemplos
Content:
Hay miles de ejemplos que se pueden hacer con esta tecnología.
Es tan sencillo como coger un ejemplo cualquiera de otro lenguaje
y ver cómo se escribiría en @STxT@. Quizá lo más simple sea un ejemplo
que venga de XML, ya que tienen muchos paralelismos con @STxT@
Muchos ejemplos los he obtenido de [Wikipedia](https://www.wikipedia.org).
Un ejemplo (inventado) de xml sería:
code:
The Fellowship of the Ring
J.R.R. Tolkien
EN
29 July 1954
High fantasy Adventure
The Two Towers
J.R.R. Tolkien
76542
EN
11 November 1954
High fantasy Adventure
The Return of the King
J.R.R. Tolkien
12345
EN
20 October 1955
High fantasy Adventure
Content:
Lo mismo pasado a @STxT@:
code:
Library (www.examples.com/demo.stxt):
Book:
id: 1
Title: The Fellowship of the Ring
Author: J.R.R. Tolkien
Language: EN
Published: 29 July 1954
Genre: High fantasy Adventure
Book:
id: 2
Title: The Two Towers
Author: J.R.R. Tolkien
ISBN: 76542
Language: EN
Published: 11 November 1954
Genre: High fantasy Adventure
Book:
id: 3
Title: The Return of the King
Author: J.R.R. Tolkien
ISBN: 12345
Language: EN
Published: 20 October 1955
Genre: High fantasy Adventure
Content:
Otro ejemplo en XML:
code:
John Smith
Mery Adams
Keyla Brown
Project report
Hello Mery!! The book is finished!!
Content:
En @STxT@ se transforma en:
code:
Email (www.example.com/email.stxt):
From: John Smith
To: Mery Adams
Cc: Keyla Brown
Title: Project report
Body: Hello Mery!! The book is finished!!
Content:
Vemos que la conversión entre los 2 formatos es instantánea, aunque mucho más bonito el @STxT@.
Por cierto, hay un capítulo oculto, [STXT y XML](08-stxt-xml), por si lo queréis leer.
Lo hice en 2013 y es... curioso. Leer bajo vuestra responsabilidad ;-)
header:Wikipedia (*)
Content:
Tengo gran admiración por la wikipedia. Creo que es uno de los mejores proyectos que se han creado en Internet.
_¿Como se podría beneficiar de @STxT@?_
Bien, la wikipedia podría tener plantillas diferentes:
actores, políticos, serie tv, película, ciudades, países, ríos,... compartiendo gramáticas en muchos casos.
Por ejemplo, tanto actores como políticos pueden tener biografía, pero los actores también tendrían un listado de películas.
Además, sería muy interesante la mezcla de @STxT@ con el lenguaje propio de la wikipedia.
Creo que éste es un punto en el que @STxT@ gana a la mayoría de lenguajes.
La mezcla con los llamados "lightweight markup languajes" es realmente espectacular.
Así, se pueden hacer textos mixtos del estilo:
code:
City (www.wikipedia.org/city.stxt):
Name: Barcelona
Autonomous Community: Catalonia
Country: Spain
History:
{{Main|History of Barcelona}}
The founding of Barcelona is the subject of
two different legends. The first attributes
the founding of the city to the mythological [[Hercules]].
The second legend attributes the foundation
of the city directly to the historical
[[Carthage|Carthaginian]] [[Hamilcar Barca]],
father of [[Hannibal]], who named the city ''Barcino''
after his family in the 3rd century BC.
...
Content:
Otra ventaja es que con @STxT@ no solamente tendríamos "plantillas" de
cómo debe ser la información de una ciudad, sino que también podríamos
aplicar estilos y formatos dependiendo del tipo de documento.
header:@STxT@ y otras tecnologías
subheader:Lightweight markup language
Content:
Los lenguajes ligeros de marcado han tenido un auge espectacular gracias a proyectos como la Wikipedia.
Gracias a ellos se puede definir texto de forma mucho más simple que teniendo que escribir etiquetas como HTML.
Pero tienen una gran carencia: No tienen una estructura ni una semántica clara.
Es más, prácticamente todos se ocupan del estilo del texto:
* Negrita
* Cursiva
* Listas de elementos
* Tablas de datos
* ...
Resulta sorprendente ver lo que podemos conseguir si unimos estos lenguajes con @STxT@.
Obtenemos texto fácil de interpretar, con una semántica definida y con la expresividad de ambos lenguajes.
Un ejemplo:
code:
Producto:
Nombre: Magic memory
Precio: 10€
Descripción:
Este producto produce un _mágico rejuvenecimiento_
de la memoría y proporciona un **inmediato** efecto
en todas las personas que lo prueban.
Efectos:
* Rápida memorización
* Aprendizaje automático
* Mayor concentración
Content:
Vemos que hemos dado estructura gracias a @STxT@, pero la descripción se ha dado
al estilo wikipedia.
assert:
La unión de @STxT@ con _Lightweight markup languages_ es simplemente espectacular
subheader:Tex, Latex
Content:
Perdonad si critico mucho. Nunca lo hago sin dar una alternativa o un motivo. Me gustan las críticas constructivas ;-)
He visto que uno de los objetivos de TeX es que un documento se imprima igual ahora y dentro de 100 años.
Me había parecido perfecto... hasta hoy. Ahora creo que el objetivo debería ser
que significara lo mismo ahora que dentro de 100 años, y que se _entienda_ ahora y dentro de 100 años.
Y cuanta más gente mejor. Esto no se consigue con TeX, pero Sí con @STxT@.
Un documento se entiende hoy y dentro de 100 años. ¿Como creo que debe evolucionar?
Yo haría documentos en @STxT@, especificaría una gramática para los distintos tipos de documentos,
permitiría elementos de TeX (como fórmulas) de la misma forma que se hace con los lenguajes de marcado ligeros,
y usaría TeX como motor de renderizado.
Me atrevo a afirmar que TeX es imbatible en cuanto a renderizado; y creo que lo va a ser durante al menos 100 años más ;-)
¿Cómo quedaría un documento? Bien, un ejemplo sencillo sería algo así:
code:
Article (www.latex.com/article.stxt):
Title:
Author:
References:
Reference:
Title:
Year:
ISBN:
Reference:
Title:
Year:
ISBN:
Paragraph:
This is a mathematical formula:
Formula:
\begin{eqnarray}
x&=&y\\
x^2&=&xy\\
x^2-y^2&=&xy-y^2\\
(x+y)(x-y)&=&y(x-y)\\
x+y&=&y\\
2y&=&y\quad \mbox{(first ecuation)}\\
2&=&1
\end{eqnarray}
Paragraph:
Hello World!!
Content:
De hecho, ahora ya podemos pensar en @STxT@, quizá sea el momento de hacer fórmulas de otra forma,
o notación más simplificada, como por ejemplo:
code:
Article (www.latex.com/article.stxt):
Title:
Author:
References:
Reference:
Title:
Year:
ISBN:
Reference:
Title:
Year:
ISBN:
Paragraph:
This is a mathematical formula:
Formula:
Array:
Element: x&=&y
Element: x^2&=&xy
Element: x^2-y^2&=&xy-y^2
Element: (x+y)(x-y)&=&y(x-y)
Element: x+y&=&y
Complex:
Element: 2y&=&y\quad
Element: mbox{(first ecuation)}
2&=&1
Paragraph:
Hello World!!
Content:
Bien, hay miles de posibilidades y formas de enfocar el problema, os lo dejo como ejercicio ;-D
assert:
¿Qué hemos ganado con respecto a sólo TeX?
Content:
* Facilidad en la creación de documentos
* UTF-8
* Estructura definida
* Texto semántico
* Texto legible
Y además, hemos mantenido la compacidad en la creación de fórmulas matemáticas
y otros elementos dónde TeX sí es realmente un gran lenguaje.
subheader:JSON
Content:
JSON en principio no tiene nada que ver con @STxT@, pero hay ciertos momentos
en los que pueden entrar en competencia. Estoy pensando en ficheros de configuración, por ejemplo.
Además, es más flexible y fácil de leer cuando incrustamos gran cantidad de texto,
cosa que en JSON hay que tener en cuenta siempre todos los caracteres de escapamiento.
Pero no hace falta preocuparse mucho.
No creo que JSON y @STxT@ sean competencia directa,
debido a su distinto ámbito de aplicación.
subheader: YAML
Content:
Quizá YAML sea el que más se parezca en enfoque, aunque también es muy distinto.
Nosotros creemos que con nuestra estructura se puede mostrar lo mismo que YAML,
y mucho más simple. Además, podemos añadir semántica al documento con los namespaces,
al mismo tiempo que permite un texto legible para la mayoría de personas,
independientemente de sus conocimientos informáticos.