The art of Prolog: advanced programming techniques
The art of Prolog: advanced programming techniques
Fundamentals of database systems (2nd ed.)
Fundamentals of database systems (2nd ed.)
Regular expression types for XML
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Regular expression pattern matching for XML
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-Based XML Processing in Logic Programming
PADL '03 Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages
XDuce: A Typed XML Processing Language (Preliminary Report)
Selected papers from the Third International Workshop WebDB 2000 on The World Wide Web and Databases
CDuce: an XML-centric general-purpose language
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Boolean operations for attribute-element constraints
CIAA'03 Proceedings of the 8th international conference on Implementation and application of automata
DBPL'05 Proceedings of the 10th international conference on Database Programming Languages
XCentric: logic programming for XML processing
Proceedings of the 9th annual ACM international workshop on Web information and data management
Boomerang: resourceful lenses for string data
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Information Systems
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A Landscape of Bidirectional Model Transformations
Generative and Transformational Techniques in Software Engineering II
Foundations for Bidirectional Programming
ICMT '09 Proceedings of the 2nd International Conference on Theory and Practice of Model Transformations
Bidirectional Transformations: A Cross-Discipline Perspective
ICMT '09 Proceedings of the 2nd International Conference on Theory and Practice of Model Transformations
Adventures in bidirectional programming
FSTTCS'07 Proceedings of the 27th international conference on Foundations of software technology and theoretical computer science
A framework for the checking and refactoring of crosscutting concepts
ACM Transactions on Software Engineering and Methodology (TOSEM)
Linguistic foundations for bidirectional transformations: invited tutorial
PODS '12 Proceedings of the 31st symposium on Principles of Database Systems
Multifocal: a strategic bidirectional transformation language for XML schemas
ICMT'12 Proceedings of the 5th international conference on Theory and Practice of Model Transformations
Three complementary approaches to bidirectional programming
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Bidirectional model transformations in QVT: semantic issues and open questions
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
International Journal of Information Technology and Web Engineering
Hi-index | 0.00 |
Often, independent organizations define and advocate different XML formats for a similar purpose and, as a result, application programs need to mutually convert between such formats. Existng XML transformation languages, such as XSLT and XDuce, are unsatisfactory for this purpose since we would have to write, e.g., two programs for the forward and the backward transformations in case of two formats, incur high developing and maintenance costs.This paper proposes the bidirectional XML transformation language biXid, allowing us to write only one program for both directions of conversion. Our language adopts a common paradigm programming-by-relation, where a program defines a relation over documents and transforms a document to another in a way satisfying this relation. Our contributions here are specific language features for facilitating realistic conversions whose target formats are loosely in parallel but have many discrepancies in details. Concretely, we (1) adopt XDuce-style regular expression patterns for describing and analyzing XML structures, (2) fully permit ambiguity for treating formats that do not have equivalent expressivenesses, and (3) allow non-linear pattern variables for expressing non-trivial transformations that cannot be written only with linear patterns, such as conversion between unordered and ordered data.We further develop an efficient evaluation algorithm for biXid, consisting of the "parsing" phase that transforms the input document to an intermediate "parse tree" structure and the "unparsing" phase that transforms it to an output document. Both phases use a variant of finite tree automata for performing a one-pass scan on the input or the parse tree by using a standard technique that "maintains the set of all transitable states." However, the construction of the "unparsing" phase is challenging since ambiguity causes different ways of consuming the parse tree and thus results in multiple possible outputs that may have different structures.We have implemented a prototype system of biXid and confirmed that it has enough expressiveness and a linear-time performance from experiments with several realistic bidirectional transformations including one between vCard-XML and ContactXML.