Articulo de referencia

lenguaje de transformación XML

Una transformación de XML a XML Un lenguaje de transformación XML es un lenguaje de programación diseñado específicamente para transformar un documento XML de entrada en un docu...

Una transformación de XML a XML

Un lenguaje de transformación XML es un lenguaje de programación diseñado específicamente para transformar un documento XML de entrada en un documento de salida que cumpla con un objetivo específico.

Existen dos casos especiales de transformación:

  • XML a XML : el documento de salida es un documento XML.
  • XML a datos : el documento de salida es un flujo de bytes .

XML a XML

Dado que la transformación de XML a XML genera un documento XML, las cadenas de transformación de XML a XML forman flujos de trabajo XML .

XML a datos

La transformación de XML (Lenguaje de Marcado Extensible) a datos presenta algunos casos importantes. El más notable es la conversión de XML a HTML (Lenguaje de Marcado de Hipertexto) , ya que un documento HTML no es un documento XML.

Orígenes de SGML

Los primeros lenguajes de transformación son anteriores a la llegada de XML como perfil SGML y, por lo tanto, aceptan entrada en SGML arbitrario en lugar de específicamente XML. Estos incluyen el formato de definición de proceso de enlace (LPD) de SGML a SGML definido como parte del estándar SGML; en SGML (pero no en XML), el archivo LPD puede referenciarse desde el propio documento mediante una LINKTYPEdeclaración, de forma similar a la DOCTYPEdeclaración utilizada para un DTD . [ 1 ] Otros lenguajes de transformación similares, que abordan algunas de las deficiencias de los LPD, incluyen el lenguaje de especificación y semántica de estilo de documento (DSSSL) y OmniMark . [ 2 ] Los lenguajes de transformación más recientes tienden a apuntar específicamente a XML y, por lo tanto, solo aceptan XML, no SGML arbitrario.

Idiomas existentes

  • XSLT : XSLT es el lenguaje de transformación XML más conocido. La recomendación XSLT 1.0 del W3C se publicó en 1999 junto con XPath 1.0, y desde entonces se ha implementado ampliamente. XSLT 2.0 se convirtió en una recomendación del W3C en enero de 2007 y ya existen implementaciones de la especificación, como Saxon 8 .
  • XQuery : XQuery es un lenguaje funcional completo, a pesar de tener "query" en su nombre. Es un estándar de facto utilizado por Microsoft, Oracle, DB2, MarkLogic, etc., es la base del modelo de programación web XRX y cuenta con una recomendación del W3C para la versión 1.0. XQuery no está escrito en XML como XSLT, por lo que su sintaxis es mucho más ligera. El lenguaje se basa en XPath 2.0 . Los programas XQuery no pueden tener efectos secundarios , al igual que XSLT, y proporciona casi las mismas capacidades (por ejemplo: declarar variables y funciones, iterar sobre secuencias, usar tipos de esquema del W3C), aunque la sintaxis del programa sea bastante diferente. XQuery se basa en la lógica, utilizando FOR, WHERE y composición de funciones (por ejemplo, fn:concat("<html>", generate-body(), "</html>"). En cambio, XSLT se basa en datos (modelo de procesamiento por impulsos), donde ciertas condiciones del documento de entrada activan la ejecución de plantillas en lugar de que el código se ejecute en el orden en que está escrito.
  • XProc : XProc es un lenguaje de canalización XML. La recomendación XProc 1.0 del W3C se publicó en mayo de 2010.
  • Transformación de documentos XML : Es un estándar de Microsoft para realizar transformaciones sencillas en documentos XML. Principalmente para crear archivos Web.config de IIS (Transformaciones de configuración), otras implementaciones permiten su uso para archivos de configuración genéricos en tiempo de compilación (Slow Cheetah) o desde la línea de comandos (CTT).
  • STX : STX (Streaming Transformations for XML) se inspira en XSLT, pero ha sido diseñado para permitir un proceso de transformación en una sola pasada que nunca interrumpe la transmisión de datos. Existen implementaciones disponibles en Java ( Joost ) y Perl ( XML::STX ).
  • XML Script : XML Script es un lenguaje de scripting imperativo inspirado en Perl que utiliza la sintaxis XML. XML Script admite XPath y su lenguaje propietario DSLPath para seleccionar nodos del árbol de entrada.
  • FXT : FXT es una herramienta funcional de transformación XML, implementada en Standard ML .
  • XDuce : XDuce es un lenguaje tipado con una sintaxis ligera, en comparación con XSLT. Está escrito en ML.
  • CDuce : CDuce extiende XDuce a un lenguaje de programación funcional de propósito general ; consulte la página principal de CDuce .
  • XACT : XACT es un sistema basado en Java para programar transformaciones XML. Entre sus características más destacadas se incluyen plantillas XML como valores inmutables y un análisis estático para garantizar la seguridad de tipos mediante tipos de esquema XML ( página principal de XACT ).
  • XFun : XFun es un lenguaje funcional X-Fun para definir transformaciones entre árboles de datos XML, a la vez que proporciona instrucciones de fragmentación. X-Fun puede entenderse como una extensión del lenguaje XStream de Frisch con fragmentación de salida, mientras que la coincidencia de patrones se reemplaza por la navegación de árboles con expresiones XPath.)
  • XStream : XStream es un lenguaje de transformación funcional simple para documentos XML basado en CAML. Las transformaciones XML escritas en XStream se evalúan en tiempo real: cuando es posible, partes de la salida se calculan y generan mientras el documento de entrada aún se está analizando. De esta manera, algunas transformaciones pueden aplicarse a documentos XML enormes que ni siquiera cabrían en la memoria. El compilador de XStream se distribuye bajo los términos de la licencia de software libre CeCILL .
  • Xtatic : Xtatic aplica métodos de XDuce a C# , consulte la página principal de Xtatic .
  • HaXml : HaXml es una biblioteca y un conjunto de herramientas para escribir transformaciones XML en Haskell . Véase también este documento sobre HaXml publicado en 1999 (archivado el 18/10/2014 en Wayback Machine) y este artículo de IBM developerWorks . Véase también HXML y Haskell XML Toolbox ( HXT ), más recientes, que se basan en las ideas de HaXml y HXML, pero adoptan un enfoque más general para el procesamiento de XML.
  • XMLambda : XMLambda (XMλ) se describe en un artículo de 1999 de Erik Meijer y Mark Shields . No hay ninguna implementación disponible. Consulte la página principal de XMLambda .
  • FleXML : FleXML es un lenguaje de procesamiento XML implementado por primera vez por Kristofer Rose. Su enfoque consiste en agregar acciones a una DTD XML especificando instrucciones de procesamiento para cualquier subconjunto de las reglas de la DTD.
  • Scala : Scala es un lenguaje funcional y orientado a objetos de propósito general con soporte específico para la transformación XML en forma de coincidencia de patrones XML, literales y expresiones, junto con bibliotecas XML estándar. [ 3 ]
  • LINQ to XML : LINQ to XML es una API de programación y sintaxis de .NET 3.5 disponible en C#, VB y otros lenguajes .NET. LINQ está diseñado principalmente como un lenguaje de consulta, pero también admite transformaciones XML.

Véase también

Referencias

  1. Goldfarb, Charles F. (1990). Cláusula 12—Declaraciones de marcado: Definición del proceso de enlace . Oxford : Clarendon Press . págs. 433–449 . ISBN  0-19-853737-9.{{cite book}}: |work=ignorado ( ayuda )
  2. Kimber, W. Eliot. "Por qué quiero la función SGML LINK" . CoverPages.org .
  3. Fancellu, Dino; Narmontas, William (junio de 2014). "Procesamiento XML en Scala". XML London 2014 4: 63–75 . doi : 10.14337/XMLLondon14.Narmontas01 (inactivo el 12 de julio de 2025). ISBN 978-0-9926471-1-7.{{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace )