Re: [Zope] XML-RPC vs External method?
Kapil, Thank you for this simple solution! I'm new to XML and Zope and sometimes I get caught in learning too many new things at once, we forget to think "simply":-) Thanks to you, I don't need to use either External method, or XML-RPC. The following simple DTML method works: dtml-call "RESPONSE.setHeader('content-type','text/xml')" ?xml version="1.0"? program dtml-in get_all_programs row adassnumdtml-var adassnum null=""/adassnum iddtml-var id null=""/id titledtml-var title null=""/title name_ldtml-var name_l null=""/name_l name_fdtml-var name_f null=""/name_f typedtml-var type null=""/type /row dtml-else !--There was no data matching this query.-- /dtml-in /program Thanks again! --irene Ender wrote: if the xml format is simple you could just do it dtml, it would end up with some extra white space but it would still be valid. a dtml method akin to ?xml version="1.0"? dtml-in mysqlretrieve item contentdtml-var content/content squishydtml-var squishy/content /item /dtml-in kapil Irene Barg wrote: Hello all, I have setup a query form to query a small MySQL database using Zope. It consists of: 1. ZMySQL Database Connection (ZMySQLDA) 2. ZSQL method 3. A search interface. Now, what I want is the user to have the option of viewing the results in HTML or raw XML. I think there can be two approaches to this: 1. External method, or 2. XML-RPC. 1. External method: Replaces the ZMySQL database connection with an external Python function called 'mysqldb_XML', pieces of which follow: def mysqldb_XML(self,query): """ Use a MySQL SAX driver to map relational data to XML. Hacked from PyXML saxdemo.py. The MySQL driver is a modified version of Sean McGrath's drv_mysql.py ("XML Processing with Python"). """ from xml.sax import saxexts, saxlib, saxutils, writer import sys,urllib #Our MySQLdb XML driver; driver="xml.sax.drivers.drv_mysqldb" . out = sys.stdout; p=saxexts.make_parser(driver) dh=writer.PrettyPrinter(out,dtdinfo=info) try: p.setDocumentHandler(dh) return p.parse(query) except IOError,e: return in_sysID+": "+str(e) except saxlib.SAXException,e: return str(e) Inside Zope, I get the ZSQL 'query' and do something like: dtml-call "RESPONSE.setHeader('content-type','text/xml')" dtml-in "mysqldb_XML(query)" dtml-var sequence-item /dtml-in 2. XML-RPC: It seems to me XML-RPC could do this too, but I don't know how one would print out the raw XML response. Could I have a Zope client request the ZSQL method above, but instead of sending it to my output DTML method, I just print the raw-XML stream? Examples would be helpful:-) It seems to me if XML-RPC already produces an XML formatted stream, it would be more efficient to just use it (unless there is yet another way in Zope I'm not aware of). Is it possible? Is there any reason to want to use the external method instead? Thanks for your comments, --irene -- Irene Barg Email: [EMAIL PROTECTED] Steward Observatory Phone: 520-621-2602 933 N. Cherry Ave. University of Arizona FAX:520-621-1891 Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg -- ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) -- -- Irene Barg Email: [EMAIL PROTECTED] Steward Observatory Phone: 520-621-2602 933 N. Cherry Ave. University of Arizona FAX:520-621-1891 Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg -- ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
[Zope] XML-RPC vs External method?
Hello all, I have setup a query form to query a small MySQL database using Zope. It consists of: 1. ZMySQL Database Connection (ZMySQLDA) 2. ZSQL method 3. A search interface. Now, what I want is the user to have the option of viewing the results in HTML or raw XML. I think there can be two approaches to this: 1. External method, or 2. XML-RPC. 1. External method: Replaces the ZMySQL database connection with an external Python function called 'mysqldb_XML', pieces of which follow: def mysqldb_XML(self,query): """ Use a MySQL SAX driver to map relational data to XML. Hacked from PyXML saxdemo.py. The MySQL driver is a modified version of Sean McGrath's drv_mysql.py ("XML Processing with Python"). """ from xml.sax import saxexts, saxlib, saxutils, writer import sys,urllib #Our MySQLdb XML driver; driver="xml.sax.drivers.drv_mysqldb" . out = sys.stdout; p=saxexts.make_parser(driver) dh=writer.PrettyPrinter(out,dtdinfo=info) try: p.setDocumentHandler(dh) return p.parse(query) except IOError,e: return in_sysID+": "+str(e) except saxlib.SAXException,e: return str(e) Inside Zope, I get the ZSQL 'query' and do something like: dtml-call "RESPONSE.setHeader('content-type','text/xml')" dtml-in "mysqldb_XML(query)" dtml-var sequence-item /dtml-in 2. XML-RPC: It seems to me XML-RPC could do this too, but I don't know how one would print out the raw XML response. Could I have a Zope client request the ZSQL method above, but instead of sending it to my output DTML method, I just print the raw-XML stream? Examples would be helpful:-) It seems to me if XML-RPC already produces an XML formatted stream, it would be more efficient to just use it (unless there is yet another way in Zope I'm not aware of). Is it possible? Is there any reason to want to use the external method instead? Thanks for your comments, --irene -- Irene Barg Email: [EMAIL PROTECTED] Steward Observatory Phone: 520-621-2602 933 N. Cherry Ave. University of Arizona FAX:520-621-1891 Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg -- ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] XML-RPC vs External method?
if the xml format is simple you could just do it dtml, it would end up with some extra white space but it would still be valid. a dtml method akin to ?xml version="1.0"? dtml-in mysqlretrieve item contentdtml-var content/content squishydtml-var squishy/content /item /dtml-in kapil Irene Barg wrote: Hello all, I have setup a query form to query a small MySQL database using Zope. It consists of: 1. ZMySQL Database Connection (ZMySQLDA) 2. ZSQL method 3. A search interface. Now, what I want is the user to have the option of viewing the results in HTML or raw XML. I think there can be two approaches to this: 1. External method, or 2. XML-RPC. 1. External method: Replaces the ZMySQL database connection with an external Python function called 'mysqldb_XML', pieces of which follow: def mysqldb_XML(self,query): """ Use a MySQL SAX driver to map relational data to XML. Hacked from PyXML saxdemo.py. The MySQL driver is a modified version of Sean McGrath's drv_mysql.py ("XML Processing with Python"). """ from xml.sax import saxexts, saxlib, saxutils, writer import sys,urllib #Our MySQLdb XML driver; driver="xml.sax.drivers.drv_mysqldb" . out = sys.stdout; p=saxexts.make_parser(driver) dh=writer.PrettyPrinter(out,dtdinfo=info) try: p.setDocumentHandler(dh) return p.parse(query) except IOError,e: return in_sysID+": "+str(e) except saxlib.SAXException,e: return str(e) Inside Zope, I get the ZSQL 'query' and do something like: dtml-call "RESPONSE.setHeader('content-type','text/xml')" dtml-in "mysqldb_XML(query)" dtml-var sequence-item /dtml-in 2. XML-RPC: It seems to me XML-RPC could do this too, but I don't know how one would print out the raw XML response. Could I have a Zope client request the ZSQL method above, but instead of sending it to my output DTML method, I just print the raw-XML stream? Examples would be helpful:-) It seems to me if XML-RPC already produces an XML formatted stream, it would be more efficient to just use it (unless there is yet another way in Zope I'm not aware of). Is it possible? Is there any reason to want to use the external method instead? Thanks for your comments, --irene -- Irene Barg Email: [EMAIL PROTECTED] Steward Observatory Phone: 520-621-2602 933 N. Cherry Ave. University of Arizona FAX:520-621-1891 Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg -- ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )