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.