BiFluX: A Bidirectional Functional Update Language for XML

BiFluX: A Bidirectional Functional Update Language for XML
复制标题

DOI:
10.1145/2643135.2643141
复制
发表时间:
2014-09
期刊:
--
影响因子:
--
通讯作者:
Hugo Pacheco;Tao Zan;Zhenjiang Hu
Hugo Pacheco;Tao Zan;Zhenjiang Hu
中科院分区:
其他
文献类型:
--
作者:
Hugo Pacheco;Tao Zan;Zhenjiang Hu

文献摘要

相似文献

不同的XML格式被广泛用于数据交换和处理,经常需要在它们之间进行相互转换。标准的XML转换语言,如XML或XQuery,在这方面不能令人满意,因为它们需要为每个方向编写单独的转换。现有的双向转换语言旨在通过允许程序员编写表示两种转换的单个程序来弥补这一差距。然而,它们通常1)比传统的单向亲戚引入更麻烦的编程风格,以建立源和目标格式之间的联系,2)通过对两种格式的修改如何转换进行隐含假设,提供有限的可配置性,这可能不容易预测。本文提出了一种双向XML更新语言BIFLUX(Bidirectional FunctionaL Updates for XML),它是受FLUX XML更新语言的启发而提出的。我们的语言采用了一种新的双向编程的更新范例,其中一个程序简洁,精确地描述了如何更新源文件与目标文件,在一个直观的方式,这样就有一个独特的“逆”源查询每个更新程序。BIFLUX扩展了FLUX,提供了描述源和目标格式之间连接的双向操作。我们引入了一个核心的BIFLUX语言,具有清晰和良好的双向语义和基于正则表达式类型的可判定静态类型系统。
Different XML formats are widely used for data exchange and processing, being often necessary to mutually convert between them. Standard XML transformation languages, like XSLT or XQuery, are unsatisfactory for this purpose since they require writing a separate transformation for each direction. Existing bidirectional transformation languages mean to cover this gap, by allowing programmers to write a single program that denotes both transformations. However, they often 1) induce a more cumbersome programming style than their traditionally unidirectional relatives, to establish the link between source and target formats, and 2) offer limited configurability, by making implicit assumptions about how modifications to both formats should be translated that may not be easy to predict. This paper proposes a bidirectional XML update language called BIFLUX (BIdirectional FunctionaL Updates for XML), inspired by the FLUX XML update language. Our language adopts a novel bidirectional programming by update paradigm, where a program succinctly and precisely describes how to update a source document with a target document, in an intuitive way, such that there is a unique "inverse" source query for each update program. BIFLUX extends FLUX with bidirectional actions that describe the connection between source and target formats. We introduce a core BIFLUX language, with a clear and well-behaved bidirectional semantics and a decidable static type system based on regular expression types.