Content deleted Content added
m →Existing languages: Updating formatting of list |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(12 intermediate revisions by 7 users not shown) | |||
Line 1:
{{Short description|Type of programming language}}
{{Data transformation}}
{{Refimprove|date=July 2011}}
Line 14 ⟶ 15:
==XML to Data==
The '''XML (EXtensible Markup Language) to Data''' transformation contains some important cases. The most notable one is '''XML to HTML (HyperText Markup Language)''', as an [[HTML]] document ''is not'' an XML document.
==SGML origins==
The earliest transformation languages predate the advent of XML as an SGML profile, and thus accept input in arbitrary [[SGML]] rather than specifically XML. These include the SGML-to-SGML '''link process definition''' (LPD) format defined as part of the SGML standard itself; in SGML (but not XML), the LPD file can be referenced from the document itself by a {{code|LINKTYPE}} declaration, similarly to the [[document type declaration|{{code|DOCTYPE}} declaration]] used for a [[document type definition|DTD]].<ref>{{cite book |isbn=0-19-853737-9 |work=The SGML Handbook |title=Clause 12—Markup Declarations: Link Process Definition |last=Goldfarb |first=Charles F. |author-link=Charles Goldfarb |publisher=[[Clarendon Press]] |___location=[[Oxford]] |year=1990 |pages=433–449}}</ref> Other such transformation languages, addressing some of the deficiencies of LPDs, include [[Document Style Semantics and Specification Language]] (DSSSL) and [[OmniMark#Processing_structured input (XML, SGML)|OmniMark]].<ref>{{cite web |url=http://xml.coverpages.org/kimber-link95.html |title=Why I Want the SGML LINK Feature |first=W. Eliot |last=Kimber |website=CoverPages.org}}</ref> Newer transformation languages tend to target XML specifically, and thus only accept XML, not arbitrary SGML.
==Existing languages==
Line 24 ⟶ 28:
* '''FXT''': FXT is a functional XML transformation tool, implemented in [[ML (programming language)|Standard ML]].
* '''XDuce''': [[XDuce]] is a typed language with a lightweight syntax, compared to XSLT. It is written in ML.
* '''CDuce''':
* '''XACT''': XACT is a Java-based system for programming XML transformations. Notable features include XML templates as immutable values and a static analysis to ensure type safety using XML Schema types ([http://www.brics.dk/Xact/ XACT home page]).
* '''XFun''': XFun is a functional language X-Fun for defining transformations between XML data trees, while providing shredding instructions. X-Fun can be understood as an extension of Frisch's [[XStream]] language with output shredding, while pattern matching is replaced by tree navigation with XPath expressions. ([http://hal.inria.fr/hal-00806343])
* '''XStream''': [[XStream]] is a simple functional transformation language for XML documents based on CAML. XML transformations written in XStream are evaluated in streaming: when possible, parts of the output are computed and produced while the input document is still being parsed. Some transformations can thus be applied to huge XML documents which would not even fit in memory. The XStream compiler is distributed under the terms of the [[CeCILL]] [[free software license]].
* '''Xtatic''': [[Xtatic]] applies methods from [[XDuce]] to [[C Sharp (programming language)|C#]], see [http://www.cis.upenn.edu/~bcpierce/xtatic/ Xtatic homepage].
* '''HaXml''': [[HaXml]] is a library and collection of tools to write XML transformations in [[Haskell (programming language)|Haskell]]. Also see [http://www.cs.york.ac.uk/fp/HaXml/ this paper about HaXml published in 1999] {{Webarchive|url=https://web.archive.org/web/20141018124509/http://www.cs.york.ac.uk/fp/HaXml/ |date=2014-10-18 }} and [http://www-106.ibm.com/developerworks/xml/library/x-matters14.html this IBM developerWorks article]. See also the more recent [https://web.archive.org/web/20060422010402/http://www.flightlab.com/~joe/hxml/ HXML] and Haskell XML Toolbox ([https://web.archive.org/web/20080622124011/http://www.fh-wedel.de/~si/HXmlToolbox/ HXT]), which is based on the ideas of HaXml and HXML but takes a more general approach to XML processing.
* '''XMLambda''': XMLambda (XMλ) is described in a 1999 paper by [[Erik Meijer (computer scientist)|Erik Meijer]] and [[Mark Shields (computer scientist)|Mark Shields]]. No implementation is available. See [https://web.archive.org/web/20051123030818/http://www.cartesianclosed.com/pub/xmlambda/ XMLambda home page].
* '''FleXML''':
* '''Scala''': [[Scala (programming language)|Scala]] is a general-purpose functional and object-oriented language with specific support for XML transformation in the form of XML pattern matching, literals, and expressions, along with standard XML libraries.<ref>{{Cite journal|title=XML Processing in Scala|first1=Dino|last1=Fancellu|first2=William|last2=Narmontas|date=June 2014|journal=XML London 2014|doi=10.14337/XMLLondon14.Narmontas01|pages=63–75|article-number=4 |doi-broken-date=12 July 2025 |isbn=978-0-9926471-1-7|doi-access=free}}</ref>
* '''LINQ to XML''': [[LINQ to XML]] is a .NET 3.5 syntax and programming API available in C#, VB and some other .NET languages. LINQ is primarily designed as a query language, but it also supports XML transforms.
|