The solution to these three problems (static data, bandwidth inefficiency, and security) is to generate the XML from an active process on the server rather than a file. One method is an XML server. XML servers are database management systems that function entirely in XML. Choosing a single record from a bunch of records stored on an XML server is natural and simple. And even though XML servers have great promise, they are just beginning to develop presence. Enthusiasts and early adopters are testing the merits of the concept, and there are many competing systems. Many companies hope to be the Oracle of the next wave, and there are open -source projects as well, such as the 4Thought suite and Apache's Cocoon project.
Experts who know the commercial systems favor Ixiasoft software and especially Resin from Caucho.com. While these tools are sturdy, they do involve risk. This is a rapidly shifting market. Until dedicated XML servers like these are more commonly deployed on the Internet landscape, we will work with more traditional tools.
If the XML server is to reign in the kingdom of databases, it will need to displace SQL, the king of databases on the web and everywhere else. SQL's success is not in data communication ”it is clumsy and stiff compared to XML ”but in its inherent data-modeling power. Relational databases like SQL use extremely simple mechanisms to express quite intricate structures of data. It is far better equipped than XML to express data that is woven together with multiple relationships. XML is adept at expressing only the single inheritance of tree structures and has few tools for applying constraints on the data. SQL has many tools for designing a database and for efficient communication with it. Although an XML server is fine for simple tasks , like pulling elements out of a list, and excels at managing large repositories of linear content, it is probably a poor choice right now for the tough job of modeling the complexity of real data.
The ideal solution might be a server that accepts and serves XML messages but whose inner engine is a relational database like SQL. Some commercial products are built on that design. But most often, such a system is assembled by hand. That is exactly what we will do next.