On Monday, April 1, 2002, at 02:33 PM, Jay Fitzgerald wrote:
> Can this be done and am I going about it the right way? Are you familiar with something called "partial decomposition"? I'm not sure where it came from, but Google suggests that it may have been conceived by Daniel Appelquist, the author of a book called "XML and SQL". I read this book a few weeks ago -- it's expensive, and slim on content (see my mini-review below), but covers a topic that everyone seems very interested in. I was elated when Google pointed me to this article on the theory of partial decomposition (by Appelquist) but dismayed to find that he didn't submit it in time for a conference, and so it is not actually found at this link: http://www.idealliance.org/papers/xml2001/papers/html/06-05-02.html But I'm sure it's the same idea he puts forth in his book. Partial Decomposition: The idea is that you store your information in an XML document, and then take the most-searched information and store it in a database with some kind of relationship to the document (either store the XML document in the database or store a URI to the XML document in the database). In this fashion, you can use the power of SQL to search for your data, but have the data itself stored in XML to take advantage of XML's features. The important thing to remember is that the data in the columns should ONLY be used for searches, and the XML is where the data TRULY lies, otherwise you can violate data integrity. It is not a good scheme for data that is regularly changed or updated -- for this you are better off storing your data in the usual way. Also, some of the methods for ensuring data integrity are not at this time possible in MySQL (he uses Oracle and SQL Server for a lot of his examples), though you can ad-lib it with your application (i.e. in PHP) if you are dilligent and are careful not to make changes to your database without going through the proper channels to ensure that data integrity is maintained. It is no substitute for a true XML database, since it is just that -- a "partial" decomposition of your data (and thus is only "partially" searchable), and won't work for every application. But you may wish to check out Appelquist's book. (* my mini-review of "XML and SQL" by Daniel Appelquist: Well, there aren't a lot of pages, the text is huge, and the book still costs US $40.00. Kind of ridiculous. This is further exacerbated by the fact that only 80% of the book actually revolves around ideas of using XML with SQL, and much of the rest of the book focuses on the process of developing a web application by taking user surveys and scenario-role-playing etc, or introducing some of the fundamentals of XML which are available all over the rest of the bookstore. Excellent topics, which IMHO do not fall under the topic of 'XML and SQL'. The book also discusses at length some of the XML features of Oracle and SQL Server, so I kind of skipped over these sections -- I'm a MySQL fan. Is it worth reading? The middle few chapters, which deal specifically with partial decomposition, are interesting. But is it worth $40? Not unless your employer is paying for it, or if you are looking for a general book on developing web applications. In fact, it should probably have been called "Developing Web Applications with XML and SQL", and if it had then this review might be more forgiving.) To answer your question, I'm not so sure that I would go about it the way that you have -- it seems that you are echoing an XML file from SQL information. There's nothing wrong with this, but simply echoing it to the screen is probably more useless than just echoing the data in some meaningful format -- such as a paragraph or a list. HOWEVER, if you were storing the data in a file, or a string to be sent out as a SOAP or XML-RPC request, then that makes more sense. Still, you want some advice? First, your SQL code won't work as it is -- you've forgotten a mysql_fetch_* function to pull the data from the $sql_result. So, add to your code: while ($xml_data_row = mysql_fetch_assoc($sql_result)) { $xml_document = '<?xml version="1.0" encoding="utf-8" ?> <test> <contacts> <friends> <name>' . $xml_data_row['name'] . '</name> <address>' . $xml_data_row['address'] . '</address> <city>' . $xml_data_row['city'] . '</city> <state>' . $xml_data_row['home'] . '</state> </friends> </contacts> </test> "; echo $xml_document; } This saves you a ton of typing and even makes your code look better. HTH, Erik ---- Erik Price Web Developer Temp Media Lab, H.H. Brown [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php