XML & Web services: "Relational" vs "Object" XML
It seems that there are two views of XML interchange in the world.
One, which I'll call the "Object" view is that XML is great to define and describe semantically rich data of complex data types. The other, which I'll call the "Relational" view, is what appears to be touted as XML support in various products from Microsoft's .NET to Oracle. That is the view that dumping a database or dataset into a file with XML tags is supporting XML.
We are looking to build a Java based system which will need to algorithmically process a rich collection of objects. By this I mean significant inheritence concepts, complex datatypes that in XML form would be highly nested, and a lot of associations between these objects. We see a simple path in defining a UML object model of this world, and implementing it in Java and through the use of the freely available Electric XML package (http://www.themindelectric.com) being able to import XML directly into Java objects without having to write a line of parsing/DOM code.
Problem is that the systems that ourselves and out customers would be migrating from would be based on relational based schemas for storing data. A number of different modelling techniques are in use to deal with the inherent object/relational impedence mismatch. We would like to find a way to easily, (meaning not write a lot of code. Setting up meta data is OK) be able to extract that data into an "Object" XML form for our Java system to read. But every path related to XML and Databases seems to give us a "Relational" XML take on things.
See the following link for a more detailed discussion of this idea with an actual example to illustrate the concepts. (I couldn't make a direct post to this board with the full example).
More detailed discussion of the topic with example.
I would greatly appreciate ideas, tools, techniques for bridging this gap. Thanks
I had the same problem as you. I needed to migrate a relational database system to be able to publish XML. The relational database has numerous tables and the application need to make numerous joints. I was testing the relational databases with modules that translate XML such as DB2 Extenders and the XML fields in databases as Oracle. Later I passed to OO databases, but they require codification to publish, so at the end I tried XML native databases and I´m quite happy. eXist, one freeware that has a web server integrated and it´s quite good. But you have other comercial ones such as frontier, bluestone or tamino, than also are good.
I hope this help you
example: I'm building a reporting module. It gets XML documents, converts them using XSLT into XSL-FO, then FOP converts it to PDF, RTF etc.
Reports share the look and feel. So, the tabular list of materials in one report must look similar to a tabular list of students in another report. If company decides to change the appearance of the reports, then it must be not too much work to change all reports at once. There are many similar requirements.
So, I chose to use "relational" style. Because it's easier to write and maintain XSLT. So, my XML generator dumps me the element "rowset", which has "name" attribute, and contains "row" elemnts. "rows" contain coulmns and nested rowsets. This way it's much easier to write XSL templates, it's possible to extract common templates in generic files, and details in specific templates. With "OO" style it was more work.
On the other hand, if it wasn't reporting module, but "business" component, implementing some logic, then I'd probably go with "OO" style XML. The difference is that the Reporting is the "end point", u print the page - that's it. You are not going to parse PDF doc. While business modules, may still exchange their results with other components, and OO style is better suited for that.