SXML es una sintaxis alternativa para escribir datos XML (más precisamente, conjuntos de información XML [ 1 ] ) como expresiones S , para facilitar el trabajo con datos XML en Lisp y Scheme . Un conjunto de herramientas asociadas implementa XPath , SAX y XSLT para SXML en Scheme [ 2 ] [ 3 ] y están disponibles en la implementación de dicho lenguaje en GNU Guile .
A continuación se muestra la correspondencia textual entre SXML y XML para un fragmento XML de ejemplo:
En comparación con otras representaciones alternativas para XML y sus lenguajes asociados, SXML tiene la ventaja de ser directamente analizable por las implementaciones existentes de Scheme. Las herramientas y la documentación asociadas fueron elogiadas en muchos aspectos por David Mertz en su columna de IBM developerWorks, aunque también criticó el carácter preliminar de su documentación y sistema. [ 4 ]
Ejemplo
Tomemos como ejemplo la siguiente página XHTML simple:
< html xmlns = " http://www.w3.org/1999/xhtml" xml :lang = "en" lang = " en" > <head> <title> Una página de ejemplo </title> </head> <body> < h1 id = " greeting " > ¡ Hola! </h1> <p> Esto es solo un " & gt ; > ejemplo < ; & lt ; " para mostrar XHTML y SXML . </p> </body> </html>Tras traducirla a SXML, la misma página ahora tiene este aspecto:
( *TOP* ( @ ( *NAMESPACES* ( x "http://www.w3.org/1999/xhtml" ))) ( x:html ( @ ( xml:lang "en" ) ( lang "en" )) ( x:head ( x:title "Una página de ejemplo" )) ( x:body ( x:h1 ( @ ( id "greeting" )) "Hola" ) ( x:p "Esto es solo un \">>ejemplo<<\" para mostrar XHTML y SXML." ))))Cada par de etiquetas de un elemento se reemplaza por un conjunto de paréntesis. El nombre de la etiqueta no se repite al final, es simplemente el primer símbolo de la lista. A continuación, se muestra el contenido del elemento, que puede ser elementos o cadenas. No se requiere una sintaxis especial para los atributos XML. En SXML, se representan simplemente como otro nodo, que tiene el nombre especial de @. Esto no puede causar un conflicto de nombres con una "@"etiqueta real, porque @no está permitido como nombre de etiqueta en XML. Este es un patrón común en SXML: siempre que se usa una etiqueta para indicar un estado especial o algo que no es posible en XML, se usa un nombre que no constituye un identificador XML válido.
En las cadenas SXML hay dos caracteres que deben escaparse: el "delimitador de cadena (con \") y el \símbolo de escape en sí (con \\). El código XML anterior requiere escapar tres: &, <y >(con &, <y >respectivamente).
Referencias
- ↑ Kiselyov, Oleg (2002). "Especificación SXML". ACM SIGPLAN Notices . 37 (6): 52– 58. doi : 10.1145/571727.571736 . S2CID 13955814 .
- ↑ Kiselyov, Oleg; Lisovsky, Kirill (2002). Implementaciones de XML, XPath y XSLT como SXML, SXPath y SXSLT (PDF) . Conferencia Internacional Lisp.
- ↑ Kiselyov, Oleg; Krishnamurthi, Shriram (2003). SXSLT: Lenguaje de manipulación para XML . Aspectos prácticos de los lenguajes declarativos. Lecture Notes in Computer Science. Vol. 2562. pp. 256–272 . doi : 10.1007/3-540-36388-2_18 . ISBN 978-3-540-00389-2.
- ↑ Mertz, David (23 de octubre de 2003). "XML Matters: Investigating SXML and SSAX" . IBM developerWorks . Archivado del original el 4 de diciembre de 2004. Recuperado el 10 de enero de 2015 .
Enlaces externos
- Tutorial sobre herramientas SXML por Dmitry Lizorkin
- Paquete SXML para Racket
- Lenguajes de marcado
- Comunicación técnica
- Scheme (lenguaje de programación)