Oftentimes the rules for how some data is structured are:
- in somebody's head,
- documented in some book, or
- buried in procedural code.
If you don't have access to the person, or the book, or the source code then it can be difficult to make sense of the data and it is subject to misinterpretation.
Upconversion is about making structure explicit where it was previously implicit.
Take a simple example from mathematics:
a + b * c
If you search through math books you can find this rule:
Perform multiplication before addition.
In the equation above that rule is implicit. If you don't have access to math books (and you forgot that rule from your math classes) then you may incorrectly process the equation.
The rule can be made explicit by adding some structuring symbols, namely parentheses:
a + (b * c)
What was previously implicit has now been made explicit, i.e. the equation has been upconverted.
In the XML world we add markup to make the structure of data explicit. Consider this data:
Origin of Wealth, Eric D. Beinhocker, 2006, 1-57851-777-X, Harvard Business School Press.
There are lots of implicit rules in how the data is structured:
- the characters prior to the first comma represents the title of a book,
- the characters between the first comma and the second comma represents the author of the book,
- the characters between the second comma and the third comma represents the date the book was published,
- the characters between the third comma and the fourth comma represents the ISBN of the book,
- the characters between the fourth comma and the period represents the publisher of the book, and
- all the different pieces of information are for the same book.
If you don't know these implicit rules then it may be difficult to make sense of the data.
The structure can be made explicit by adding markup:
<Book> <Title>Origin of Wealth</Title> <Author>Eric D. Beinhocker</Author> <Date>2006</Date> <ISBN>1-57851-777-X</ISBN> <Publisher>Harvard Business School Press</Publisher> </Book>
What was previously implicit has now been made explicit, i.e. the data has been upconverted.
Upconversion is also known as uptranslation.
Michael Kay has written an article on the facilities in XSLT 2.0 for doing upconversion.
Upconversion is about replacing external knowledge of the rules governing the structure by an explicit representation of the structure.
The following people contributed to the formation of this article:
- Mike Brenner
- Len Bullard
- Roger Costello
- Mukul Gandhi
- Ken Holman
- Rick Jelliffe
- Michael Kay
- Frank Manola
- Dimitre Novatchev
- Dave Pawson
- Liam Quin
- Jim Tivy
- Dan Vint
Last Updated: August 22, 2009