From nicolas.torzec@rd.francetelecom.com Fri Feb 1 10:06:20 2002 From: nicolas.torzec@rd.francetelecom.com (TORZEC Nicolas thesard FTRD/DIH/LAN) Date: Fri, 1 Feb 2002 11:06:20 +0100 Subject: [XML-SIG] Looking for python compliant NXDs Message-ID: This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------=_NextPartTM-000-a778d9e1-1656-11d6-b1e4-00508b69ab48 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C1AB08.18917B00" ------_=_NextPart_001_01C1AB08.18917B00 Content-Type: text/plain; charset="iso-8859-1" Dear All, I have many (more than 200.000) but small (less than 5Ko) XML files representing a hierarchically organized annotated corpora. I have planed to store this files in an XML database in order to make the management of the corpus easier, but I can not decide on what DBMS to choose. Python being my favorite scripting language, I would like to access my data and build specialized administration tools by the mean of programs written in Python. So, in your own opinion, what XML DBMS should I use to store my data? Many thanks in advance, Nicolas. PS : I'm experienced in Relational DataBases (Oracle 8i) and in Object-Oriented Databases (O2), but I would prefer to work with an open source DBMS. ___________________________________________ Nicolas TORZEC Ph.D Student France Telecom R&D - DIH/IPS 2, avenue Pierre Marzin, 22307 Lannion Cedex, France Tel : +33 2 96 05 31 36 Email : nicolas.torzec@rd.francetelecom.com ____________________________________________ ------_=_NextPart_001_01C1AB08.18917B00 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Looking for python compliant NXDs

Dear All,

I have many (more than 200.000) but small (less than = 5Ko) XML files representing a hierarchically organized annotated = corpora.

I have planed to store this files in an XML database = in order to make the management of the corpus easier, but I can not = decide on what DBMS to choose.

Python being my favorite scripting language, I would = like to access my data and build specialized administration tools by = the mean of programs written in Python.

So, in your own opinion, what XML DBMS should I use = to store my data?

Many thanks in advance,
Nicolas.


PS : I'm experienced in Relational DataBases (Oracle = 8i) and in Object-Oriented Databases (O2), but I would prefer to work = with an open source DBMS.

 

___________________________________________

Nicolas TORZEC

Ph.D Student
France Telecom R&D - DIH/IPS

2, avenue Pierre Marzin,
22307 Lannion Cedex,
France

Tel   : +33 2 96 05 31 36
Email : nicolas.torzec@rd.francetelecom.com
____________________________________________

------_=_NextPart_001_01C1AB08.18917B00-- ------=_NextPartTM-000-a778d9e1-1656-11d6-b1e4-00508b69ab48-- From veillard@redhat.com Fri Feb 1 10:13:44 2002 From: veillard@redhat.com (Daniel Veillard) Date: Fri, 1 Feb 2002 05:13:44 -0500 Subject: [XML-SIG] Looking for python compliant NXDs In-Reply-To: ; from nicolas.torzec@rd.francetelecom.com on Fri, Feb 01, 2002 at 11:06:20AM +0100 References: Message-ID: <20020201051344.T29819@redhat.com> On Fri, Feb 01, 2002 at 11:06:20AM +0100, TORZEC Nicolas thesard FTRD/DIH/LAN wrote: > Dear All, > > I have many (more than 200.000) but small (less than 5Ko) XML files > representing a hierarchically organized annotated corpora. > I have planed to store this files in an XML database in order to make the > management of the corpus easier, but I can not decide on what DBMS to > choose. > Python being my favorite scripting language, I would like to access my data > and build specialized administration tools by the mean of programs written > in Python. > > So, in your own opinion, what XML DBMS should I use to store my data? > > Many thanks in advance, > Nicolas. > > > PS : I'm experienced in Relational DataBases (Oracle 8i) and in > Object-Oriented Databases (O2), but I would prefer to work with an open > source DBMS. Then use Postgresql or MySQL http://www.postgresql.org/ http://www.mysql.com/ Both use SQL and can be used from Python, you should feel at home. Daniel -- Daniel Veillard | Red Hat Network https://rhn.redhat.com/ veillard@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ From frankm@HiWAAY.net Fri Feb 1 14:37:12 2002 From: frankm@HiWAAY.net (Frank McIngvale) Date: Fri, 1 Feb 2002 08:37:12 -0600 (CST) Subject: [XML-SIG] Exceptions on undefined character entities Message-ID: Hi, I stumbled across this while fetching my usual rdf/rss files yesterday, and am hoping someone can explain what is happening: newsforge.com gave me a file containing this line: University of Osnabrück, Germany minidom doesn't like it: Python 2.1.1 (#1, Jan 21 2002, 22:52:28) [GCC 2.95.3 20010315 (release)] on linux2 Type "copyright", "credits" or "license" for more information. >>> from xml.dom import minidom >>> s = "University of Osnabrück, Germany" >>> minidom.parseString(s) Traceback (most recent call last): File "", line 1, in ? File "/usr/lib/python2.1/xml/dom/minidom.py", line 915, in parseString return _doparse(pulldom.parseString, args, kwargs) File "/usr/lib/python2.1/xml/dom/minidom.py", line 902, in _doparse toktype, rootNode = events.getEvent() File "/usr/lib/python2.1/xml/dom/pulldom.py", line 234, in getEvent self.parser.feed(buf) File "/usr/lib/python2.1/xml/sax/expatreader.py", line 92, in feed self._err_handler.fatalError(exc) File "/usr/lib/python2.1/xml/sax/handler.py", line 38, in fatalError raise exception xml.sax._exceptions.SAXParseException: :1:27: undefined entity >>> Dr. David Mertz pointed out that this works: >>> s = "]>University of Osnabrück, Germany" >>> minidom.parseString(s) >>> So my question is, what is the correct way to handle this? Is minidom supposed to handle it, is the caller supposed to provide the entities, or is it a bug in the XML file? thanks! frank (please cc: me on replies, I'm not subscribed yet) From tpassin@home.com Fri Feb 1 14:53:00 2002 From: tpassin@home.com (Thomas B. Passin) Date: Fri, 1 Feb 2002 09:53:00 -0500 Subject: [XML-SIG] Exceptions on undefined character entities References: Message-ID: <20020201145631.BFCL9958.femail33.sdc1.sfba.home.com@tbp> [Frank McIngvale] > > Hi, I stumbled across this while fetching my usual > rdf/rss files yesterday, and am hoping someone can > explain what is happening: > > newsforge.com gave me a file containing this line: > University of Osnabrück, Germany > > minidom doesn't like it: >.. Dr. David Mertz pointed out that this works: > > >>> s = "]>University > of Osnabrück, Germany" > >>> minidom.parseString(s) > > >>> > > So my question is, what is the correct way to handle this? Is > minidom supposed to handle it, is the caller supposed to provide > the entities, or is it a bug in the XML file? > It's an XML thing- if the entity isn't defined (by an ENTITY declaration or by being one of the five built-in entities) then the parser has no way to know what it stands for, and cannot process it. Minidom is acting correctly. Tom P From masterweb@bc88888.com Fri Feb 1 23:14:00 2002 From: masterweb@bc88888.com (21ÉÌÎñÔÚÏß) Date: Fri, 1 Feb 2002 23:14:00 Subject: [XML-SIG] ÌṩÃâ·ÑÐÅÏ¢£¬Ãâ·ÑÍøÒ³£¬Ãâ·ÑËÑË÷ÒýÇæ¡£ Message-ID: ÄãºÃ Äú¿ÉÒÔÃâ·Ñ·¢²¼¸÷ÀàÐÅÏ¢¡¢Ãâ·ÑÔÚËÑË÷ÒýÇæÖеǼÄúµÄÍøÕ¾¡¢Ãâ·ÑʹÓà ·þÎñÆ÷¿Õ¼ä¡¢Ãâ·ÑÖÆ×÷ÍøÒ³¡£ http://www.21online.net ʹÓü«ÐÇÓʼþȺ·¢£¬ÎÞÐëͨ¹ýÓʼþ·þÎñÆ÷£¬Ö±´ï¶Ô·½ÓÊÏ䣬ËٶȾø¶ÔÒ»Á÷£¡ ÏÂÔØÍøÖ·£ºhttp://love2net.51.net/£¬¸ü¶àÃâ·ÑµÄ³¬¿áÈí¼þµÈÄãÀ´Ï¡­¡­ ---------------------------------------------------- INFORMATION This message has been sent using a trial-run version of the TSmtpRelayServer Delphi Component. ---------------------------------------------------- From akuchlin@mems-exchange.org Tue Feb 5 15:22:36 2002 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Tue, 05 Feb 2002 10:22:36 -0500 Subject: [XML-SIG] RELAX NG status update Message-ID: Current status: * The code is now in the sandbox/ module in CVS. Feel free to grab a copy and experiment with it. * I'm still slashing away at implementing the full parser. It's difficult, and I think the code is slowly becoming grungier, even though complicated things such as 'externalRef' and 'include' elements haven't been implemented at all yet. Any help or advice would be greatly appreciated. (I'll be at Python10 tomorrow and Thursday. On Thursday I'll try to give a lightning talk about this RELAX NG work. If anyone wants to do a pair programming session at Python10, I'd love to.) * It does actually work to some degree, though. The current output of the test suite, with various tests disabled, is: Results: Incorrect tests: 64 of 144 (44%) succeeded Correct tests: 48 of 107 (45%) succeeded * Does anyone know of a converter from the full to the simple syntax? That would make it much easier to debug the validation engine without getting snarled in the complexity of the parser. --amk (www.amk.ca) It is the end... but the moment has been prepared for. -- The Doctor's final words, in "Logopolis" From netpims@sksoft.co.kr Thu Feb 7 05:35:33 2002 From: netpims@sksoft.co.kr (ƯÇãÃâ¿ø) Date: Thu, 07 Feb 2002 14:35:33 +0900 Subject: [XML-SIG] [±¤][°í] ¸¶ÄÉÆÃ, °í°´°ü¸®, ±â¾÷Àü»êÈ­ !! Message-ID: <3C5EF903000152EC@msp-mail01.netian.com> (added by postmaster@msp-mail01.netian.com) :::::::: NetPIMS1.0 On/Off Line =B8=B6=C4=C9=C6=C3 =C0=DA=B5=BF=C8= =AD ::::::::

<= a href=3D"http://www.netpims.net" target=3D"_blank">

NetPIMS=BF=A1=20 =C6=F7=C7=D4=B5=C8 =BC=F6=BD=C5 =B0=C5=BA=CE=C0=DA=20 =C0=FC=BC=DB =C0=DA=B5=BF =C2=F7=B4=DC =B9=E6=B9=FD= =B0=FA
=B4=D9=C1=DF =C1=DF= =BA=B9 =C0=FC=BC=DB =C0=DA=B5=BF =C2=F7=B4=DC =B9=E6=B9=FD=C0=BA =C6=AF=C7=E3 =C3=E2=BF=F8=B5=C8= =B1=E2=BC=FA=B7=CE
Email =B8=B6=C4=C9=C6=C3 =BD=C3=C0=E5=C0=C7 =BE=C8= =C1=A4=C0=FB=C0=CC=B0=ED =C1=F6=BC=D3=C0=FB=C0=CE =B9=DF=C0=FC=BF=A1 =B1=E2= =BF=A9
=C7=CF=B0=ED=C0=DA =B0=B3=B9=DF=B5=C7=BE=FA=BD=C0= =B4=CF=B4=D9.

=3D>
=C0=DA=BC=BC= =C8=F7 =BA=B8=B1=E2=20 (=C6=AF=C7=E3 =C3=E2=BF=F8 =B0=FC=B7=C3)
=20
NetPIMS=B4=C2 =C3=CA= =B0=ED=BC=D3 =B4=EB=B7=AE =B9=DF=BC=DB=BA=B8=B4=D9=B4=C2=20 =BE=F7=B9=AB =C0=FC=BB=EA=C8=AD =C2=F7=BF=F8=C0=C7=
=B8=B6=C4=C9=C6=C3 =B9=D7 =B0=ED=B0=B4=B0=FC=B8=AE =C0=DA=B5=BF=C8=AD= =C8=AF=B0=E6=20 =B1=B8=C3=E0=C0=BB =C1=F6=C7=E2=C7=D5=B4=CF=B4=D9= .

=3D>
=C1=A6=BE=C8= =BC=AD =B4=D9=BF=EE=B7=CE=B5=E5
 

 

=

=BC=F6=BD=C5=B0=C5=BA=CE =C0=FC=BC=DB= =C2=F7=B4=DC
=C1=DF=BA=B9 =B9=DF=BC=DB =C0=DA=B5=BF =C2=F7=B4=DC=20
1:1 =B8=D3=C1=F6 =B4=EB=B7=AE =B9=DF=BC=DB=B5= =EE
=3D> =C0=DA=BC=BC=C8=F7...

 

=

=C0=A5=BB=F3=C0=C7 =B8=F0=B5=E7 =B0=B3= =C3=BC=B8=A6
=C4=AB=B5=E5=C8=AD=C7=CF=BF=A9 1:1 =B4=EB=B7=AE=20 =C0=FC=BC=DB =B0=A1=B4=C9
=B4=D9=BE=E7=C7=D1 = =C5=DB=C7=C3=B8=AE=C6=AE =C1=A6=B0=F8
=3D> =C0=DA=BC=BC=C8=F7...

 

=

1:1 =B4=EB=B7=AE =C0=FC=BC=DB
=B0= =B3=C0=CE=C8=AD=B5=C8 =B8=D3=C1=F6 =C1=A6=B0=F8
80=20 Byte =C0=CC=BB=F3 =C0=DA=B5=BF
=BA=D0=C7=D2 = =B5=EE
=3D> =C0=DA=BC= =BC=C8=F7...

 

=

=B7=B9=C0=CC=BA=ED =C0=CE=BC=E2
=B8= =DE=C0=CF=B8=D3=C1=F6 =C0=CE=BC=E2
Office =B9=AE=BC=AD=20 =B8=D3=C1=F6 =C0=CE=BC=E2
=C7=DA=B5=E5=BA=CF = =C0=CE=BC=E2 =B5=EE
Off Line =B8=B6=C4=C9=C6=C3=C0=BB =C0=A7
=20 =C7=D1 =C0=CF=B7=C3=C0=C7 =B5=B5=B1=B8 =C1=A6=B0=F8=
=3D>=20 =C0=DA=BC= =BC=C8=F7... 








 

<= /td>



 
 =20

=BF=F8=C7=CF=C1=F6 =BE=CA=B4=C2 = =B8=DE=C0=CF =C0=CC=BE=FA=B4=D9=B8=E9=20 =C1=F8=BD=C9=C0=B8=B7=CE =BB=E7=B0=FA=B5=E5=B8=B3= =B4=CF=B4=D9. =BC=F6=BD=C5=B0=C5=BA=CE=B8=A6 =C5=AC=B8=AF=C7=D8 =C1=D6=BD= =C3=B8=E9 =C0=CC=C8=C4=20 =B8=DE=C0=CF=C0=BB =B4=D9=BD=C3 =B9=DF=BC=DB=C7=CF= =C1=F6 =BE=CA=B0=DA=BD=C0=B4=CF=B4=D9
=BA=BB =B8=DE=C0=CF=C0=BA =B9=DF=BC=DB =C0= =FC=BF=EB=C0=D4=B4=CF=B4=D9. =C1=A6=C7=B0=BF=A1= =B4=EB=C7=D1 =B9=AE=C0=C7=B4=C2 =BE=C6=B7=A1 =BF=AC=B6=F4=C3=B3=B7=CE=20 =BF=AC=B6=F4=C1=D6=BD=C3=B8=E9 =B0=A8=BB=E7=B5=E5= =B8=AE=B0=DA=BD=C0=B4=CF=B4=D9.

=

 Copyright (c) 1999-2002 SKS= OFT All=20 rights reserved.
Tel : 053-816-9977,   Email :<= /font> sksoft@sksoft.co.kr

From m_mariappanX@trillium.com Thu Feb 7 09:29:54 2002 From: m_mariappanX@trillium.com (Mariappan, MaharajanX) Date: Thu, 7 Feb 2002 01:29:54 -0800 Subject: [XML-SIG] A Q About DOCTYPE manipulation Message-ID: <53A7943A5BD8D411B6930002A5073155013F6193@bgsmsx90.iind.intel.com> Hi, I'm using minidom to parse the xml file. I'm unable to specify a line like this in the XML file i'm creating. Also the for the DocumentType Objects i'm unable to get or set the publicId (master_test.dtd??) How do I set the SYSTEM attribute so that i can point it to a dtd file? Also after creating the xml object when i make a call to "toxml()" the DocumentType is not printed? How can i parse the publicID and write it using minidom (dtd value)? thanks From bh@intevation.de Thu Feb 7 11:14:36 2002 From: bh@intevation.de (Bernhard Herzog) Date: 07 Feb 2002 12:14:36 +0100 Subject: [XML-SIG] Unexpected memory leak in Sax + _locator Message-ID: <6qvgd9o86b.fsf@abnoba.intevation.de> I found an unexpected memory leak in the sax contenthandler + expatparser (tested with Python 2.2 compiled with expat). The following script demonstrates the leak: import gc gc.set_debug(gc.DEBUG_LEAK) import xml.sax.handler xmldata = """ Spain """ class Handler(xml.sax.handler.ContentHandler): def endDocument(self): # uncomment this to avoid the leak #self._locator = None pass xml.sax.parseString(xmldata, Handler()) print "gc.collect() ->", gc.collect() Typical output: gc: collectable gc: collectable gc: collectable gc: collectable gc: collectable gc: collectable gc: collectable gc: collectable gc: collectable gc: collectable gc: collectable gc.collect() -> 11 The problem is that the ExpatParser (in xml.sax.expatreader) is both the parser and locator. The parser has a reference to the contenthandler, of course. The ExpatParser also passes itself to the handler's setDocumentLocator method which by default stores it in self._locator, creating a circular reference. I can see several ways to fix it: 1. have the parse method call self._cont_handler.setDocumentLocator(None) This would be a slight change of the interface, though. Existing content handlers might assume that the parameter of setDocumentLocator is always a valid locator 2. Create a separate locator class for the expatparser which only references the actual parser C-object. The ExpatParser instance could also hold a reference to it so that it can be updated on reset() 3. Use a weak reference proxy to the parser as the argument to setDocumentLocator. I could implement one of these and submit a patch. Once you know about this, it's easily worked around, though, so it might not be worth fixing, but it should at least be documented. Bernhard -- Intevation GmbH http://intevation.de/ Sketch http://sketch.sourceforge.net/ MapIt! http://mapit.de/ From james.kalassery@businessdigests.com Fri Feb 8 00:18:31 2002 From: james.kalassery@businessdigests.com (James Kalassery) Date: Fri, 08 Feb 2002 00:18:31 +0000 Subject: [XML-SIG] Your esteemed organization's details .. Message-ID: <200202080040.g180eFt17895@sweeper.dhivehinet.net.mv> Dear Sir / Madam: While searching on the Net for "Art Gallery", and following the various links there, we came across your site and your email address. We thought it would be appropriate to write to you to request your co-operation in our humble mission. Our apologies if this mail interrupted your busy schedule. We are maintaining a city-wise directory of organizations and websites worldwide. Our mission is to include information about as many websites as possible, for the benefit of all our net-kins. Our aim is to develop this site into a one-stop resource on the net, over a reasonable period of time. Needless to say, that we cannot do all this alone ! We believe your site has appropriate content useful for those who are searching for related information. If your website is also included in our directory, many more people will be able to find you on the net and promote your site as well. We have organized the site into four sections. A city-wise category-wise listings section, a city-wise exclusive links listings (in alphabetical order of names of organizations) section, a search section and a software section detailing our free contact and event management software useful to all business-persons and managers. All these sections and the 900+ pages therein are appropriately linked for easy navigation. At our search section, all visitors can either make a page search or a record search (called Alternate Search) or both. Page search results is a list of URLs of pages containing the search keywords. Record search results is a list of individual listings containing the search keywords. The records search is very popular and more exact, because the results are almost 100% relevant. If you want to see how many organizations in your business category are already listed at our site, go to http://businessdigests.com/template/alsearch.shtml?56003 and type in your keywords there. If you will be able to kindly spare just two minutes of your busy schedule, you could complete the submission process at our site. The submission and inclusion at our site is FREE of charge and there are absolutely no strings attached. Please believe that we consider it an honor to have your site listed in our directory. The URLs at our site are given below for your easy reference and navigation:- Home Page: http://businessdigests.com Submission Page: http://businessdigests.com/joinfree.shtml?56003 Software Page: http://businessdigests.com/bdcs/selfmngr.htm Privacy: All information provided by you, except those published on our site, will remain confidential with us and will not be given to anyone for any purpose. Except, of course, when required by the laws of the land. This email may not have the strong punch of some of those emails written by world famous salespersons. But, we hope we have been able to convey our thoughts clearly and convince you that it is worthwhile co-operating for mutual benefit and for the benefit of all those who might be looking for you. We thank you for your time and look forward to your early response. Best regards, James Kalassery, CEO, for The BDC Team. [[56003 PS: If you received this mail in error, please return this mail IN FULL with REMOVE in the subject. From Alexandre.Fayolle@logilab.fr Fri Feb 8 08:44:21 2002 From: Alexandre.Fayolle@logilab.fr (Alexandre Fayolle) Date: Fri, 8 Feb 2002 09:44:21 +0100 (CET) Subject: [XML-SIG] [OT] tDOM Message-ID: I've jsut come accross this article on IBM developer works, and I thought some people here might be interested : http://www-106.ibm.com/developerworks/xml/library/x-tdom.html?n-x-272 It's about an onpensourced C implementation of DOM and XSLT (based on the expat parser) with tcl bindings, which makes it somewhat offtopic here. However, it's supposed to be very fast, so maybe it could be interesting to provide python bindings. Cheers, Alexandre Fayolle -- LOGILAB, Paris (France). http://www.logilab.com http://www.logilab.fr http://www.logilab.org Narval, the first software agent available as free software (GPL). From frog@creatis.insa-lyon.fr Fri Feb 8 08:47:12 2002 From: frog@creatis.insa-lyon.fr (Eric Boix) Date: Fri, 8 Feb 2002 09:47:12 +0100 Subject: [XML-SIG] [DOM PyXML-0.7-1] fix to demo/dom/generate_xml1.py Message-ID: <20020208094712.J26548@tux.creatis.insa-lyon.fr> Hi, Apparentrly the demo/dom/generate_xml1.py is broken: Traceback (most recent call last): File "PyXML/demo/dom/generate_xml1.py", line 17, in ? doc = implementation.createHTMLDocument('', 'mydoc', dt) TypeError: createHTMLDocument() takes exactly 2 arguments (4 given) I could get it running with the following changes : ---------------------------------------- doc = implementation.createHTMLDocument('', 'mydoc', dt) --- > doc = implementation.createDocument(None, 'mydoc', dt) 23c18 < new_elem = doc.createElementNS('', 'spam') --- > new_elem = doc.createElementNS(None, 'spam') 26c21 < new_elem.setAttributeNS('', 'eggs', 'sunnysideup') --- > new_elem.setAttributeNS(None, 'eggs', 'sunnysideup') 38,39c33,34 < import xml.doc.ext < xml.doc.ext.Print(doc) --- > from xml.dom import ext > ext.Print(doc) ---------------------------------------- Am I correct or am I missing something ? Yours, Eric Boix Creatis : Medical imaging lab http://www.creatis.insa-lyon.fr/~frog From veillard@redhat.com Fri Feb 8 09:10:18 2002 From: veillard@redhat.com (Daniel Veillard) Date: Fri, 8 Feb 2002 04:10:18 -0500 Subject: [XML-SIG] [OT] tDOM In-Reply-To: ; from Alexandre.Fayolle@logilab.fr on Fri, Feb 08, 2002 at 09:44:21AM +0100 References: Message-ID: <20020208041018.Z24231@redhat.com> On Fri, Feb 08, 2002 at 09:44:21AM +0100, Alexandre Fayolle wrote: > I've jsut come accross this article on IBM developer works, and I thought > some people here might be interested : > http://www-106.ibm.com/developerworks/xml/library/x-tdom.html?n-x-272 > > It's about an onpensourced C implementation of DOM and XSLT (based on the > expat parser) with tcl bindings, which makes it somewhat offtopic here. > However, it's supposed to be very fast, so maybe it could be interesting > to provide python bindings. BTW, I'm about to release python bindings as part of the libxml2 and libxslt distributions [1]. Both are also C implementations, and generally considered fast and conformant ones. The python bindings will provide: - SAX wrappers - DOM like access to the trees if generated, plus mutator and saving operations - Catalog (XML and SGML support) - integrated HTML parser with similar handling as XML - XSLT support - EXSLT support (nearly complete) - the possibility to extend XPath and XSLT engine with routines written in Python Daniel [1] http://xmlsoft.org/ and http://xmlsoft.org/XSLT/ -- Daniel Veillard | Red Hat Network https://rhn.redhat.com/ veillard@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ From frog@creatis.insa-lyon.fr Fri Feb 8 09:21:56 2002 From: frog@creatis.insa-lyon.fr (Eric Boix) Date: Fri, 8 Feb 2002 10:21:56 +0100 Subject: [XML-SIG] [XLST PyXML-0.7-1] bug request 510080 still alive ? Message-ID: <20020208102156.K26548@tux.creatis.insa-lyon.fr> Hi, In my quest for finding examples of usage of PyXML + XLST, I tried running the Aspn Python Cookbook XML example : http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52242 It fails running because it encouters a registered bug in XLST : XSLT: Stylesheet handler entityRef (request ID 510080) http://sourceforge.net/tracker/index.php?func=detail&aid=510080&group_id=6473&atid=106473 Anyone with a work around or fix on this ? Could anyone direct me to XLST examples (in the absence of docs) ? Yours, Eric Boix Creatis : Medical imaging lab http://www.creatis.insa-lyon.fr/~frog From moracle@moracle.co.kr Fri Feb 8 12:53:09 2002 From: moracle@moracle.co.kr (=?ks_c_5601-1987?B?KMHWKbjwtvPFrA==?=) Date: Fri, 08 Feb 2002 21:53:09 +0900 Subject: [XML-SIG] =?ks_c_5601-1987?B?taXAzMTeIMbyu/25+MijIDA1MDW4piC9xcO7x8+8vL/kIFuxpLDtXQ==?= Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0217_01C0F53A.93A09C00 Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 v/jHz7TCILn4yKO1tSCwrrDtLCDH4L/uwMcgvLG5sLW1ILnewNohICAgICAgICAgICAgICAg ICAgICAgICAgICAgNL/5IDMwwM+x7sH2IDA1MDW/oSCwocDUx8+w7SwgNci4wMy78yDA/Mit uKYgud7AuL3FILDtsLTB3w0KIMPfw7fAuyDF68fYILDmx7DAuyC15biztM+02S4gICAgICAg ICAgICAgICCh2LTnw7fA2rTCIDW/+SAxNcDPIDA1MDXIqMbkwMzB9r+hvK0gud/HpSzBpry8 sPiw+rHdILq7wM66zrTjICAgICAgICAgICAgodgwNTA1IMbyu/25+Mijv6EgtOvH2CC09SDA 2ry8yPcgvsuw7SC9zcC4vcUgutDAuiC+xrehufbGsMC7IMWsuK/Hz7y8v+QuICAgIKGhICAg ICAgICAgICAgodiwocDUvcXDu8C6IL7Gt6EgufbGsMC7ILSpuKO9yr3Dv8AuDQogICAgKMDM uqXGriAxLDK/oSC48LXOIML8v6nHz73Dt8G46SC+xrehILn2xrDAuLfOILChwNS9xcO7x8+8 xb7fIMfVtM+02S4pICAgICAgICAgICAgICAgIKGhodggu/Ox4sDMuqXGrrTCICC6uyC067iu waEgwNrDvMfgu+fAzLjnLCC057vnuKYgxevH0SCwocDUwNq01Li4IMfYtOe1y7TPtNkuICAg ICAgICAgICC6uyAgRS1tYWlswLogIsD8u+q4wSC6uLHeyK7A5bD6IMDMv+vDy8H4v6EgsPzH 0SC5/bf8Ir+hIMDHsMXHz7+pILz2vcXA2rChIFu89r3FsMW6zl3Ax7vnuKYgIMi4vcXAuLfO ILngyPnIxL+htMK2x7TZvcMgurizvrz2IL74vcC0z7TZLiC1+7bzvK0gx9G5+Li4ILq4s7u1 5biywLsgvsizu8fYteW4rrjnLCDIpL3DILq7IEUtbWFpbMC7ILnesO0gseK60MDMILvzx8+8 zLTZuOkgv+u8rcfPvcq9w7/ALiC02b3DtMIgurizu8H2IL7KwLsgsM3A1LTPtNkuDQogILbH x9EgsO2wtLTUwMcgRS1tYWlswLogsNS9w8bHwLsgxevH2CC+y7DUILXHvvrAuLjnILDtsLS0 1MDHIEUtbWFpbMC7IMGmv9zH0SCws8DOvcW788Gkuri/oSC068fYvK20wiDA/Mf0IL7LwfYg uPjHz7DtIMDWu+e/wLTPIL7IvcnHz73DseIgudm2+LTPtNkuDQogICAgeG1sLXNpZ7TUwMcg uN7Az8HWvNK0wiDAzCDApcbkwMzB9r+hvK0guriw7SDAzLe4sNQguN7Az8C7ILXluLO0z7TZ LiAgIA0K ------=_NextPart_000_0217_01C0F53A.93A09C00 Content-Type: text/html; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjx0aXRsZT6/+MfPtMIgufjIo7W1ILCusO0sIMfgv+7AxyC8sbmw tbUgud7A2iE8L3RpdGxlPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250 ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9ZXVjLWtyIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2Nz cyI+DQo8IS0tDQoudGV4dCB7ICBmb250LWZhbWlseTogIrG8uLLDvCIsICK1uL/yw7wiLCAi QXJpYWwiOyBmb250LXNpemU6IDlwdDsgbGluZS1oZWlnaHQ6IDE0cHR9DQotLT4NCjwvc3R5 bGU+DQoNCjwvaGVhZD4NCg0KPGJvZHkgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIj4N Cg0KPGRpdiBhbGlnbj0iY2VudGVyIj4NCiAgPGNlbnRlcj4NCg0KPHRhYmxlIGJvcmRlcj0i MCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxh cHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMxMTExMTEiIHdpZHRoPSI1NjciIGlkPSJB dXRvTnVtYmVyMSIgaGVpZ2h0PSI2OTIiPg0KICA8dHI+DQogICAgPHRkIHdpZHRoPSI5NjYi IGhlaWdodD0iMTYiIGFsaWduPSJjZW50ZXIiIGNvbHNwYW49IjIiIGJnY29sb3I9IiM1MjQ0 M0MiPg0KICAgIDxpbWcgc3JjPSJodHRwOi8vbW9yYWNsZS5jby5rci9+bW9yYWNsZS9ob21l Mi8wMjA2X3RleHQuZ2lmIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjEwMSI+PC90ZD4NCiAgPC90 cj4NCiAgPHRyPg0KICAgIDx0ZCB3aWR0aD0iOTY2IiBoZWlnaHQ9IjM2MCIgY29sc3Bhbj0i MiIgYmdjb2xvcj0iIzUyNDQzQyI+DQogICAgPGltZyBib3JkZXI9IjAiIHNyYz0iaHR0cDov L21vcmFjbGUuY28ua3Ivfm1vcmFjbGUvaG9tZTIvMDIwNl9pbWcuZ2lmIiB3aWR0aD0iNjAw IiBoZWlnaHQ9IjM2MCI+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBiZ0NvbG9y PSIjNTI0NDNjIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE3Ij4mbmJzcDsNCiAgICA8aW1nIGJv cmRlcj0iMCIgc3JjPSJodHRwOi8vbW9yYWNsZS5jby5rci9+bW9yYWNsZS9ob21lMi8wMjA2 X2V2ZW50MS5naWYiIHdpZHRoPSIyMDAiIGhlaWdodD0iMzAiPjwvdGQ+DQogICAgPHRkIGJn Q29sb3I9IiM1MjQ0M0MiIHdpZHRoPSI1NjYiIGhlaWdodD0iMTciPg0KICAgIDxpbWcgYm9y ZGVyPSIwIiBzcmM9Imh0dHA6Ly9tb3JhY2xlLmNvLmtyL35tb3JhY2xlL2hvbWUyLzAyMDZf ZXZlbnQyLmdpZiIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIzMCI+PC90ZD4NCiAgPC90cj4NCiAg PHRyPg0KICAgIDx0ZCBiZ0NvbG9yPSIjNTI0NDNjIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQx Ij48aW1nIHNyYz0iaHR0cDovL21vcmFjbGUuY28ua3Ivfm1vcmFjbGUvaG9tZTIvMDIwNl9i b3h1cC5naWYiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDEiPjwvdGQ+DQogICAgPHRkIGJnQ29s b3I9IiM1MjQ0M0MiIHdpZHRoPSI1NjYiIGhlaWdodD0iMTkwIiByb3dzcGFuPSI1Ij4NCiAg ICA8aW1nIGJvcmRlcj0iMCIgc3JjPSJodHRwOi8vbW9yYWNsZS5jby5rci9+bW9yYWNsZS9o b21lMi8wMjA2X3ByaXplMi5naWYiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjA1Ij48L3RkPg0K ICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGJhY2tncm91bmQ9Imh0dHA6Ly9tb3JhY2xlLmNv LmtyL35tb3JhY2xlL2hvbWUyLzAyMDZfYm94YmcuZ2lmIiBoZWlnaHQ9IjUwIiB3aWR0aD0i NDAwIj4NCiAgICA8dGFibGUgY2xhc3M9InRleHQiIGNlbGxTcGFjaW5nPSIwIiBjZWxsUGFk ZGluZz0iMCIgd2lkdGg9IjM5NSIgYm9yZGVyPSIwIj4NCiAgICAgIDx0cj4NCiAgICAgICAg PHRkIHdpZHRoPSIzOTUiPg0KICAgICAgICA8cCBhbGlnbj0iY2VudGVyIj40v/kgMzDAz7Hu wfYgMDUwNb+hILChwNTHz7DtLCA1yLjAzLvzIMD8yK24piC53sC4vcUgsO2wtMHfPGJyPg0K ICAgICAgICDD38O3wLsgxevH2CCw5sewwLsgteW4s7TPtNkuPC90ZD4NCiAgICAgIDwvdHI+ DQogICAgPC90YWJsZT4NCiAgICA8L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGJn Q29sb3I9IiM1MjQ0M2MiIHdpZHRoPSI0MDAiIGhlaWdodD0iNTciPg0KICAgIDxhIHRpdGxl PSLA2ry8x9EgsObHsLO7v+vAuyC6uL3Dt8G46SDFrLivx8+8vL/kLiIgdGFyZ2V0PSJfYmxh bmsiIGhyZWY9Imh0dHA6Ly9tb3JhY2xlLmNvLmtyL35tb3JhY2xlL2hvbWUyL3ByaXplLmh0 bSI+DQogICAgPGltZyBib3JkZXI9IjAiIHNyYz0iaHR0cDovL21vcmFjbGUuY28ua3Ivfm1v cmFjbGUvaG9tZTIvMDIwNl9wcml6ZS5naWYiIHdpZHRoPSI0MDAiIGhlaWdodD0iNTciPjwv YT48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGJhY2tncm91bmQ9Imh0dHA6Ly9t b3JhY2xlLmNvLmtyL35tb3JhY2xlL2hvbWUyLzAyMDZfYm94YmcuZ2lmIiBoZWlnaHQ9IjMw IiB3aWR0aD0iNDAwIj4NCiAgICA8dGFibGUgY2xhc3M9InRleHQiIGNlbGxTcGFjaW5nPSIw IiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9IjM5NCIgYm9yZGVyPSIwIj4NCiAgICAgIDx0cj4N CiAgICAgICAgPHRkIHdpZHRoPSIzOTQiPg0KICAgICAgICA8cCBhbGlnbj0iY2VudGVyIj6h 2LTnw7fA2rTCIDW/+SAxNcDPIDA1MDXIqMbkwMzB9r+hvK0gud/HpSzBpry8sPiw+rHdILq7 wM66zrTjPC90ZD4NCiAgICAgIDwvdHI+DQogICAgPC90YWJsZT4NCiAgICA8L3RkPg0KICA8 L3RyPg0KICA8dHI+DQogICAgPHRkIGJnQ29sb3I9IiM1MjQ0M2MiIGhlaWdodD0iMTIiIHdp ZHRoPSI0MDAiPg0KICAgIDxpbWcgc3JjPSJodHRwOi8vbW9yYWNsZS5jby5rci9+bW9yYWNs ZS9ob21lMi8wMjA2X2JveGRvd24uZ2lmIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjI2Ij48L3Rk Pg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGNsYXNzPSJ0ZXh0IiBoZWlnaHQ9IjM1IiB3 aWR0aD0iOTY2IiBjb2xzcGFuPSIyIj4NCiAgICA8cCBhbGlnbj0iY2VudGVyIj4NCiAgICA8 Zm9udCBzaXplPSIyIj6h2DA1MDUgxvK7/bn4yKO/oSC068fYILT1IMDavLzI9yC+y7DtIL3N wLi9xSC60MC6IL7Gt6G59sawwLsgxay4r8fPvLy/5C48L2ZvbnQ+PC90ZD4NCiAgPC90cj4N CiAgPHRyPg0KICAgIDx0ZCBjbGFzcz0idGV4dCIgaGVpZ2h0PSIzNSIgd2lkdGg9Ijk2NiIg Y29sc3Bhbj0iMiI+DQogICAgPHAgYWxpZ249ImNlbnRlciI+oaENCiAgICAgIDxCT0RZIGJn Y29sb3I9IiNGRkZGRkYiIHRvcG1hcmdpbj0iMCIgbGVmdG1hcmdpbj0iMCI+DQo8IS0tIFVS TCdzIHVzZWQgaW4gdGhlIG1vdmllLS0+DQo8QSBIUkVGPWh0dHA6Ly9tb3JhY2xlLmNvLmty L35tb3JhY2xlL2hvbWUyLzA1MDVfMi5odG0+PC9BPiA8QSBIUkVGPWh0dHA6Ly9tb3JhY2xl LmNvLmtyL35tb3JhY2xlL2hvbWUyLzA1MDVfMy5odG0+PC9BPiA8QSBIUkVGPWh0dHA6Ly9t b3JhY2xlLmNvLmtyL35tb3JhY2xlL2hvbWUyLzA1MDVfNC5odG0+PC9BPiA8QSBIUkVGPWh0 dHA6Ly9tb3JhY2xlLmNvLmtyL35tb3JhY2xlL2hvbWUyLzA1MDVfNS5odG0+PC9BPiA8IS0t IHRleHQgdXNlZCBpbiB0aGUgbW92aWUtLT4NCjwhLS0wID+hwiAg57vrv/25IOe767/kv92x ICAtLT48T0JKRUNUIGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0 NDU1MzU0MDAwMCINCiBjb2RlYmFzZT0iaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29t L3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTUsMCwwLDAi DQogV0lEVEg9MzMwIEhFSUdIVD04MD4NCiA8UEFSQU0gTkFNRT1tb3ZpZSBWQUxVRT0iaHR0 cDovL21vcmFjbGUuY28ua3Ivfm1vcmFjbGUvaG9tZTIvMDUwNV9zaWRlLnN3ZiI+IDxQQVJB TSBOQU1FPXF1YWxpdHkgVkFMVUU9aGlnaD4gPFBBUkFNIE5BTUU9Ymdjb2xvciBWQUxVRT0j RkZGRkZGPiANCiAgPEVNQkVEIHNyYz0iaHR0cDovL21vcmFjbGUuY28ua3Ivfm1vcmFjbGUv aG9tZTIvMDUwNV9zaWRlLnN3ZiIgcXVhbGl0eT1oaWdoIGJnY29sb3I9I0ZGRkZGRiAgV0lE VEg9MzMwIEhFSUdIVD04MCBUWVBFPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIg UExVR0lOU1BBR0U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vc2hvY2t3YXZlL2Rvd25s b2FkL2luZGV4LmNnaT9QMV9Qcm9kX1ZlcnNpb249U2hvY2t3YXZlRmxhc2giPjwvRU1CRUQ+ PC9PQkpFQ1Q+DQo8L0JPRFk+DQogICAgICANCiAgICAgIA0KICAgIDwvdGQ+DQogIDwvdHI+ DQogIDx0cj4NCiAgICA8dGQgY2xhc3M9InRleHQiIGhlaWdodD0iNiIgd2lkdGg9Ijk2NiIg Y29sc3Bhbj0iMiI+DQogICAgPHAgc3R5bGU9ImxpbmUtaGVpZ2h0OiAxNTAlOyBtYXJnaW4t dG9wOiAwOyBtYXJnaW4tYm90dG9tOiAwIiBhbGlnbj0iY2VudGVyIj4NCiAgICA8Zm9udCBz aXplPSIyIj6h2LChwNS9xcO7wLogvsa3oSC59sawwLsgtKm4o73KvcO/wC48L2ZvbnQ+PC9w Pg0KICAgIDxwIHN0eWxlPSJsaW5lLWhlaWdodDogMTUwJTsgbWFyZ2luLXRvcDogMDsgbWFy Z2luLWJvdHRvbTogMCIgYWxpZ249ImNlbnRlciI+DQogICAgPGZvbnQgc2l6ZT0iMiI+Jm5i c3A7ICjAzLqlxq4gMSwyv6EguPC1ziDC/L+px8+9w7fBuOkgvsa3oSC59sawwLi3ziCwocDU vcXDu8fPvMW+3yDH1bTPtNkuKSA8L2ZvbnQ+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAg IDx0ZCBjbGFzcz0idGV4dCIgaGVpZ2h0PSIxIiB3aWR0aD0iOTY2IiBjb2xzcGFuPSIyIj4N CiAgICA8cCBhbGlnbj0iY2VudGVyIj4mbmJzcDs8IS0tIFVSTCdzIHVzZWQgaW4gdGhlIG1v dmllLS0+PEEgSFJFRj1odHRwOi8vMDUwNS5kYWNvbS5uZXQvcG5zX3NlcnZsZXRzL1Vzckdl dE5ldz9vcF9pZD1uMDA1NTA+PC9BPjwhLS0gdGV4dCB1c2VkIGluIHRoZSBtb3ZpZS0tPjwh LS0wIC0tPg0KICAgIDxPQkpFQ1QgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNm LTk2QjgtNDQ0NTUzNTQwMDAwIiAgICAgICAgICAgICAgICAgICAgDQoNCiAgICAgICAgDQoN CiBjb2RlYmFzZT0iaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dh dmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTUsMCwwLDAiICAgICAgICANCg0K ICAgICAgICANCg0KIFdJRFRIPTE5MCBIRUlHSFQ9MzQ+ICAgICAgICANCg0KICAgICAgICAN Cg0KIDxQQVJBTSBOQU1FPW1vdmllIFZBTFVFPSJodHRwOi8vbW9yYWNsZS5jby5rci9+bW9y YWNsZS9tb3JhY2xlaG9tZS8wNTA1L2FwcGx5LnN3ZiI+IDxQQVJBTSBOQU1FPXF1YWxpdHkg VkFMVUU9aGlnaD4gPFBBUkFNIE5BTUU9Ymdjb2xvciBWQUxVRT0jRkZGRkZGPiANCiAgICAg ICAgICAgICAgICAgICAgICAgICAgPEVNQkVEIHNyYz0iaHR0cDovL21vcmFjbGUuY28ua3Iv fm1vcmFjbGUvbW9yYWNsZWhvbWUvMDUwNS9hcHBseS5zd2YiIHF1YWxpdHk9aGlnaCBiZ2Nv bG9yPSNGRkZGRkYgIFdJRFRIPTE5MCBIRUlHSFQ9MzQgVFlQRT0iYXBwbGljYXRpb24veC1z aG9ja3dhdmUtZmxhc2giIFBMVUdJTlNQQUdFPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29t L3Nob2Nrd2F2ZS9kb3dubG9hZC9pbmRleC5jZ2k/UDFfUHJvZF9WZXJzaW9uPVNob2Nrd2F2 ZUZsYXNoIj48L0VNQkVEPjwvT0JKRUNUPiAgICAgICAgDQoNCiAgICAgICAgDQoNCiAgICA8 L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGNsYXNzPSJ0ZXh0IiBoZWlnaHQ9IjQi IHdpZHRoPSI5NjYiIGNvbHNwYW49IjIiPg0KICAgIDxwIHN0eWxlPSJsaW5lLWhlaWdodDog MTZweDsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMCIgYWxpZ249ImxlZnQiPqGh PHAgc3R5bGU9ImxpbmUtaGVpZ2h0OiAxNnB4OyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90 dG9tOiAwIiBhbGlnbj0iY2VudGVyIj48Zm9udCBzaXplPSIyIj6h2CC787HiwMy6pcautMIg DQogICAgursgtOu4rsGhIMDaw7zH4LvnwMy45ywgtOe757imIMXrx9EgsKHA1MDatNS4uCDH 2LTntcu0z7TZLiA8L2ZvbnQ+DQogICAgPC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0 ZCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE2Ij48L3RkPg0KICAgIDx0ZCB3aWR0aD0iNTY2IiBo ZWlnaHQ9IjE2Ij48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHdpZHRoPSI5NjYi IGhlaWdodD0iMTYiIGNvbHNwYW49IjIiPg0KICAgIDxwIHN0eWxlPSJsaW5lLWhlaWdodDog MTZweDsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMCIgYWxpZ249ImxlZnQiPg0K ICAgIDxmb250IHN0eWxlPSJmb250LXNpemU6IDlwdCI+ursgDQogICAgRS1tYWlswLogJnF1 b3Q7wPy76rjBILq4sd7IrsDlsPogwMy/68PLwfi/oQ0KICAgILD8x9Eguf23/CZxdW90O7+h IMDHsMXHz7+pILz2vcXA2rChIDxhIGhyZWY9Imh0dHA6Ly93d3cuY3J1c2FkZS5jby5rci9y ZWplY3QvcmVqZWN0LnBocD9pZD0yMjMzJmF1dGg9ZTBmN2E0ZDBlZjliODRiODNiNjkzYmJm M2ZlYjhlNmUmbWFpbD14bWwtc2lnQHB5dGhvbi5vcmcmbW9kZT13cml0ZSI+PGI+W7z2vcWw xbrOXTwvYj48L2E+wMe757imIA0KICAgIMi4vcXAuLfOILngyPnIxL+htMK2x7TZvcMguriz vrz2IL74vcC0z7TZLiZuYnNwO7X7tvO8rSDH0bn4uLggurizu7XluLLAuyC+yLO7x9i15biu uOcsIMikvcMgursgRS1tYWlswLsgud6w7SCx4rrQwMwgu/PHz7zMtNm46SC/67ytx8+9yr3D v8AuILTZvcO0wiC6uLO7wfYgvsrAuyCwzcDUtM+02S48L2ZvbnQ+PC9wPg0KICAgIDxwIHN0 eWxlPSJsaW5lLWhlaWdodDogMTZweDsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTog MCIgYWxpZ249ImxlZnQiPg0KICAgIDxmb250IHN0eWxlPSJmb250LXNpemU6IDlwdCI+tsfH 0SCw7bC0tNTAxyBFLW1haWzAuiCw1L3DxsfAuyDF68fYIL7LsNQNCiAgICC1x776wLi45yCw 7bC0tNTAxyBFLW1haWzAuyDBpr/cx9EgsLPAzr3Fu/PBpLq4v6EgtOvH2LyttMImbmJzcDvA /Mf0IL7LwfYguPjHz7DtIMDWu+e/wLTPIL7IvcnHz73DseIgudm2+LTPtNkuPC9mb250Pjwv cD4NCiAgICA8L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHdpZHRoPSI5NjYiIGhl aWdodD0iMTYiIGNvbHNwYW49IjIiPjxmb250IHN0eWxlPSJmb250LXNpemU6IDlwdCI+eG1s LXNpZ7TUwMcgPEEgSFJFRj1tYWlsdG86eG1sLXNpZ0BweXRob24ub3JnPrjewM/B1rzSPC9B PrTCIMDMIDxBIEhSRUY9Imh0dHA6Ly93d3cuNHN1aXRlLm9yZy9tYWlsaW5nbGlzdC5odG1s Ij7ApcbkwMzB9jwvQT6/obytILq4sO0gwMy3uLDUILjewM/AuyC15biztM+02S48L2ZvbnQ+ DQoNCiAgIDwvdGQ+DQogIDwvdHI+DQo8L3RhYmxlPg0KDQogIDwvY2VudGVyPg0KPC9kaXY+ DQoNCjwvYm9keT4NCg0KPC9odG1sPg0K ------=_NextPart_000_0217_01C0F53A.93A09C00-- From fdrake@acm.org Fri Feb 8 15:02:44 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 8 Feb 2002 10:02:44 -0500 Subject: [XML-SIG] Unexpected memory leak in Sax + _locator In-Reply-To: <6qvgd9o86b.fsf@abnoba.intevation.de> References: <6qvgd9o86b.fsf@abnoba.intevation.de> Message-ID: <15459.59540.308845.38102@grendel.zope.com> Bernhard Herzog writes: > 3. Use a weak reference proxy to the parser as the argument to > setDocumentLocator. I favor this approach myself. ;-) This is the kind of thing weakrefs are good at, and it keeps the code as simple as possible. The catch, of course, is that weakrefs are only available for Python 2.1 and newer. For this reason, it might be reasonable to use a more backward-compatible solution instead of weakrefs, but the cost is code complexity (though not a lot). But I'm happy if we only solve the problem for Python 2.1 and newer. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From bh@intevation.de Fri Feb 8 15:24:41 2002 From: bh@intevation.de (Bernhard Herzog) Date: 08 Feb 2002 16:24:41 +0100 Subject: [XML-SIG] Unexpected memory leak in Sax + _locator In-Reply-To: <15459.59540.308845.38102@grendel.zope.com> References: <6qvgd9o86b.fsf@abnoba.intevation.de> <15459.59540.308845.38102@grendel.zope.com> Message-ID: <6qr8nwro7a.fsf@abnoba.intevation.de> "Fred L. Drake, Jr." writes: > Bernhard Herzog writes: > > 3. Use a weak reference proxy to the parser as the argument to > > setDocumentLocator. > > I favor this approach myself. ;-) This is the kind of thing weakrefs > are good at, and it keeps the code as simple as possible. > > The catch, of course, is that weakrefs are only available for Python > 2.1 and newer. Well, for me this would be enough, and since the modules in question are part of the standard library, this may not be much of a problem. Not sure about the stand-alone PyXML, though. I haven't tested that one, so I don't even know whether it has the same problem. Bernhard -- Intevation GmbH http://intevation.de/ Sketch http://sketch.sourceforge.net/ MapIt! http://mapit.de/ From uche.ogbuji@fourthought.com Sat Feb 9 02:12:12 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 08 Feb 2002 19:12:12 -0700 Subject: [XML-SIG] [XLST PyXML-0.7-1] bug request 510080 still alive ? In-Reply-To: Message from Eric Boix of "Fri, 08 Feb 2002 10:21:56 +0100." <20020208102156.K26548@tux.creatis.insa-lyon.fr> Message-ID: <200202090212.g192CCF08958@localhost.localdomain> The following patch to the cookbook sample given works with 4Suite 0.12.0a1, or current CVS $ diff -u cook.py cook-new.py --- cook.py Fri Feb 8 19:04:36 2002 +++ cook-new.py Fri Feb 8 19:10:15 2002 @@ -1,5 +1,5 @@ -from xml.xslt.Processor import Processor -from xml.xslt.StylesheetReader import StylesheetReader +from Ft.Xml.Xslt.Processor import Processor +from Ft.Xml.Xslt.StylesheetReader import StylesheetReader class StylesheetFromDict(StylesheetReader): "A stylesheet reader that loads XSLT stylesheets from a python dictionary" @@ -20,11 +20,10 @@ if parts[0] == 'internal' and self.styles.has_key(parts[1]): # load the stylesheet from the internal repository (our dict) return StylesheetReader.fromString(self, self.styles[parts[1]], - baseUri, ownerDoc, stripElements) + baseUri) else: # revert to normal behaviour - return StylesheetReader.fromUri(self, uri, - baseUri, ownerDoc, stripElements) + return StylesheetReader.fromUri(self, uri, baseUri) if __name__ == "__main__": # the sample stylesheet repository $ python cook-new.py ::: Using cDomlette Guido van Rossum -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From Mailer-Daemon@open-school.net Sat Feb 9 17:05:13 2002 From: Mailer-Daemon@open-school.net (Mailer-Daemon) Date: Sat, 09 Feb 2002 17:05:13 +0000 Subject: [XML-SIG] NDN: XML-SIG digest, Vol 1 #1209 - 1 msg Message-ID: Sorry. Your message could not be delivered to: rich,Semantise Open-School (Multiple names were found at the remote site. Please be more specific.) From mal@lemburg.com Sun Feb 10 13:51:05 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Sun, 10 Feb 2002 14:51:05 +0100 Subject: [XML-SIG] WSDL library ? Message-ID: <3C667AC9.537F7330@lemburg.com> Is there a freely available WSDL lib for Python out there ? I know of one which is mentioned in a tutorial by Uche, but I'm unsure about the license on it. Would be nice to have such a lib in PyXML or 4Suite. Thanks, -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From rsalz@zolera.com Sun Feb 10 16:17:26 2002 From: rsalz@zolera.com (Rich Salz) Date: Sun, 10 Feb 2002 11:17:26 -0500 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> Message-ID: <3C669D16.2EE8564D@zolera.com> SOAPy (http://soapy.sf.net) can parse some WSDL/schema. No activity on the project for some time. A group of folks, organized by Paul Prescod of ActiveState, has come up with a WSDL API for introspection and remote invocation, intended to map to Python, Perl, TCL, etc. I believe they have a Python prototype, but the list has been quiet lately. I'm intending to add something, perhaps along the lines of Paul's stuff, to ZSI (http://pywbsvcs.sf.net). I'll either have enough time to work on it over the next month, or no time at all. Note that W3C has convened a WSDL working group; I'm on it, and we just had our first telecon call Thursday morning. I'm hoping there will be some really major changes in WSDL1.1 (esp soap-only, simplifying import, etc) and if that looks likely, then my work will track 1.1, not 1.0 /r$ -- Zolera Systems, Securing web services (XML, SOAP, Signatures, Encryption) http://www.zolera.com From Mailer-Daemon@open-school.net Sun Feb 10 17:00:22 2002 From: Mailer-Daemon@open-school.net (Mailer-Daemon) Date: Sun, 10 Feb 2002 17:00:22 +0000 Subject: [XML-SIG] NDN: XML-SIG digest, Vol 1 #1210 - 3 msgs Message-ID: Sorry. Your message could not be delivered to: rich,Semantise Open-School (Multiple names were found at the remote site. Please be more specific.) From lloyd@lancaster.lib.pa.us Sun Feb 10 18:11:26 2002 From: lloyd@lancaster.lib.pa.us (Eron Lloyd) Date: Sun, 10 Feb 2002 13:11:26 -0500 Subject: [XML-SIG] WSDL library ? Message-ID: <20020210181436.XKBH379.out019.verizon.net@there> --------------Boundary-00=_27XBJLWDN55MQIL2GW2F Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 8bit I've been playing with wsdllib, from a IBM developerWorks article by Uche. I've attached the actual module for you to look at. The article can be found here: http://www-105.ibm.com/developerworks/education.nsf/webservices-onlinecourse-bytitle/D092605075D1D67D86256A7E0042432D?OpenDocument Regards, Eron --------------Boundary-00=_27XBJLWDN55MQIL2GW2F Content-Type: text/x-python; charset="iso-8859-15"; name="wsdllib.py" Content-Transfer-Encoding: base64 Content-Description: WSDL Python module Content-Disposition: attachment; filename="wsdllib.py" IiIid3NkbDRweQoKVGhpcyBsaWJyYXJ5IGNhbiBiZSB1c2VkIHRvIHJlYWQgV1NETCBtZXNzYWdl cyBpbnRvIGEgcHl0aG9uIGNsYXNzIHN0cnVjdHVyZS4gIFlvdSBjYW4gYWxzbyBjcmVhdGUKbmV3 IGluc3RhbmNlcyBvZiB0aGUgV1NETCBjbGFzcyB0byBkZWZpbmUgbmV3IG1lc3NhZ2VzLgoKRXhh bXBsZTogIENyZWF0ZSBmb3JtIGEgVVJJCgp3c2RsID0gUmVhZEZyb21VcmkoJ2h0dHA6Ly9mb3Vy dGhvdWdodC5jb20vZGVmcy53c2RsJykKCkV4YW1wbGU6ICBDcmVhdGUgYSBuZXcgV1NETCBkZWZp bml0aW9uCgpmcm9tIHhtbC5kb20uZXh0IGltcG9ydCBQcmV0dHlQcmludAp3c2RsID0gV3NkbCgp Cm0gPSB3c2RsLmFkZE1lc3NhZ2UoJ21lc3NhZ2VOYW1lJykKbS5kb2N1bWVudGF0aW9uID0gJ0Rv Y3VtZW50YXRpb24gYWJvdXQgdGhlIG1lc3NhZ2UnCmQgPSB3c2RsLnRvRG9tKCkKUHJldHR5UHJp bnQoZCkKCkZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgSUJNIGRldmVsb3BlcldvcmtzIHR1 dG9yaWFsIG9uIHdzZGw0cHkgYXQKCmh0dHA6Ly93d3ctMTA1LmlibS5jb20vZGV2ZWxvcGVyd29y a3MvZWR1Y2F0aW9uLm5zZi93ZWJzZXJ2aWNlcy1vbmxpbmVjb3Vyc2UtYnl0aXRsZS9EMDkyNjA1 MDc1RDFENjdEODYyNTZBN0UwMDQyNDMyRD9PcGVuRG9jdW1lbnQKCihmcmVlIHJlZ2lzdHJhdGlv biByZXF1aXJlZCkKIiIiCgppbXBvcnQgdXJsbGliLCBVc2VyRGljdCwgY1N0cmluZ0lPCmZyb20g RnQuTGliIGltcG9ydCBwRG9tbGV0dGUKZnJvbSB4bWwgaW1wb3J0IHhwYXRoCmZyb20geG1sLnhw YXRoIGltcG9ydCBDb252ZXJzaW9ucwpmcm9tIHhtbC5kb20uZXh0IGltcG9ydCBQcmV0dHlQcmlu dCwgU3BsaXRRTmFtZQpmcm9tIHhtbC5kb20gaW1wb3J0IE5vZGUKCldTRExfTkFNRVNQQUNFPSdo dHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLycKCgojVGhlc2UgZXhwcmVzc2lvbnMgYXJl IHVzZWQgdG8gcHVsbCBpbmZvcm1hdGlvbiBmcm9tIGEgWE1MIGRvY3VtZW50CmdfbmFtZUV4cHJl c3Npb24gPSB4cGF0aC5Db21waWxlKCdzdHJpbmcoQG5hbWUpJykKZ190YXJnZXROYW1lc3BhY2VF eHByZXNzaW9uID0geHBhdGguQ29tcGlsZSgnc3RyaW5nKEB0YXJnZXROYW1lc3BhY2UpJykKZ19p bXBvcnRFeHByZXNzaW9uID0geHBhdGguQ29tcGlsZSgndzppbXBvcnQnKQpnX2RvY3VtZW50YXRp b25FeHByZXNzaW9uID0geHBhdGguQ29tcGlsZSgndzpkb2N1bWVudGF0aW9uJykKZ190eXBlc0V4 cHJlc3Npb24gPSB4cGF0aC5Db21waWxlKCd3OnR5cGVzJykKZ19tZXNzYWdlc0V4cHJlc3Npb24g PSB4cGF0aC5Db21waWxlKCd3Om1lc3NhZ2UnKQpnX3BvcnRUeXBlc0V4cHJlc3Npb24gPSB4cGF0 aC5Db21waWxlKCd3OnBvcnRUeXBlJykKZ19iaW5kaW5nc0V4cHJlc3Npb24gPSB4cGF0aC5Db21w aWxlKCd3OmJpbmRpbmcnKQpnX3NlcnZpY2VzRXhwcmVzc2lvbiA9IHhwYXRoLkNvbXBpbGUoJ3c6 c2VydmljZScpCmdfcGFydHNFeHByZXNzaW9uID0geHBhdGguQ29tcGlsZSgndzpwYXJ0JykKZ19v cGVyYXRpb25zRXhwcmVzc2lvbiA9IHhwYXRoLkNvbXBpbGUoJ3c6b3BlcmF0aW9uJykKZ19pbnB1 dEV4cHJlc3Npb24gPSB4cGF0aC5Db21waWxlKCd3OmlucHV0JykKZ19vdXRwdXRFeHByZXNzaW9u ID0geHBhdGguQ29tcGlsZSgndzpvdXRwdXQnKQpnX2ZhdWx0RXhwcmVzc2lvbiA9IHhwYXRoLkNv bXBpbGUoJ3c6ZmF1bHQnKQpnX3BvcnRzRXhwcmVzc2lvbiA9IHhwYXRoLkNvbXBpbGUoJ3c6cG9y dCcpCgpkZWYgUmVhZEZyb21TdHJlYW0oc3RyZWFtKToKICAgICIiIlJlYWQgaW4gYSBXU0RMIG1l c3NhZ2UgZnJvbSBhIHN0ZWFtIG9iamVjdCIiIgogICAgd3MgPSBXc2RsKCkKICAgIHJlYWRlciA9 IHBEb21sZXR0ZS5QeUV4cGF0UmVhZGVyKCkKICAgIGRvbSA9IHJlYWRlci5mcm9tU3RyZWFtKHN0 cmVhbSkKICAgIHdzLmZyb21Eb20oZG9tKQogICAgcmVhZGVyLnJlbGVhc2VOb2RlKGRvbSkKICAg IHJldHVybiB3cwoKCmRlZiBSZWFkRnJvbVN0cmluZyhzdCk6CiAgICAiIiJSZWFkIGluIGEgV1NE TCBtZXNzYWdlIGZyb20gYSBzdHJpbmciIiIKICAgIHN0ID0gY1N0cmluZ0lPLlN0cmluZ0lPKHN0 KQogICAgcmV0dXJuIFJlYWRGcm9tU3RyZWFtKHN0KQoKZGVmIFJlYWRGcm9tVXJpKHVyaSk6CiAg ICAiIiJSZWFkIGluIGEgV1NETCBtZXNzYWdlIGZyb20gYSBVUkkiIiIKICAgIHN0ID0gdXJsbGli LnVybG9wZW4odXJpKQogICAgd3MgPSBSZWFkRnJvbVN0cmVhbShzdCkKICAgIHN0LmNsb3NlKCkK ICAgIHJldHVybiB3cwogICAgCgpjbGFzcyBXc2RsOgogICAgIiIiVGhpcyBjbGFzcyByZXByZXNl bnRzIHRoZSBlbnRpcmUgV1NETCBkZWZpbml0aW9uLiAgSXQgY2FuIGJlIGNyZWF0ZWQgZnJvbSBv bmUgb2YgdGhlIGFib3ZlCiAgICBjb25zdHJ1Y3RvciBmdW5jdGlvbnMsIG9yIGEgbmV3IGluc3Rh bmNlIGNhbiBiZSBjcmVhdGVkIGFuZCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgY2xhc3Mgc2V0CiAg ICBtYW51YWxseS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi50eXBl cyA9IFR5cGVzKCkKICAgICAgICBzZWxmLm1lc3NhZ2VzID0gTWVzc2FnZXMoKQogICAgICAgIHNl bGYucG9ydFR5cGVzID0gUG9ydFR5cGVzKCkKICAgICAgICBzZWxmLmJpbmRpbmdzID0gQmluZGlu Z3MoKQogICAgICAgIHNlbGYuc2VydmljZXMgPSBTZXJ2aWNlcygpCgogICAgICAgIHNlbGYubmFt ZSA9ICcnCiAgICAgICAgc2VsZi50YXJnZXROYW1lc3BhY2UgPSAnJwogICAgICAgIHNlbGYuZG9j dW1lbnRhdGlvbiA9ICcnCgoKICAgIGRlZiBmcm9tRG9tKHNlbGYsZG9tKToKICAgICAgICAiIiJS ZWFkIGluIGEgV1NETCBkZWZpbml0aW9uIGZyb20gRE9NLiAgVGhpcyBpcyBjYWxsZWQgYnkgdGhl IFJlYWQqIG1ldGhvZHMgYXQgdGhlIHRvcCBvZiB0aGUgbW9kdWxlIiIiCgogICAgICAgIGNvbiA9 IHhwYXRoLkNvbnRleHQuQ29udGV4dChkb20uZG9jdW1lbnRFbGVtZW50LCBwcm9jZXNzb3JOc3M9 eyd3JzogV1NETF9OQU1FU1BBQ0V9KQoKICAgICAgICBzZWxmLnNldE5hbWUoZ19uYW1lRXhwcmVz c2lvbi5ldmFsdWF0ZShjb24pKQogICAgICAgIHNlbGYuc2V0VGFyZ2V0TmFtZXNwYWNlKGdfdGFy Z2V0TmFtZXNwYWNlRXhwcmVzc2lvbi5ldmFsdWF0ZShjb24pKQoKICAgICAgICBpbXBvcnRzID0g Z19pbXBvcnRFeHByZXNzaW9uLmV2YWx1YXRlKGNvbikKICAgICAgICBmb3IgaSBpbiBpbXBvcnRz OgogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkltcG9ydHMgbm90IHN1cHBvcnRlZCIpCgog ICAgICAgIGRvY3MgPSBnX2RvY3VtZW50YXRpb25FeHByZXNzaW9uLmV2YWx1YXRlKGNvbikKICAg ICAgICBpZiBkb2NzOgogICAgICAgICAgICBzZWxmLnNldERvY3VtZW50YXRpb24oQ29udmVyc2lv bnMuU3RyaW5nVmFsdWUoZG9jc1swXSkpCgogICAgICAgIHR5cGVzID0gZ190eXBlc0V4cHJlc3Np b24uZXZhbHVhdGUoY29uKQogICAgICAgIHNlbGYudHlwZXMuZnJvbURvbSh0eXBlcykKCiAgICAg ICAgbWVzc2FnZXMgPSBnX21lc3NhZ2VzRXhwcmVzc2lvbi5ldmFsdWF0ZShjb24pCiAgICAgICAg c2VsZi5tZXNzYWdlcy5mcm9tRG9tKG1lc3NhZ2VzKQoKICAgICAgICBwb3J0VHlwZXMgPSBnX3Bv cnRUeXBlc0V4cHJlc3Npb24uZXZhbHVhdGUoY29uKQogICAgICAgIHNlbGYucG9ydFR5cGVzLmZy b21Eb20ocG9ydFR5cGVzKQoKICAgICAgICBiaW5kaW5ncyA9IGdfYmluZGluZ3NFeHByZXNzaW9u LmV2YWx1YXRlKGNvbikKICAgICAgICBzZWxmLmJpbmRpbmdzLmZyb21Eb20oYmluZGluZ3MpCgog ICAgICAgIHNlcnZpY2VzID0gZ19zZXJ2aWNlc0V4cHJlc3Npb24uZXZhbHVhdGUoY29uKQogICAg ICAgIHNlbGYuc2VydmljZXMuZnJvbURvbShzZXJ2aWNlcykKICAgIAoKICAgIGRlZiBzZXROYW1l KHNlbGYsbmV3TmFtZSk6CiAgICAgICAgIiIiQ2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBkZWZpbml0 aW9uIiIiCiAgICAgICAgc2VsZi5uYW1lID0gbmV3TmFtZQoKICAgIGRlZiBzZXRUYXJnZXROYW1l c3BhY2Uoc2VsZixuZXdUbnMpOgogICAgICAgICIiIkNoYW5nZSB0aGUgdGFyZ2V0IG5hbWVzcGFj ZSBvZiB0aGUgZGVmaW5pdGlvbiIiIgogICAgICAgIHNlbGYudGFyZ2V0TmFtZXNwYWNlID0gbmV3 VG5zCgogICAgZGVmIHNldERvY3VtZW50YXRpb24oc2VsZixkb2N1bWVudGF0aW9uKToKICAgICAg ICBzZWxmLmRvY3VtZW50YXRpb24gPSBkb2N1bWVudGF0aW9uCgogICAgZGVmIHRvRG9tKHNlbGYp OgogICAgICAgICIiIkdlbmVyYXRlIGEgRE9NIGRvY3VtZW50IGZvciB0aGUgY3VycmVudCBXU0RM IGRlZmluaXRpb24gc3RydWN0dXJlIiIiCiAgICAgICAgZG9jID0gcERvbWxldHRlLkRvY3VtZW50 KCkKICAgICAgICBkZWZzID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhXU0RMX05BTUVTUEFDRSwnd3Nk bDpkZWZpbml0aW9ucycpCgogICAgICAgIGlmIHNlbGYubmFtZToKICAgICAgICAgICAgZGVmcy5z ZXRBdHRyaWJ1dGVOUygnJywnbmFtZScsc2VsZi5uYW1lKQogICAgICAgIGlmIHNlbGYudGFyZ2V0 TmFtZXNwYWNlOgogICAgICAgICAgICBkZWZzLnNldEF0dHJpYnV0ZU5TKCcnLCd0YXJnZXROYW1l c3BhY2UnLHNlbGYudGFyZ2V0TmFtZXNwYWNlKQoKICAgICAgICBEb2N1bWVudGF0aW9uVG9Eb20o ZGVmcyxzZWxmLmRvY3VtZW50YXRpb24pCgogICAgICAgIGRvYy5hcHBlbmRDaGlsZChkZWZzKQoK ICAgICAgICBzZWxmLnR5cGVzLnRvRG9tKGRvYykKICAgICAgICBzZWxmLm1lc3NhZ2VzLnRvRG9t KGRvYykKICAgICAgICBzZWxmLnBvcnRUeXBlcy50b0RvbShkb2MpCiAgICAgICAgc2VsZi5iaW5k aW5ncy50b0RvbShkb2MpCiAgICAgICAgc2VsZi5zZXJ2aWNlcy50b0RvbShkb2MpCgogICAgICAg IHJldHVybiBkb2MKICAgICAgICAKCiAgICBkZWYgdmFsaWRhdGUoc2VsZik6CiAgICAgICAgIiIi VmFsaWRhdGUgdGhlIGN1cnJlbnQgV1NETCBzdHJ1Y3R1cmUuICBQZXJmb3JtIGNoZWNrcyB0aGF0 IGFsbCBvZiB0aGUgaW50ZXJjb25uZWN0ZWQgcGFydHMgKG1lc3NhZ2VzLAogICAgICAgIHBvcnRU eXBlcywgc2VydmljZXMsIGV0YykgcmVmZXJlbmNlIHZhbGlkIGRlZmluaXRpb25zIiIiCgoKICAg ICAgICAjRklYTUUgV2UgY2Fubm90IHZhbGlkYXRlIG1lc3NhZ2VzIHRvIGRlZmluaXRpb25zIGJl Y2F1c2Ugd2UgYXJlIHVuYWJsZSB0byBwYXJzZSB0aGUgZGVmaW5pdGlvbgoKICAgICAgICBzZWxm LnBvcnRUeXBlcy52YWxpZGF0ZShzZWxmLm1lc3NhZ2VzKQogICAgICAgIHNlbGYuYmluZGluZ3Mu dmFsaWRhdGUoc2VsZi5wb3J0VHlwZXMpCiAgICAgICAgI3NlbGYuc2VydmljZXMudmFsaWRhdGUo c2VsZi5iaW5kaW5ncykKCgpjbGFzcyBUeXBlczoKICAgICIiIkEgcmVwcmVzZW50YXRpb24gb2Yg dGhlIHR5cGUgZGVmaW5pdGlvbnMgaW4gYSBXU0RMIGRlZmluaXRpb24uICBUaGlzIHdpbGwgc29t ZSBkYXkgYmUKICAgIGluY29ycG9yYXRlZCBpbnRvIGEgc2NoZW1hIHBhcnNlciB0aGF0IGNhbiB2 YWxpZGF0ZSB0aGF0IHRoZSB0eXBlIGRlZmluaXRpb25zIGFyZSB2YWxpZC4gIEN1cnJlbnRseQog ICAgaXQgc3RvcmVzIHRoZSBzdHJpbmdzIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0eXBlIGRlZmlu aXRpb24uIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuZG9jdW1lbnRh dGlvbiA9ICIiCiAgICAgICAgc2VsZi5kZWZpbml0aW9ucyA9IFtdCgogICAgZGVmIGZyb21Eb20o c2VsZix0eXBlTm9kZXMpOgogICAgICAgICIiIkNyZWF0ZSBhIG5ldyB0eXBlIGRlZmluaXRpb24g ZnJvbSBhIERPTS4gIEdlbmVyYWxseSBjYWxsZWQgYnkgV3NkbC5mcm9tRG9tIiIiCgogICAgICAg IGlmIG5vdCBsZW4odHlwZU5vZGVzKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHlwZXMg PSB0eXBlTm9kZXNbMF0KICAgICAgICBjb24gPSB4cGF0aC5Db250ZXh0LkNvbnRleHQodHlwZXMs IHByb2Nlc3Nvck5zcz17J3cnOiBXU0RMX05BTUVTUEFDRX0pCiAgICAgICAgZG9jcyA9IGdfZG9j dW1lbnRhdGlvbkV4cHJlc3Npb24uZXZhbHVhdGUoY29uKQogICAgICAgIGlmIGRvY3M6CiAgICAg ICAgICAgIHNlbGYuc2V0RG9jdW1lbnRhdGlvbihDb252ZXJzaW9ucy5TdHJpbmdWYWx1ZShkb2Nz WzBdKSkKCiAgICAgICAgZm9yIGNoaWxkIGluIHR5cGVzLmNoaWxkTm9kZXM6CiAgICAgICAgICAg IGlmIGNoaWxkLm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICAgICAgICAg Y29udGludWUKICAgICAgICAgICAgc2VsZi5kZWZpbml0aW9ucy5hcHBlbmQoRXh0ZW5zaW9uRnJv bURvbShjaGlsZCkpCgogICAgZGVmIHRvRG9tKHNlbGYsZG9jKToKICAgICAgICAiIiJHZW5lcmF0 ZSB0aGUgRE9NIGVxdWl2YWxlbnQgZm9yIHRoaXMgdHlwZSBkZWZpbml0aW9uLiAgR2VuZXJhbGx5 IGNhbGxlZCBieSBXc2RsLnRvRG9tIiIiCgogICAgICAgIGRlID0gZG9jLmRvY3VtZW50RWxlbWVu dAogICAgICAgIHR5cGVzID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhXU0RMX05BTUVTUEFDRSwnd3Nk bDp0eXBlcycpCiAgICAgICAgRG9jdW1lbnRhdGlvblRvRG9tKHR5cGVzLHNlbGYuZG9jdW1lbnRh dGlvbikKICAgICAgICBFeHRlbnNpb25zVG9Eb20odHlwZXMsc2VsZi5kZWZpbml0aW9ucykKICAg ICAgICBkZS5hcHBlbmRDaGlsZCh0eXBlcykKCgpjbGFzcyBNZXNzYWdlcyhVc2VyRGljdC5Vc2Vy RGljdCk6CgogICAgZGVmIGFkZE1lc3NhZ2Uoc2VsZixuYW1lLGRvY3VtZW50YXRpb24gPSAiIik6 CiAgICAgICAgIiIiQWRkIGEgbmV3IG1lc3NhZ2UgdG8gdGhlIFdTREwgZGVmaW5pdGlvbiIiIgog ICAgICAgIGlmIHNlbGYuaGFzX2tleShuYW1lKToKICAgICAgICAgICAgcmFpc2UgV3NkbEV4Y2Vw dGlvbigiTWVzc2FnZSAlcyBhbHJlYWR5IGV4aXN0cyIgJSBuYW1lKQogICAgICAgIG0gPSBNZXNz YWdlKG5hbWUpCiAgICAgICAgbS5kb2N1bWVudGF0aW9uID0gZG9jdW1lbnRhdGlvbgogICAgICAg IHNlbGZbbmFtZV0gPSBtCiAgICAgICAgcmV0dXJuIG0KCiAgICBkZWYgZnJvbURvbShzZWxmLG1l c3NhZ2VzKToKICAgICAgICBmb3IgbSBpbiBtZXNzYWdlczoKICAgICAgICAgICAgY29uID0geHBh dGguQ29udGV4dC5Db250ZXh0KG0sIHByb2Nlc3Nvck5zcz17J3cnOiBXU0RMX05BTUVTUEFDRX0p CiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gPSBEb2N1bWVudGF0aW9uRnJvbURvbShjb24pCiAg ICAgICAgICAgIG1zZyA9IHNlbGYuYWRkTWVzc2FnZShtLmdldEF0dHJpYnV0ZU5TKCcnLCduYW1l JyksZG9jdW1lbnRhdGlvbikKCiAgICAgICAgICAgIHBhcnRzID0gZ19wYXJ0c0V4cHJlc3Npb24u ZXZhbHVhdGUoY29uKQogICAgICAgICAgICBmb3IgcCBpbiBwYXJ0czoKICAgICAgICAgICAgICAg IG4gPSBwLmdldEF0dHJpYnV0ZU5TKCcnLCduYW1lJykKICAgICAgICAgICAgICAgIGVsZW1lbnQg PSBwLmdldEF0dHJpYnV0ZU5TKCcnLCdlbGVtZW50JykKICAgICAgICAgICAgICAgIF90eXBlID0g cC5nZXRBdHRyaWJ1dGVOUygnJywndHlwZScpCiAgICAgICAgICAgICAgICBtc2cuYWRkUGFydChu LGVsZW1lbnQsX3R5cGUpICAgICAgICAgICAgCgogICAgZGVmIHRvRG9tKHNlbGYsZG9jKToKICAg ICAgICBmb3IgbWVzc2FnZSBpbiBzZWxmLnZhbHVlcygpOgogICAgICAgICAgICBtZXNzYWdlLnRv RG9tKGRvYykKCmNsYXNzIE1lc3NhZ2U6CiAgICBkZWYgX19pbml0X18oc2VsZixuYW1lKToKICAg ICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5kb2N1bWVudGF0aW9uID0gIiIKICAg ICAgICBzZWxmLnBhcnRzID0ge30KCgogICAgZGVmIGFkZFBhcnQoc2VsZixuYW1lLGVsZW1lbnQ9 JycsX3R5cGU9JycpOgogICAgICAgICIiIkFkZCBhIG5ldyBwYXJ0IHRvIGEgbWVzc2FnZSIiIgog ICAgICAgIGlmIHNlbGYucGFydHMuaGFzX2tleShuYW1lKToKICAgICAgICAgICAgcmFpc2UgV3Nk bEV4Y2VwdGlvbigiTWVzc2FnZSAlcyBhbHJlYWR5IGhhcyBwYXJ0ICVzIGV4aXN0cyIgJSAoc2Vs Zi5uYW1lLG5hbWUpKQogICAgICAgIHAgPSBQYXJ0KG5hbWUpCiAgICAgICAgcC5lbGVtZW50ID0g ZWxlbWVudAogICAgICAgIHAudHlwZSA9IF90eXBlCiAgICAgICAgc2VsZi5wYXJ0c1tuYW1lXSA9 IHAKICAgICAgICByZXR1cm4gcAogICAgICAgIAoKICAgIGRlZiB0b0RvbShzZWxmLGRvYyk6CiAg ICAgICAgZGUgPSBkb2MuZG9jdW1lbnRFbGVtZW50CiAgICAgICAgbSA9IGRvYy5jcmVhdGVFbGVt ZW50TlMoV1NETF9OQU1FU1BBQ0UsJ3dzZGw6bWVzc2FnZScpCiAgICAgICAgbS5zZXRBdHRyaWJ1 dGVOUygnJywnbmFtZScsc2VsZi5uYW1lKQogICAgICAgIERvY3VtZW50YXRpb25Ub0RvbShtLHNl bGYuZG9jdW1lbnRhdGlvbikKICAgICAgICBmb3IgcCBpbiBzZWxmLnBhcnRzLnZhbHVlcygpOgog ICAgICAgICAgICBwLnRvRG9tKG0pCiAgICAgICAgZGUuYXBwZW5kQ2hpbGQobSkKCgpjbGFzcyBQ YXJ0OgogICAgZGVmIF9faW5pdF9fKHNlbGYsbmFtZSk6CiAgICAgICAgc2VsZi5uYW1lID0gbmFt ZQogICAgICAgIHNlbGYuZWxlbWVudCA9ICIiCiAgICAgICAgc2VsZi50eXBlID0gIiIKCiAgICBk ZWYgdG9Eb20oc2VsZixtZXNzYWdlKToKICAgICAgICBkb2MgPSBtZXNzYWdlLm93bmVyRG9jdW1l bnQKICAgICAgICBwID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhXU0RMX05BTUVTUEFDRSwnd3NkbDpw YXJ0JykKICAgICAgICBwLnNldEF0dHJpYnV0ZU5TKCcnLCduYW1lJyxzZWxmLm5hbWUpCiAgICAg ICAgaWYgc2VsZi5lbGVtZW50OgogICAgICAgICAgICBwLnNldEF0dHJpYnV0ZU5TKCcnLCdlbGVt ZW50JyxzZWxmLmVsZW1lbnQpCiAgICAgICAgaWYgc2VsZi50eXBlOgogICAgICAgICAgICBwLnNl dEF0dHJpYnV0ZU5TKCcnLCd0eXBlJyxzZWxmLnR5cGUpCiAgICAgICAgICAgIAogICAgICAgIG1l c3NhZ2UuYXBwZW5kQ2hpbGQocCkKICAgICAgICAKCmNsYXNzIFBvcnRUeXBlcyhVc2VyRGljdC5V c2VyRGljdCk6CgogICAgZGVmIGFkZFBvcnRUeXBlKHNlbGYsbmFtZSxkb2N1bWVudGF0aW9uPScn KToKICAgICAgICAiIiJBZGQgYSBuZXcgcG9ydCB0eXBlIHRvIHRoZSBkZWZpbml0aW9uIiIiCiAg ICAgICAgaWYgc2VsZi5oYXNfa2V5KG5hbWUpOgogICAgICAgICAgICByYWlzZSBXc2RsRXhjZXB0 aW9uKCJQb3J0IFR5cGUgJXMgYWxyZWFkeSBleGlzdHMiICUgKG5hbWUpKQogICAgICAgIHB0ID0g UG9ydFR5cGUobmFtZSkKICAgICAgICBwdC5kb2N1bWVudGF0aW9uID0gZG9jdW1lbnRhdGlvbgog ICAgICAgIHNlbGZbbmFtZV0gPSBwdAogICAgICAgIHJldHVybiBwdAoKICAgIGRlZiBmcm9tRG9t KHNlbGYscG9ydFR5cGVzKToKCiAgICAgICAgZm9yIHB0IGluIHBvcnRUeXBlczoKICAgICAgICAg ICAgaWYgcHQubm9kZVR5cGUgIT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAgICAgICAgICAgICBj b250aW51ZQogICAgICAgICAgICBjb24gPSB4cGF0aC5Db250ZXh0LkNvbnRleHQocHQsIHByb2Nl c3Nvck5zcz17J3cnOiBXU0RMX05BTUVTUEFDRX0pCgogICAgICAgICAgICBkb2N1bWVudGF0aW9u ID0gRG9jdW1lbnRhdGlvbkZyb21Eb20oY29uKQogICAgICAgICAgICBwID0gc2VsZi5hZGRQb3J0 VHlwZShwdC5nZXRBdHRyaWJ1dGVOUygnJywnbmFtZScpLGRvY3VtZW50YXRpb24pCgogICAgICAg ICAgICBvcGVyYXRpb25zID0gZ19vcGVyYXRpb25zRXhwcmVzc2lvbi5ldmFsdWF0ZShjb24pCiAg ICAgICAgICAgIGZvciBvcCBpbiBvcGVyYXRpb25zOgogICAgICAgICAgICAgICAgY29uID0geHBh dGguQ29udGV4dC5Db250ZXh0KG9wLCBwcm9jZXNzb3JOc3M9eyd3JzogV1NETF9OQU1FU1BBQ0V9 KQogICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiA9IERvY3VtZW50YXRpb25Gcm9tRG9tKGNv bikKICAgICAgICAgICAgICAgIG8gPSBwLmFkZE9wZXJhdGlvbihvcC5nZXRBdHRyaWJ1dGVOUygn JywnbmFtZScpLGRvY3VtZW50YXRpb24pCiAgICAgICAgICAgICAgICBzZWxmLl9faW5wdXRGcm9t RG9tKGNvbixvKQogICAgICAgICAgICAgICAgc2VsZi5fX291dHB1dEZyb21Eb20oY29uLG8pCiAg ICAgICAgICAgICAgICBzZWxmLl9fZmF1bHRzRnJvbURvbShjb24sbykKCiAgICBkZWYgdG9Eb20o c2VsZixkb2MpOgogICAgICAgIGZvciBwdCBpbiBzZWxmLnZhbHVlcygpOgogICAgICAgICAgICBw dC50b0RvbShkb2MpCgoKICAgIGRlZiB2YWxpZGF0ZShzZWxmLG1lc3NhZ2VzKToKICAgICAgICAi IiJNYWtlIHN1cmUgYWxsIG9mIG91ciBvcGVyYXRpb25zIGhhdmUgdmFsaWRlIGlucHV0cyBhbmQg b3V0cHV0cyIiIgogICAgICAgIGZvciBwdCBpbiBzZWxmLnZhbHVlcygpOgogICAgICAgICAgICBw dC52YWxpZGF0ZShtZXNzYWdlcykKICAgICAgICAKCiAgICBkZWYgX19pbnB1dEZyb21Eb20oc2Vs Zixjb24sbyk6CiAgICAgICAgaW5wdXQgPSBnX2lucHV0RXhwcmVzc2lvbi5ldmFsdWF0ZShjb24p CiAgICAgICAgaWYgbGVuKGlucHV0KToKICAgICAgICAgICAgaW5wdXQgPSBpbnB1dFswXQogICAg ICAgICAgICBtc2cgPSBpbnB1dC5nZXRBdHRyaWJ1dGVOUygnJywnbWVzc2FnZScpCiAgICAgICAg ICAgIG5hbWUgPSBpbnB1dC5nZXRBdHRyaWJ1dGVOUygnJywnbmFtZScpCiAgICAgICAgICAgIGlj b24gPSB4cGF0aC5Db250ZXh0LkNvbnRleHQoaW5wdXQsIHByb2Nlc3Nvck5zcz17J3cnOiBXU0RM X05BTUVTUEFDRX0pCiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gPSBEb2N1bWVudGF0aW9uRnJv bURvbShpY29uKQogICAgICAgICAgICBvLnNldElucHV0KG1zZyxuYW1lLGRvY3VtZW50YXRpb24p CgogICAgZGVmIF9fb3V0cHV0RnJvbURvbShzZWxmLGNvbixvKToKICAgICAgICBvdXRwdXQgPSBn X291dHB1dEV4cHJlc3Npb24uZXZhbHVhdGUoY29uKQogICAgICAgIGlmIGxlbihvdXRwdXQpOgog ICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXRbMF0KICAgICAgICAgICAgbXNnID0gb3V0cHV0Lmdl dEF0dHJpYnV0ZU5TKCcnLCdtZXNzYWdlJykKICAgICAgICAgICAgbmFtZSA9IG91dHB1dC5nZXRB dHRyaWJ1dGVOUygnJywnbmFtZScpCiAgICAgICAgICAgIG9jb24gPSB4cGF0aC5Db250ZXh0LkNv bnRleHQob3V0cHV0LCBwcm9jZXNzb3JOc3M9eyd3JzogV1NETF9OQU1FU1BBQ0V9KQogICAgICAg ICAgICBkb2N1bWVudGF0aW9uID0gRG9jdW1lbnRhdGlvbkZyb21Eb20ob2NvbikKICAgICAgICAg ICAgby5zZXRPdXRwdXQobXNnLG5hbWUsZG9jdW1lbnRhdGlvbikKCiAgICBkZWYgX19mYXVsdHNG cm9tRG9tKHNlbGYsY29uLG8pOgogICAgICAgIGZhdWx0cyA9IGdfZmF1bHRFeHByZXNzaW9uLmV2 YWx1YXRlKGNvbikKICAgICAgICBmb3IgZmF1bHQgaW4gZmF1bHRzOgogICAgICAgICAgICBtc2cg PSBmYXVsdC5nZXRBdHRyaWJ1dGVOUygnJywnbWVzc2FnZScpCiAgICAgICAgICAgIG5hbWUgPSBm YXVsdC5nZXRBdHRyaWJ1dGVOUygnJywnbmFtZScpCiAgICAgICAgICAgIGZjb24gPSB4cGF0aC5D b250ZXh0LkNvbnRleHQoZmF1bHQsIHByb2Nlc3Nvck5zcz17J3cnOiBXU0RMX05BTUVTUEFDRX0p CiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gPSBEb2N1bWVudGF0aW9uRnJvbURvbShmY29uKQog ICAgICAgICAgICBvLmFkZEZhdWx0KG5hbWUsbXNnLGRvY3VtZW50YXRpb24pCgoKICAgICAgICAK CmNsYXNzIFBvcnRUeXBlOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLG5hbWUpOgogICAgICAgIHNl bGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLmRvY3VtZW50YXRpb24gPSAiIgogICAgICAgIHNl bGYub3BlcmF0aW9ucyA9IHt9CgoKICAgIGRlZiBhZGRPcGVyYXRpb24oc2VsZixuYW1lLGRvY3Vt ZW50YXRpb249JycpOgogICAgICAgICIiIkFkZCBhIG5ldyBvcGVyYXRpb24gdG8gYSBwb3J0IHR5 cGUiIiIKICAgICAgICBpZiBzZWxmLm9wZXJhdGlvbnMuaGFzX2tleShuYW1lKToKICAgICAgICAg ICAgcmFpc2UgV3NkbEV4Y2VwdGlvbigiUG9ydCBUeXBlICVzIGFscmVhZHkgaGFzIG9wZXJhdGlv biAlcyIgJSAoc2VsZi5uYW1lLG5hbWUpKQogICAgICAgIG8gPSBPcGVyYXRpb24obmFtZSkKICAg ICAgICBvLmRvY3VtZW50YXRpb24gPSBkb2N1bWVudGF0aW9uCiAgICAgICAgc2VsZi5vcGVyYXRp b25zW25hbWVdID0gbwogICAgICAgIHJldHVybiBvCiAgICAgICAgCgogICAgZGVmIHRvRG9tKHNl bGYsZG9jKToKICAgICAgICBkZSA9IGRvYy5kb2N1bWVudEVsZW1lbnQKCiAgICAgICAgcHQgPSBk b2MuY3JlYXRlRWxlbWVudE5TKFdTRExfTkFNRVNQQUNFLCd3c2RsOnBvcnRUeXBlJykKICAgICAg ICBwdC5zZXRBdHRyaWJ1dGVOUygnJywnbmFtZScsc2VsZi5uYW1lKQogICAgICAgIERvY3VtZW50 YXRpb25Ub0RvbShwdCxzZWxmLmRvY3VtZW50YXRpb24pCiAgICAgICAgZm9yIG9wIGluIHNlbGYu b3BlcmF0aW9ucy52YWx1ZXMoKToKICAgICAgICAgICAgb3AudG9Eb20ocHQpCiAgICAgICAgCiAg ICAgICAgZGUuYXBwZW5kQ2hpbGQocHQpCgogICAgZGVmIHZhbGlkYXRlKHNlbGYsbWVzc2FnZXMp OgogICAgICAgICIiIk1ha2Ugc3VyZSBhbGwgb2Ygb3VyIG9wZXJhdGlvbnMgaGF2ZSB2YWxpZCBp bnB1dHMsIG91dHB1dHMgYW5kIGZhdWx0cyIiIgogICAgICAgIGZvciBvcCBpbiBzZWxmLm9wZXJh dGlvbnMudmFsdWVzKCk6CiAgICAgICAgICAgIG9wLnZhbGlkYXRlKG1lc3NhZ2VzKQogICAgICAg IAoKCmNsYXNzIE9wZXJhdGlvbjoKCiAgICBkZWYgX19pbml0X18oc2VsZixuYW1lKToKICAgICAg ICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5kb2N1bWVudGF0aW9uID0gIiIKICAgICAg ICBzZWxmLmlucHV0ID0gTm9uZQogICAgICAgIHNlbGYub3V0cHV0ID0gTm9uZQogICAgICAgIHNl bGYuZmF1bHRzID0ge30KCiAgICBkZWYgYWRkRmF1bHQoc2VsZixuYW1lLG1lc3NhZ2UsZG9jdW1l bnRhdGlvbj0nJyk6CiAgICAgICAgIiIiQWRkIGEgbmV3IGZhdWx0IHRvIHRoZSBvcGVyYXRpb24i IiIKICAgICAgICBpZiBzZWxmLmZhdWx0cy5oYXNfa2V5KG5hbWUpOgogICAgICAgICAgICByYWlz ZSBXc2RsRXhjZXB0aW9uKCJPcGVyYXRpb24gJXMgYWxyZWFkeSBoYXMgZmF1bHQgJXMiICUgKHNl bGYubmFtZSxuYW1lKSkKCiAgICAgICAgZiA9IEZhdWx0KG5hbWUsbWVzc2FnZSkKICAgICAgICBm LmRvY3VtZW50YXRpb24gPSBkb2N1bWVudGF0aW9uCiAgICAgICAgc2VsZi5mYXVsdHNbbmFtZV0g PSBmCiAgICAgICAgcmV0dXJuIGYKCgogICAgZGVmIHNldElucHV0KHNlbGYsbWVzc2FnZSxuYW1l PScnLGRvY3VtZW50YXRpb249JycpOgogICAgICAgIGkgPSBJbnB1dChtZXNzYWdlKQogICAgICAg IGkubmFtZSA9IG5hbWUKICAgICAgICBpLmRvY3VtZW50YXRpb24gPSBkb2N1bWVudGF0aW9uCiAg ICAgICAgc2VsZi5pbnB1dCA9IGkKICAgICAgICByZXR1cm4gaQoKICAgIGRlZiBzZXRPdXRwdXQo c2VsZixtZXNzYWdlLG5hbWU9JycsZG9jdW1lbnRhdGlvbj0nJyk6CiAgICAgICAgbyA9IE91dHB1 dChtZXNzYWdlKQogICAgICAgIG8ubmFtZSA9IG5hbWUKICAgICAgICBvLmRvY3VtZW50YXRpb24g PSBkb2N1bWVudGF0aW9uCiAgICAgICAgc2VsZi5vdXRwdXQgPSBvCiAgICAgICAgcmV0dXJuIG8K CgogICAgZGVmIHRvRG9tKHNlbGYscG9ydFR5cGUpOgogICAgICAgIGRvYyA9IHBvcnRUeXBlLm93 bmVyRG9jdW1lbnQKCiAgICAgICAgb3AgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFdTRExfTkFNRVNQ QUNFLCd3c2RsOm9wZXJhdGlvbicpCiAgICAgICAgb3Auc2V0QXR0cmlidXRlTlMoJycsJ25hbWUn LHNlbGYubmFtZSkKCiAgICAgICAgRG9jdW1lbnRhdGlvblRvRG9tKG9wLHNlbGYuZG9jdW1lbnRh dGlvbikKCiAgICAgICAgaWYgc2VsZi5pbnB1dDoKICAgICAgICAgICAgc2VsZi5pbnB1dC50b0Rv bShvcCkKICAgICAgICBpZiBzZWxmLm91dHB1dDoKICAgICAgICAgICAgc2VsZi5vdXRwdXQudG9E b20ob3ApCiAgICAgICAgZm9yIGYgaW4gc2VsZi5mYXVsdHMudmFsdWVzKCk6CiAgICAgICAgICAg IGYudG9Eb20ob3ApCgogICAgICAgIHBvcnRUeXBlLmFwcGVuZENoaWxkKG9wKQoKICAgIGRlZiB2 YWxpZGF0ZShzZWxmLG1lc3NhZ2VzKToKICAgICAgICAiIiJNYWtlIHN1cmUgb3VyIGlucHV0LCBv dXRwdXQgYW5kIGZhdWx0cyByZWZyZW5jZSB2YWxpZCBtZXNzYWdlcyIiIgogICAgICAgIGlmIHNl bGYuaW5wdXQgYW5kIG5vdCBWYWxpZGF0ZVRucyhzZWxmLmlucHV0Lm1lc3NhZ2UsbWVzc2FnZXMp OgogICAgICAgICAgICByYWlzZSBXc2RsVmFsaWRhdGlvbkV4Y2VwdGlvbigiT3BlcmF0aW9uICVz LCBPdXRwdXQgcmVmZXJlbmNlcyBpbnZhbGlkIG1lc3NhZ2UgJXMiICUgKHNlbGYubmFtZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlucHV0Lm1lc3NhZ2Up KQoKICAgICAgICBpZiBzZWxmLm91dHB1dCBhbmQgbm90IFZhbGlkYXRlVG5zKHNlbGYub3V0cHV0 Lm1lc3NhZ2UsbWVzc2FnZXMpOgogICAgICAgICAgICByYWlzZSBXc2RsVmFsaWRhdGlvbkV4Y2Vw dGlvbigiT3BlcmF0aW9uICVzLCBPdXRwdXQgcmVmZXJlbmNlcyBpbnZhbGlkIG1lc3NhZ2UgJXMi ICUgKHNlbGYubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLm91dHB1dC5tZXNzYWdlKSkKCiAgICAgICAgZm9yIGZhdWx0IGluIHNlbGYuZmF1bHRzLnZh bHVlcygpOgogICAgICAgICAgICBpZiBub3QgVmFsaWRhdGVUbnMoZmF1bHQubWVzc2FnZSxtZXNz YWdlcyk6CiAgICAgICAgICAgICAgICByYWlzZSBXc2RsVmFsaWRhdGlvbkV4Y2VwdGlvbigiT3Bl cmF0aW9uICVzLCBGYXVsdCAlcyByZWZlcmVuY2VzIGludmFsaWQgbWVzc2FnZSAlcyIgJSAoc2Vs Zi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh dWx0Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmF1bHQubWVzc2FnZSkpCgoKY2xhc3MgSW5wdXQ6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsbWVz c2FnZSk6CiAgICAgICAgc2VsZi5uYW1lID0gJycKICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNz YWdlCiAgICAgICAgc2VsZi5kb2N1bWVudGF0aW9uID0gJycKCiAgICBkZWYgdG9Eb20oc2VsZixv cGVyYXRpb24pOgogICAgICAgIGRvYyA9IG9wZXJhdGlvbi5vd25lckRvY3VtZW50CiAgICAgICAg aSA9IGRvYy5jcmVhdGVFbGVtZW50TlMoV1NETF9OQU1FU1BBQ0UsJ3dzZGw6aW5wdXQnKQogICAg ICAgIGkuc2V0QXR0cmlidXRlTlMoJycsJ21lc3NhZ2UnLHNlbGYubWVzc2FnZSkKICAgICAgICBp ZiBzZWxmLm5hbWU6CiAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMoJycsJ25hbWUnLHNlbGYu bmFtZSkKICAgICAgICAgICAgCiAgICAgICAgRG9jdW1lbnRhdGlvblRvRG9tKGksc2VsZi5kb2N1 bWVudGF0aW9uKQogICAgICAgIG9wZXJhdGlvbi5hcHBlbmRDaGlsZChpKQoKY2xhc3MgT3V0cHV0 OgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLG1lc3NhZ2UpOgogICAgICAgIHNlbGYubmFtZSA9ICcn CiAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQogICAgICAgIHNlbGYuZG9jdW1lbnRhdGlv biA9ICcnCgogICAgZGVmIHRvRG9tKHNlbGYsb3BlcmF0aW9uKToKICAgICAgICBkb2MgPSBvcGVy YXRpb24ub3duZXJEb2N1bWVudAogICAgICAgIG8gPSBkb2MuY3JlYXRlRWxlbWVudE5TKFdTRExf TkFNRVNQQUNFLCd3c2RsOm91dHB1dCcpCiAgICAgICAgby5zZXRBdHRyaWJ1dGVOUygnJywnbWVz c2FnZScsc2VsZi5tZXNzYWdlKQogICAgICAgIGlmIHNlbGYubmFtZToKICAgICAgICAgICAgby5z ZXRBdHRyaWJ1dGVOUygnJywnbmFtZScsc2VsZi5uYW1lKQogICAgICAgICAgICAKICAgICAgICBE b2N1bWVudGF0aW9uVG9Eb20obyxzZWxmLmRvY3VtZW50YXRpb24pCiAgICAgICAgb3BlcmF0aW9u LmFwcGVuZENoaWxkKG8pCgoKY2xhc3MgRmF1bHQ6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsbmFt ZSxtZXNzYWdlKToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5tZXNzYWdl ID0gbWVzc2FnZQogICAgICAgIHNlbGYuZG9jdW1lbnRhdGlvbiA9ICcnCgogICAgZGVmIHRvRG9t KHNlbGYsb3BlcmF0aW9uKToKICAgICAgICBkb2MgPSBvcGVyYXRpb24ub3duZXJEb2N1bWVudAog ICAgICAgIGYgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFdTRExfTkFNRVNQQUNFLCd3c2RsOmZhdWx0 JykKICAgICAgICBmLnNldEF0dHJpYnV0ZU5TKCcnLCdtZXNzYWdlJyxzZWxmLm1lc3NhZ2UpCiAg ICAgICAgaWYgc2VsZi5uYW1lOgogICAgICAgICAgICBmLnNldEF0dHJpYnV0ZU5TKCcnLCduYW1l JyxzZWxmLm5hbWUpCiAgICAgICAgICAgIAogICAgICAgIERvY3VtZW50YXRpb25Ub0RvbShmLHNl bGYuZG9jdW1lbnRhdGlvbikKICAgICAgICBvcGVyYXRpb24uYXBwZW5kQ2hpbGQoZikKCmNsYXNz IEJpbmRpbmdzKFVzZXJEaWN0LlVzZXJEaWN0KToKCgogICAgZGVmIGFkZEJpbmRpbmcoc2VsZixu YW1lLF90eXBlLGRvY3VtZW50YXRpb249JycpOgogICAgICAgICIiIkFkZCBhIG5ldyBiaW5kaW5n IHRvIHRoZSBkZWZpbml0aW9uIiIiCiAgICAgICAgaWYgc2VsZi5oYXNfa2V5KG5hbWUpOgogICAg ICAgICAgICByYWlzZSBXc2RsRXhjZXB0aW9uKCJmYXVsdCAlcyBhbHJlYWQgZXhpc3RzIiAlIChu YW1lKSkKCiAgICAgICAgYiA9IEJpbmRpbmcobmFtZSxfdHlwZSkKICAgICAgICBiLmRvY3VtZW50 YXRpb24gPSBkb2N1bWVudGF0aW9uCiAgICAgICAgc2VsZltuYW1lXSA9IGIKICAgICAgICByZXR1 cm4gYiAKCiAgICBkZWYgZnJvbURvbShzZWxmLGJpbmRpbmdzKToKICAgICAgICAKICAgICAgICBm b3IgYiBpbiBiaW5kaW5nczoKICAgICAgICAgICAgaWYgYi5ub2RlVHlwZSAhPSBOb2RlLkVMRU1F TlRfTk9ERToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgoKICAgICAgICAgICAgY29uID0geHBh dGguQ29udGV4dC5Db250ZXh0KGIsIHByb2Nlc3Nvck5zcz17J3cnOiBXU0RMX05BTUVTUEFDRX0p CgogICAgICAgICAgICBkb2N1bWVudGF0aW9uID0gRG9jdW1lbnRhdGlvbkZyb21Eb20oY29uKQog ICAgICAgICAgICBiaSA9IHNlbGYuYWRkQmluZGluZyhiLmdldEF0dHJpYnV0ZU5TKCcnLCduYW1l JyksYi5nZXRBdHRyaWJ1dGVOUygnJywndHlwZScpLGRvY3VtZW50YXRpb24pCgogICAgICAgICAg ICBmb3IgY2hpbGQgaW4gYi5jaGlsZE5vZGVzOgogICAgICAgICAgICAgICAgaWYgY2hpbGQubm9k ZVR5cGUgIT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUK ICAgICAgICAgICAgICAgIGlmIGNoaWxkLm5hbWVzcGFjZVVSSSAhPSBXU0RMX05BTUVTUEFDRSBv ciBjaGlsZC5sb2NhbE5hbWUgIT0gJ29wZXJhdGlvbic6CiAgICAgICAgICAgICAgICAgICAgI0Fu IGV4dGVuc2lvbiBFbGVtZW50CiAgICAgICAgICAgICAgICAgICAgYmkuYWRkRXh0ZW5zaW9uKEV4 dGVuc2lvbkZyb21Eb20oY2hpbGQpKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg ICAgICAgICBjb24gPSB4cGF0aC5Db250ZXh0LkNvbnRleHQoY2hpbGQsIHByb2Nlc3Nvck5zcz17 J3cnOiBXU0RMX05BTUVTUEFDRX0pCgogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24g PSBEb2N1bWVudGF0aW9uRnJvbURvbShjb24pCiAgICAgICAgICAgICAgICAgICAgbyA9IGJpLmFk ZE9wZXJhdGlvbihjaGlsZC5nZXRBdHRyaWJ1dGVOUygnJywnbmFtZScpLGRvY3VtZW50YXRpb24p CgogICAgICAgICAgICAgICAgICAgIHNlbGYuX19yZWFkSW5wdXRGcm9tRG9tKGNvbixvKQogICAg ICAgICAgICAgICAgICAgIHNlbGYuX19yZWFkT3V0cHV0RnJvbURvbShjb24sbykKICAgICAgICAg ICAgICAgICAgICBzZWxmLl9fcmVhZEZhdWx0c0Zyb21Eb20oY29uLG8pICAgICAgICAgICAgCgog ICAgZGVmIHRvRG9tKHNlbGYsZG9jKToKICAgICAgICBmb3IgYmluZGluZyBpbiBzZWxmLnZhbHVl cygpOgogICAgICAgICAgICBiaW5kaW5nLnRvRG9tKGRvYykKCiAgICBkZWYgdmFsaWRhdGUoc2Vs Zixwb3J0VHlwZXMpOgogICAgICAgIGZvciBiaW5kaW5nIGluIHNlbGYudmFsdWVzKCk6CiAgICAg ICAgICAgIGJpbmRpbmcudmFsaWRhdGUocG9ydFR5cGVzKQoKICAgIGRlZiBfX3JlYWRJbnB1dEZy b21Eb20oc2VsZixjb24sb3ApOgogICAgICAgIGlucHV0ID0gZ19pbnB1dEV4cHJlc3Npb24uZXZh bHVhdGUoY29uKQogICAgICAgIGlmIGxlbihpbnB1dCk6CiAgICAgICAgICAgIGlucHV0ID0gaW5w dXRbMF0KICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiA9ICcnCiAgICAgICAgICAgIGV4dGVuc2lv bnMgPSBbXQogICAgICAgICAgICBmb3IgaUNoaWxkIGluIGlucHV0LmNoaWxkTm9kZXM6CiAgICAg ICAgICAgICAgICBpZiBpQ2hpbGQubm9kZVR5cGUgIT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAg ICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGlmIChpQ2hpbGQubmFtZXNw YWNlVVJJLGlDaGlsZC5sb2NhbE5hbWUpID09IChXU0RMX05BTUVTUEFDRSwnZG9jdW1lbnRhdGlv bicpOgogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gPSBpQ2hpbGQuZmlyc3RDaGls ZC5kYXRhCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICNBbiBleHRl bnNpb24KICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChFeHRlbnNpb25Gcm9t RG9tKGlDaGlsZCkpCiAgICAgICAgICAgIGkgPSBvcC5zZXRJbnB1dChkb2N1bWVudGF0aW9uKQog ICAgICAgICAgICBmb3IgZSBpbiBleHRlbnNpb25zOgogICAgICAgICAgICAgICAgaS5hZGRFeHRl bnNpb24oZSkKCgogICAgZGVmIF9fcmVhZE91dHB1dEZyb21Eb20oc2VsZixjb24sb3ApOgogICAg ICAgIG91dHB1dCA9IGdfb3V0cHV0RXhwcmVzc2lvbi5ldmFsdWF0ZShjb24pCiAgICAgICAgaWYg bGVuKG91dHB1dCk6CiAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dFswXQogICAgICAgICAgICBk b2N1bWVudGF0aW9uID0gJycKICAgICAgICAgICAgZXh0ZW5zaW9ucyA9IFtdCiAgICAgICAgICAg IGZvciBpQ2hpbGQgaW4gb3V0cHV0LmNoaWxkTm9kZXM6CiAgICAgICAgICAgICAgICBpZiBpQ2hp bGQubm9kZVR5cGUgIT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAgICAgICAgICAgICAgICAgY29u dGludWUKICAgICAgICAgICAgICAgIGlmIChpQ2hpbGQubmFtZXNwYWNlVVJJLGlDaGlsZC5sb2Nh bE5hbWUpID09IChXU0RMX05BTUVTUEFDRSwnZG9jdW1lbnRhdGlvbicpOgogICAgICAgICAgICAg ICAgICAgIGRvY3VtZW50YXRpb24gPSBpQ2hpbGQuZmlyc3RDaGlsZC5kYXRhCiAgICAgICAgICAg ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICNBbiBleHRlbnNpb24KICAgICAgICAgICAg ICAgICAgICBleHRlbnNpb25zLmFwcGVuZChFeHRlbnNpb25Gcm9tRG9tKGlDaGlsZCkpCgogICAg ICAgICAgICBibyA9IG9wLnNldE91dHB1dChkb2N1bWVudGF0aW9uKQogICAgICAgICAgICBmb3Ig ZSBpbiBleHRlbnNpb25zOgogICAgICAgICAgICAgICAgYm8uYWRkRXh0ZW5zaW9uKGUpCgoKCiAg ICBkZWYgX19yZWFkRmF1bHRzRnJvbURvbShzZWxmLGNvbixvcCk6CiAgICAgICAgZmF1bHRzID0g Z19mYXVsdEV4cHJlc3Npb24uZXZhbHVhdGUoY29uKQogICAgICAgIGZvciBmYXVsdCBpbiBmYXVs dHM6CiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gPSAnJwogICAgICAgICAgICBleHRlbnNpb25z ID0gW10KICAgICAgICAgICAgZm9yIGlDaGlsZCBpbiBmYXVsdC5jaGlsZE5vZGVzOgogICAgICAg ICAgICAgICAgaWYgaUNoaWxkLm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBpZiAoaUNoaWxkLm5hbWVzcGFj ZVVSSSxpQ2hpbGQubG9jYWxOYW1lKSA9PSAoV1NETF9OQU1FU1BBQ0UsJ2RvY3VtZW50YXRpb24n KToKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uID0gaUNoaWxkLmZpcnN0Q2hpbGQu ZGF0YQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjQW4gZXh0ZW5z aW9uCiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoRXh0ZW5zaW9uRnJvbURv bShpQ2hpbGQpKQogICAgICAgICAgICBiZiA9IG9wLmFkZEZhdWx0KGZhdWx0LmdldEF0dHJpYnV0 ZU5TKCcnLCduYW1lJyksZG9jdW1lbnRhdGlvbikKICAgICAgICAgICAgZm9yIGUgaW4gZXh0ZW5z aW9uczoKICAgICAgICAgICAgICAgIGJmLmFkZEV4dGVuc2lvbihlKQoKCmNsYXNzIEJpbmRpbmc6 CgogICAgZGVmIF9faW5pdF9fKHNlbGYsbmFtZSxfdHlwZSk6CiAgICAgICAgc2VsZi5uYW1lID0g bmFtZQogICAgICAgIHNlbGYudHlwZSA9IF90eXBlCiAgICAgICAgc2VsZi5leHRlbnNpb25zID0g W10KICAgICAgICBzZWxmLm9wZXJhdGlvbnMgPSB7fQoKICAgIGRlZiBhZGRPcGVyYXRpb24oc2Vs ZixuYW1lLGRvY3VtZW50YXRpb249JycpOgogICAgICAgIGlmIHNlbGYub3BlcmF0aW9ucy5oYXNf a2V5KG5hbWUpOgogICAgICAgICAgICByYWlzZSBXc2RsRXhjZXB0aW9uKCJvcGVyYXRpb24gJXMg YWxyZWFkIGV4aXN0cyBvbiBiaW5kaW5nICVzIiAlIChuYW1lLHNlbGYubmFtZSkpCgogICAgICAg IG8gPSBCT3BlcmF0aW9uKG5hbWUpCiAgICAgICAgby5kb2N1bWVudGF0aW9uID0gZG9jdW1lbnRh dGlvbgogICAgICAgIHNlbGYub3BlcmF0aW9uc1tuYW1lXSA9IG8KICAgICAgICByZXR1cm4gbwog ICAgICAgIAogICAgZGVmIGFkZEV4dGVuc2lvbihzZWxmLHN0KToKICAgICAgICBzZWxmLmV4dGVu c2lvbnMuYXBwZW5kKHN0KQoKICAgIGRlZiB0b0RvbShzZWxmLGRvYyk6CiAgICAgICAgZGUgPSBk b2MuZG9jdW1lbnRFbGVtZW50CiAgICAgICAgYiA9IGRvYy5jcmVhdGVFbGVtZW50TlMoV1NETF9O QU1FU1BBQ0UsJ3dzZGw6YmluZGluZycpCgogICAgICAgIGIuc2V0QXR0cmlidXRlTlMoJycsJ25h bWUnLHNlbGYubmFtZSkKICAgICAgICBiLnNldEF0dHJpYnV0ZU5TKCcnLCd0eXBlJyxzZWxmLnR5 cGUpCgogICAgICAgIEV4dGVuc2lvbnNUb0RvbShiLHNlbGYuZXh0ZW5zaW9ucykKICAgICAgICBm b3Igb3AgaW4gc2VsZi5vcGVyYXRpb25zLnZhbHVlcygpOgogICAgICAgICAgICBvcC50b0RvbShi KQoKICAgICAgICBkZS5hcHBlbmRDaGlsZChiKQoKICAgIGRlZiB2YWxpZGF0ZShzZWxmLHBvcnRU eXBlcyk6CiAgICAgICAgIiIiVmFsaWRhdGUgdGhhdCB0aGlzIGJpbmRpbmcgcmVmZXJlbmNlcyBh IHZhbGlkIHBvcnQgdHlwZSIiIgogICAgICAgIGlmIG5vdCBWYWxpZGF0ZVRucyhzZWxmLnR5cGUs cG9ydFR5cGVzKToKICAgICAgICAgICAgcmFpc2UgV3NkbFZhbGlkYXRpb25FeGNlcHRpb24oIkJp bmRpbmcgJXMsIHJlZmVyZW5jZXMgaW52YWxpZCBwb3J0VHlwZSAlcyIgJSAoc2VsZi5uYW1lLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUpKQoKY2xhc3MgQk9wZXJh dGlvbjoKCiAgICBkZWYgX19pbml0X18oc2VsZixuYW1lKToKICAgICAgICBzZWxmLm5hbWUgPSBu YW1lCiAgICAgICAgc2VsZi5kb2N1bWVudGF0aW9uID0gIiIKCiAgICAgICAgc2VsZi5pbnB1dCA9 IE5vbmUKICAgICAgICBzZWxmLm91dHB1dCA9IE5vbmUKICAgICAgICBzZWxmLmZhdWx0cyA9IHt9 CgogICAgZGVmIHNldElucHV0KHNlbGYsZG9jdW1lbnRhdGlvbj0nJyk6CiAgICAgICAgaSA9IEJJ bnB1dCgpCiAgICAgICAgaS5kb2N1bWVudGF0aW9uID0gZG9jdW1lbnRhdGlvbgogICAgICAgIHNl bGYuaW5wdXQgPSBpCiAgICAgICAgcmV0dXJuIGkKCiAgICBkZWYgc2V0T3V0cHV0KHNlbGYsZG9j dW1lbnRhdGlvbj0nJyk6CiAgICAgICAgbyA9IEJPdXRwdXQoKQogICAgICAgIG8uZG9jdW1lbnRh dGlvbiA9IGRvY3VtZW50YXRpb24KICAgICAgICBzZWxmLm91dHB1dCA9IG8KICAgICAgICByZXR1 cm4gbwoKICAgIGRlZiBhZGRGYXVsdChzZWxmLG5hbWUsZG9jdW1lbnRhdGlvbj0nJyk6CiAgICAg ICAgaWYgc2VsZi5mYXVsdHMuaGFzX2tleShuYW1lKToKICAgICAgICAgICAgcmFpc2UgV3NkbEV4 Y2VwdGlvbigiZmF1bHQgJXMgYWxyZWFkeSBleGlzdHMgb24gb3BlcmF0aW9uICVzIiAlIChuYW1l LHNlbGYubmFtZSkpCiAgICAgICAgZiA9IEJGYXVsdChuYW1lKQogICAgICAgIGYuZG9jdW1lbnRh dGlvbiA9IGRvY3VtZW50YXRpb24KICAgICAgICBzZWxmLmZhdWx0c1tuYW1lXSA9IGYKICAgICAg ICByZXR1cm4gZgoKICAgIGRlZiB0b0RvbShzZWxmLGJpbmRpbmcpOgogICAgICAgIGRvYyA9IGJp bmRpbmcub3duZXJEb2N1bWVudAoKICAgICAgICBvID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhXU0RM X05BTUVTUEFDRSwnd3NkbDpvcGVyYXRpb24nKQogICAgICAgIG8uc2V0QXR0cmlidXRlTlMoJycs J25hbWUnLHNlbGYubmFtZSkKCiAgICAgICAgRG9jdW1lbnRhdGlvblRvRG9tKG8sc2VsZi5kb2N1 bWVudGF0aW9uKQoKICAgICAgICBpZiBzZWxmLmlucHV0OgogICAgICAgICAgICBzZWxmLmlucHV0 LnRvRG9tKG8pCgogICAgICAgIGlmIHNlbGYub3V0cHV0OgogICAgICAgICAgICBzZWxmLm91dHB1 dC50b0RvbShvKQoKICAgICAgICBmb3IgZiBpbiBzZWxmLmZhdWx0cy52YWx1ZXMoKToKICAgICAg ICAgICAgZi50b0RvbShvKQoKCiAgICAgICAgYmluZGluZy5hcHBlbmRDaGlsZChvKQoKCmNsYXNz IEJJbnB1dDoKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5kb2N1bWVudGF0 aW9uID0gJycKICAgICAgICBzZWxmLmV4dGVuc2lvbnMgPSBbXQogICAgCiAgICBkZWYgYWRkRXh0 ZW5zaW9uKHNlbGYsZXh0KToKICAgICAgICBzZWxmLmV4dGVuc2lvbnMuYXBwZW5kKGV4dCkKICAg ICAgICAKICAgIGRlZiB0b0RvbShzZWxmLG9wZXJhdGlvbik6CiAgICAgICAgZG9jID0gb3BlcmF0 aW9uLm93bmVyRG9jdW1lbnQKCiAgICAgICAgaSA9IGRvYy5jcmVhdGVFbGVtZW50TlMoV1NETF9O QU1FU1BBQ0UsJ3dzZGw6aW5wdXQnKQoKICAgICAgICBEb2N1bWVudGF0aW9uVG9Eb20oaSxzZWxm LmRvY3VtZW50YXRpb24pCiAgICAgICAgRXh0ZW5zaW9uc1RvRG9tKGksc2VsZi5leHRlbnNpb25z KQoKICAgICAgICBvcGVyYXRpb24uYXBwZW5kQ2hpbGQoaSkKCgpjbGFzcyBCT3V0cHV0OgoKICAg IGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLmRvY3VtZW50YXRpb24gPSAnJwogICAg ICAgIHNlbGYuZXh0ZW5zaW9ucyA9IFtdCiAgICAKICAgIGRlZiBhZGRFeHRlbnNpb24oc2VsZixl eHQpOgogICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5hcHBlbmQoZXh0KQogICAgICAgIAogICAgZGVm IHRvRG9tKHNlbGYsb3BlcmF0aW9uKToKICAgICAgICBkb2MgPSBvcGVyYXRpb24ub3duZXJEb2N1 bWVudAoKICAgICAgICBvID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhXU0RMX05BTUVTUEFDRSwnd3Nk bDpvdXRwdXQnKQoKICAgICAgICBEb2N1bWVudGF0aW9uVG9Eb20obyxzZWxmLmRvY3VtZW50YXRp b24pCiAgICAgICAgRXh0ZW5zaW9uc1RvRG9tKG8sc2VsZi5leHRlbnNpb25zKQoKICAgICAgICBv cGVyYXRpb24uYXBwZW5kQ2hpbGQobykKCgpjbGFzcyBCRmF1bHQ6CgogICAgZGVmIF9faW5pdF9f KHNlbGYsbmFtZSk6CiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYuZG9jdW1l bnRhdGlvbiA9ICcnCiAgICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KICAgIAogICAgZGVmIGFk ZEV4dGVuc2lvbihzZWxmLGV4dCk6CiAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQp CiAgICAgICAgCiAgICBkZWYgdG9Eb20oc2VsZixvcGVyYXRpb24pOgogICAgICAgIGRvYyA9IG9w ZXJhdGlvbi5vd25lckRvY3VtZW50CgogICAgICAgIGYgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFdT RExfTkFNRVNQQUNFLCd3c2RsOmZhdWx0JykKICAgICAgICBmLnNldEF0dHJpYnV0ZU5TKCcnLCdu YW1lJyxzZWxmLm5hbWUpCgogICAgICAgIERvY3VtZW50YXRpb25Ub0RvbShmLHNlbGYuZG9jdW1l bnRhdGlvbikKICAgICAgICBFeHRlbnNpb25zVG9Eb20oZixzZWxmLmV4dGVuc2lvbnMpCgogICAg ICAgIG9wZXJhdGlvbi5hcHBlbmRDaGlsZChmKQoKCmNsYXNzIFNlcnZpY2VzKFVzZXJEaWN0LlVz ZXJEaWN0KToKCiAgICBkZWYgYWRkU2VydmljZShzZWxmLG5hbWUsZG9jdW1lbnRhdGlvbj0nJyk6 CiAgICAgICAgaWYgc2VsZi5oYXNfa2V5KG5hbWUpOgogICAgICAgICAgICByYWlzZSBXc2RsRXhj ZXB0aW9uKCJzZXJ2aWNlICVzIGFscmVhZHkgZXhpc3RzIiAlIChuYW1lKSkKICAgICAgICBzID0g U2VydmljZShuYW1lKQogICAgICAgIHMuZG9jdW1lbnRhdGlvbiA9IGRvY3VtZW50YXRpb24KICAg ICAgICBzZWxmW25hbWVdID0gcwogICAgICAgIHJldHVybiBzCgoKICAgIGRlZiBmcm9tRG9tKHNl bGYsc2VydmljZXMpOgoKICAgICAgICBmb3Igc2VydiBpbiBzZXJ2aWNlczoKICAgICAgICAgICAg aWYgc2Vydi5ub2RlVHlwZSAhPSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgIGNv bnRpbnVlCgogICAgICAgICAgICBjb24gPSB4cGF0aC5Db250ZXh0LkNvbnRleHQoc2VydiwgcHJv Y2Vzc29yTnNzPXsndyc6IFdTRExfTkFNRVNQQUNFfSkKICAgICAgICAgICAgZG9jdW1lbnRhdGlv biA9IERvY3VtZW50YXRpb25Gcm9tRG9tKGNvbikKICAgICAgICAgICAgcyA9IHNlbGYuYWRkU2Vy dmljZShzZXJ2LmdldEF0dHJpYnV0ZU5TKCcnLCduYW1lJyksZG9jdW1lbnRhdGlvbikKCiAgICAg ICAgICAgIGZvciBwZCBpbiBnX3BvcnRzRXhwcmVzc2lvbi5ldmFsdWF0ZShjb24pOgogICAgICAg ICAgICAgICAgcGNvbiA9IHhwYXRoLkNvbnRleHQuQ29udGV4dChwZCwgcHJvY2Vzc29yTnNzPXsn dyc6IFdTRExfTkFNRVNQQUNFfSkKICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gPSBEb2N1 bWVudGF0aW9uRnJvbURvbShwY29uKQogICAgICAgICAgICAgICAgcCA9IHMuYWRkUG9ydChwZC5n ZXRBdHRyaWJ1dGVOUygnJywnbmFtZScpLHBkLmdldEF0dHJpYnV0ZU5TKCcnLCdiaW5kaW5nJyks ZG9jdW1lbnRhdGlvbikKCiAgICAgICAgICAgICAgICBmb3IgY2hpbGQgaW4gcGQuY2hpbGROb2Rl czoKICAgICAgICAgICAgICAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSAhPSBOb2RlLkVMRU1FTlRf Tk9ERToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAg ICBpZiAoY2hpbGQubmFtZXNwYWNlVVJJLGNoaWxkLmxvY2FsTmFtZSkgID09IChXU0RMX05BTUVT UEFDRSwnZG9jdW1lbnRhdGlvbicpOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog ICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICNBbiBleHRl bnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgcC5hZGRFeHRlbnNpb24oRXh0ZW5zaW9uRnJv bURvbShjaGlsZCkpCgoKICAgICAgICAgICAgZm9yIGNoaWxkIGluIHNlcnYuY2hpbGROb2RlczoK ICAgICAgICAgICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFOgog ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBpZiAoY2hpbGQubmFt ZXNwYWNlVVJJLGNoaWxkLmxvY2FsTmFtZSkgaW4gWyhXU0RMX05BTUVTUEFDRSwnZG9jdW1lbnRh dGlvbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChXU0RMX05BTUVTUEFDRSwncG9ydCcpXToKICAgICAgICAgICAgICAgICAg ICBjb250aW51ZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjQW4g ZXh0ZW5zaW9uCiAgICAgICAgICAgICAgICAgICAgcy5hZGRFeHRlbnNpb24oRXh0ZW5zaW9uRnJv bURvbShjaGlsZCkpCgoKICAgIGRlZiB0b0RvbShzZWxmLGRvYyk6CiAgICAgICAgZm9yIHMgaW4g c2VsZi52YWx1ZXMoKToKICAgICAgICAgICAgcy50b0RvbShkb2MpCgoKY2xhc3MgU2VydmljZToK ICAgIGRlZiBfX2luaXRfXyhzZWxmLG5hbWUpOgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAg ICAgICBzZWxmLmRvY3VtZW50YXRpb24gPSAiIgogICAgICAgIHNlbGYucG9ydHMgPSB7fQogICAg ICAgIHNlbGYuZXh0ZW5zaW9ucyA9IFtdCgogICAgZGVmIGFkZFBvcnQoc2VsZixuYW1lLGJpbmRp bmcsZG9jdW1lbnRhdGlvbj0nJyk6CiAgICAgICAgaWYgc2VsZi5wb3J0cy5oYXNfa2V5KG5hbWUp OgogICAgICAgICAgICByYWlzZSBXc2RsRXhjZXB0aW9uKCJwb3J0ICVzIGFscmVhZHkgZXhpc3Rz IG9uIHNlcnZpY2UgJXMiICUgKG5hbWUsc2VsZi5uYW1lKSkKICAgICAgICBwID0gUG9ydChuYW1l LGJpbmRpbmcpCiAgICAgICAgcC5kb2N1bWVudGF0aW9uID0gZG9jdW1lbnRhdGlvbgogICAgICAg IHNlbGYucG9ydHNbbmFtZV0gPSBwCiAgICAgICAgcmV0dXJuIHAKCiAgICBkZWYgYWRkRXh0ZW5z aW9uKHNlbGYsZXh0KToKICAgICAgICBzZWxmLmV4dGVuc2lvbnMuYXBwZW5kKGV4dCkKCiAgICBk ZWYgdG9Eb20oc2VsZixkb2MpOgogICAgICAgIGRlID0gZG9jLmRvY3VtZW50RWxlbWVudAogICAg ICAgIHMgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFdTRExfTkFNRVNQQUNFLCd3c2RsOnNlcnZpY2Un KQogICAgICAgIHMuc2V0QXR0cmlidXRlTlMoJycsJ25hbWUnLHNlbGYubmFtZSkKICAgICAgICBE b2N1bWVudGF0aW9uVG9Eb20ocyxzZWxmLmRvY3VtZW50YXRpb24pCgogICAgICAgIGZvciBwIGlu IHNlbGYucG9ydHMudmFsdWVzKCk6CiAgICAgICAgICAgIHAudG9Eb20ocykKCiAgICAgICAgRXh0 ZW5zaW9uc1RvRG9tKHMsc2VsZi5leHRlbnNpb25zKQoKICAgICAgICBkZS5hcHBlbmRDaGlsZChz KQoKCmNsYXNzIFBvcnQ6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsbmFtZSxiaW5kaW5nKToKICAg ICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5iaW5kaW5nID0gYmluZGluZwogICAg ICAgIHNlbGYuZG9jdW1lbnRhdGlvbiA9ICIiCiAgICAgICAgc2VsZi5leHRlbnNpb25zID0gW10K CiAgICBkZWYgYWRkRXh0ZW5zaW9uKHNlbGYsZXh0KToKICAgICAgICBzZWxmLmV4dGVuc2lvbnMu YXBwZW5kKGV4dCkKCiAgICBkZWYgdG9Eb20oc2VsZixwb3J0KToKICAgICAgICBkb2MgPSBwb3J0 Lm93bmVyRG9jdW1lbnQKICAgICAgICBwID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhXU0RMX05BTUVT UEFDRSwnd3NkbDpwb3J0JykKICAgICAgICBwLnNldEF0dHJpYnV0ZU5TKCcnLCduYW1lJyxzZWxm Lm5hbWUpCiAgICAgICAgcC5zZXRBdHRyaWJ1dGVOUygnJywnYmluZGluZycsc2VsZi5iaW5kaW5n KQogICAgICAgIEV4dGVuc2lvbnNUb0RvbShwLHNlbGYuZXh0ZW5zaW9ucykKCiAgICAgICAgcG9y dC5hcHBlbmRDaGlsZChwKQoKIyMjIyMjIyMKI1V0aWxpdHkgZnVuY3Rpb25zCiMjIyMjIyMjCmRl ZiBEb2N1bWVudGF0aW9uVG9Eb20ocGFyZW50LGRvYyk6CiAgICBpZiBkb2M6CiAgICAgICAgZGMg PSBwYXJlbnQub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoV1NETF9OQU1FU1BBQ0UsJ3dz ZGw6ZG9jdW1lbnRhdGlvbicpCiAgICAgICAgZGMuYXBwZW5kQ2hpbGQocGFyZW50Lm93bmVyRG9j dW1lbnQuY3JlYXRlVGV4dE5vZGUoZG9jKSkKICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZGMp CiAgICAKCmRlZiBEb2N1bWVudGF0aW9uRnJvbURvbShjb24pOgogICAgZG9jcyA9IGdfZG9jdW1l bnRhdGlvbkV4cHJlc3Npb24uZXZhbHVhdGUoY29uKQogICAgaWYgZG9jczoKICAgICAgICByZXR1 cm4gQ29udmVyc2lvbnMuU3RyaW5nVmFsdWUoZG9jc1swXSkKICAgIHJldHVybiAnJwoKZGVmIEV4 dGVuc2lvbkZyb21Eb20obm9kZSk6CiAgICBzdCA9IGNTdHJpbmdJTy5TdHJpbmdJTygpCiAgICBQ cmV0dHlQcmludChub2RlLHN0cmVhbT1zdCkKICAgIHJldHVybiBzdC5nZXR2YWx1ZSgpCiAgICAK ZGVmIEV4dGVuc2lvbnNUb0RvbShwYXJlbnQsZXh0cyk6CiAgICByZWFkZXIgPSBwRG9tbGV0dGUu UHlFeHBhdFJlYWRlcigpCiAgICBmb3IgZSBpbiBleHRzOgogICAgICAgIGRvbSA9IHJlYWRlci5m cm9tU3RyaW5nKGUpCiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGRvbS5kb2N1bWVudEVsZW1l bnQpCiAgICAgICAgcmVhZGVyLnJlbGVhc2VOb2RlKGRvbSkKICAgICAgICAgICAgCmRlZiBWYWxp ZGF0ZVRucyhxbmFtZSxzb3VyY2VzKToKICAgIHByZWZpeCxsb2NhbE5hbWUgPSBTcGxpdFFOYW1l KHFuYW1lKQogICAgaWYgcHJlZml4ID09ICd0bnMnOgogICAgICAgICNMb2NhbCB0byB0aGlzIGRv Y3VtZW50CiAgICAgICAgaWYgbm90IHNvdXJjZXMuaGFzX2tleShsb2NhbE5hbWUpOgogICAgICAg ICAgICByZXR1cm4gMAogICAgZWxzZToKICAgICAgICAjRklYTUUgQ2Fubm90IGN1cnJlbnRseXQg dmFsaWRhdGUgdGhpcwogICAgICAgIHBhc3MKCiAgICByZXR1cm4gMQo= --------------Boundary-00=_27XBJLWDN55MQIL2GW2F-- From Mailer-Daemon@open-school.net Sun Feb 10 18:16:23 2002 From: Mailer-Daemon@open-school.net (Mailer-Daemon) Date: Sun, 10 Feb 2002 18:16:23 +0000 Subject: [XML-SIG] NDN: XML-SIG digest, Vol 1 #1211 - 2 msgs Message-ID: Sorry. Your message could not be delivered to: rich,Semantise Open-School (Multiple names were found at the remote site. Please be more specific.) From mal@lemburg.com Sun Feb 10 18:23:12 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Sun, 10 Feb 2002 19:23:12 +0100 Subject: [XML-SIG] WSDL library ? References: <20020210181436.XKBH379.out019.verizon.net@there> Message-ID: <3C66BA90.C4231504@lemburg.com> Eron Lloyd wrote: > > I've been playing with wsdllib, from a IBM developerWorks article by Uche. > I've attached the actual module for you to look at. The article can be found > here: > http://www-105.ibm.com/developerworks/education.nsf/webservices-onlinecourse-bytitle/D092605075D1D67D86256A7E0042432D?OpenDocument That's the one I meant: the licensing for that module isn't clear though (at least not to me). -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From rsalz@zolera.com Sun Feb 10 18:56:06 2002 From: rsalz@zolera.com (Rich Salz) Date: Sun, 10 Feb 2002 13:56:06 -0500 Subject: [XML-SIG] WSDL library ? References: <20020210181436.XKBH379.out019.verizon.net@there> <3C66BA90.C4231504@lemburg.com> Message-ID: <3C66C246.AA4BB2BA@zolera.com> It takes a while to find, but it's covered by the ibm open source license, which has been approved by the OSS folks. The code is available at: http://www-124.ibm.com/developerworks/projects/wsdl4py/ which, interestingly, looks like a re-branded and re-hosted implementation of SourceForge... great. /r$ From paul@prescod.net Sun Feb 10 23:18:19 2002 From: paul@prescod.net (Paul Prescod) Date: Sun, 10 Feb 2002 15:18:19 -0800 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> Message-ID: <3C66FFBB.8E95DFCC@prescod.net> Rich Salz wrote: > >... > > I'm intending to add something, perhaps along the lines of Paul's stuff, > to ZSI (http://pywbsvcs.sf.net). I'll either have enough time to work on > it over the next month, or no time at all. Note that W3C has convened a > WSDL working group; I'm on it, and we just had our first telecon call > Thursday morning. I'm hoping there will be some really major changes in > WSDL1.1 (esp soap-only, simplifying import, etc) and if that looks > likely, then my work will track 1.1, not 1.0 I will be extremely disappointed if WSDL 1.1 is made SOAP only. The fact that WSDL is not protocol specific is one of the primary things that makes it interesting to many people. It is mostly used with SOAP today because it is today a product of big businesses and thus of mild interest to open source programmers. When it gets onto a firm standards track, HTTP, XML-RPC, Jabber and BEEP bindings will be rapidly forthcoming. WSDL's biggest problem, IMO, is that people feel it is not a language that should be authored by hand. The whole point of using XML, IMO, is to make something human readable and machine readable. Although I can read WSDL, there are enough people who say that they cannot to make me feel that there is a serious usability problem there. That's where I would suggest the group focus its effort. Paul Prescod From martin@v.loewis.de Mon Feb 11 12:22:11 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 11 Feb 2002 13:22:11 +0100 Subject: [XML-SIG] A Q About DOCTYPE manipulation In-Reply-To: <53A7943A5BD8D411B6930002A5073155013F6193@bgsmsx90.iind.intel.com> References: <53A7943A5BD8D411B6930002A5073155013F6193@bgsmsx90.iind.intel.com> Message-ID: "Mariappan, MaharajanX" writes: > I'm using minidom to parse the xml file. I'm unable to specify a line like > this > > in the XML file i'm creating. Can you please be a bit more specific? What is the problem with writing this line into the XML file? > Also the for the DocumentType Objects i'm unable to get or set the publicId > (master_test.dtd??) > How do I set the SYSTEM attribute so that i can point it to a dtd file? > Also after creating the xml object when i make a call to "toxml()" the > DocumentType is not printed? > How can i parse the publicID and write it using minidom (dtd value)? The DTD support in DOM is very limited, and it also may be that there are bugs in PyXML; you'ld have to provide a specific test case, and somebody would need to check this against the specs to determine whether it is a limitation in the specs or in the implementation. In any case, if you need the DOCTYPE declaration on output, I recommend to integrate with writexml, and to write out the DOCTYPE declaration explicitly. Regards, Martin From Mailer-Daemon@open-school.net Mon Feb 11 17:00:20 2002 From: Mailer-Daemon@open-school.net (Mailer-Daemon) Date: Mon, 11 Feb 2002 17:00:20 +0000 Subject: [XML-SIG] NDN: XML-SIG digest, Vol 1 #1212 - 5 msgs Message-ID: Sorry. Your message could not be delivered to: rich,Semantise Open-School (Multiple names were found at the remote site. Please be more specific.) From rsalz@zolera.com Mon Feb 11 18:20:15 2002 From: rsalz@zolera.com (Rich Salz) Date: Mon, 11 Feb 2002 13:20:15 -0500 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> <3C66FFBB.8E95DFCC@prescod.net> Message-ID: <3C680B5F.7050606@zolera.com> > I will be extremely disappointed if WSDL 1.1 is made SOAP only. Don't worry, I expect to lose that battle. > WSDL's biggest problem, IMO, is that people feel it is not a language > that should be authored by hand. What's preventing it? In my view, it's the cut/paste repetition you have to keep doing. The WG is starting to collect requirements, I'll forward anything you can suggest. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From mal@lemburg.com Mon Feb 11 18:52:11 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Mon, 11 Feb 2002 19:52:11 +0100 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> <3C66FFBB.8E95DFCC@prescod.net> <3C680B5F.7050606@zolera.com> Message-ID: <3C6812DB.A94230F6@lemburg.com> Rich Salz wrote: > > > I will be extremely disappointed if WSDL 1.1 is made SOAP only. > > Don't worry, I expect to lose that battle. Good :-) I would at least want XML-RPC bindings in there too (simply because it's so much easier to implement and get right). > > WSDL's biggest problem, IMO, is that people feel it is not a language > > that should be authored by hand. > > What's preventing it? In my view, it's the cut/paste repetition you > have to keep doing. The WG is starting to collect requirements, I'll > forward anything you can suggest. Isn't the tag in WSDL intended to prevent copy&paste (by hand) ? -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From paul@prescod.net Mon Feb 11 19:23:50 2002 From: paul@prescod.net (Paul Prescod) Date: Mon, 11 Feb 2002 11:23:50 -0800 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> <3C66FFBB.8E95DFCC@prescod.net> <3C680B5F.7050606@zolera.com> Message-ID: <3C681A46.30C007A4@prescod.net> Rich Salz wrote: > > > I will be extremely disappointed if WSDL 1.1 is made SOAP only. > > Don't worry, I expect to lose that battle. > > > WSDL's biggest problem, IMO, is that people feel it is not a language > > that should be authored by hand. > > What's preventing it? In my view, it's the cut/paste repetition you > have to keep doing. That's part of it. Plus there are so many levels (see below). Often you see an element type with the same name as a part, with the same name as an operation, with the same name as a port type. You've got four levels to do one thing. Another part is using XML Schema as an "abstract type description language". It's a little ridiculous to use a schema language without standard OO notions of "property", "array", "struct" etc. But I'm sure I'd get voted down. Of course it should be possible to refer to an XML schema for *document-oriented* SOAP. But for RPC-oriented SOAP, older IDLs are actually much simpler. > ... The WG is starting to collect requirements, I'll > forward anything you can suggest. Here are some of my suggestions: 1. Interfaces and implementations are two very different classes of specification object. It confuses people to combine them and also encourages the poor design habit of combining them in a manner that makes re-use difficult. This in turn hurts interoperability of diverse web services. WSDL 1.2 should be formally split into two languages: e.g. WS Interface Description L and Service Implementation Definition Language. Perhaps the Service Implementation Definition Language could be entirely protocol-binding-specific. 2. The interface description language should be as easy to read and write (semantically, not syntactically) as standard IDLs like CORBA and COM IDLs. There is a sense that WSDL is much, much more complicated and this is going to hurt its adoption on the open Internet. 3. If the interface definition language is to be used both for RPC *and* document-style interfaces then it needs first-class concepts of array and struct, which XML Schema lacks, for RPC-style interfaces. Arguably, using schema for both kinds of interfaces is more confusing than helpful. Paul Prescod From paul@prescod.net Mon Feb 11 19:36:29 2002 From: paul@prescod.net (Paul Prescod) Date: Mon, 11 Feb 2002 11:36:29 -0800 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> <3C66FFBB.8E95DFCC@prescod.net> <3C680B5F.7050606@zolera.com> <3C6812DB.A94230F6@lemburg.com> Message-ID: <3C681D3D.DB3217F3@prescod.net> "M.-A. Lemburg" wrote: > >... > > Isn't the tag in WSDL intended to prevent copy&paste > (by hand) ? I think he means between the various levels of the WSDL. Like between the abstract binding and the concrete bindings. Or between two concrete bindings for two different abstract operations. All in all there are about seven levels there and it is debatable: a) whether they are all necessary b) whether they all belong in one specification Paul Prescod From rsalz@zolera.com Mon Feb 11 19:42:16 2002 From: rsalz@zolera.com (Rich Salz) Date: Mon, 11 Feb 2002 14:42:16 -0500 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> <3C66FFBB.8E95DFCC@prescod.net> <3C680B5F.7050606@zolera.com> <3C6812DB.A94230F6@lemburg.com> Message-ID: <3C681E98.40407@zolera.com> > Isn't the tag in WSDL intended to prevent copy&paste > (by hand) ? Because of the "abstract message" nature, you end up defining a fooRequest and a fooResponse message, with foo parts, which then has a fooset portType with a foo operation (with said input and output messages), which are then incorporated by reference into port's within a service. As Paul said... four copies. -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From Mailer-Daemon@open-school.net Tue Feb 12 16:59:38 2002 From: Mailer-Daemon@open-school.net (Mailer-Daemon) Date: Tue, 12 Feb 2002 16:59:38 +0000 Subject: [XML-SIG] NDN: XML-SIG digest, Vol 1 #1213 - 6 msgs Message-ID: Sorry. Your message could not be delivered to: rich,Semantise Open-School (Multiple names were found at the remote site. Please be more specific.) From rsalz@zolera.com Tue Feb 12 19:54:13 2002 From: rsalz@zolera.com (Rich Salz) Date: Tue, 12 Feb 2002 14:54:13 -0500 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> <3C66FFBB.8E95DFCC@prescod.net> <3C680B5F.7050606@zolera.com> <3C681A46.30C007A4@prescod.net> Message-ID: <3C6972E5.9090608@zolera.com> > [T]here are so many levels (see below). Often you > see an element type with the same name as a part, with the same name as > an operation, with the same name as a port type. You've got four levels > to do one thing. I heartily agree this is a problem. > Another part is using XML Schema as an "abstract type description > language". It's a little ridiculous to use a schema language without > standard OO notions of "property", "array", "struct" etc. But I'm sure > I'd get voted down. Jacek of the encoding task force of the XMLP WG posted a really good rationale for the current, sub-optimal, situation. http://lists.w3.org/Archives/Public/xml-dist-app/2002Feb/0209.html > Of course it should be possible to refer to an XML schema for > *document-oriented* SOAP. But for RPC-oriented SOAP, older IDLs are > actually much simpler. DCE IDL; it's an ISO standard. :) > WSDL 1.2 should be formally split into two languages The SAP rep just posted a message asking for this. > 2. The interface description language should be as easy to read and > write (semantically, not syntactically) as standard IDLs like CORBA and > COM IDLs. There is a sense that WSDL is much, much more complicated and > this is going to hurt its adoption on the open Internet. You wanna get rid of the "abstract" layers? > 3. If the interface definition language is to be used both for RPC > *and* document-style interfaces then it needs first-class concepts of > array and struct, which XML Schema lacks, for RPC-style interfaces. > Arguably, using schema for both kinds of interfaces is more confusing > than helpful. Not sure what we could do. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From paul@prescod.net Wed Feb 13 00:13:39 2002 From: paul@prescod.net (Paul Prescod) Date: Tue, 12 Feb 2002 16:13:39 -0800 Subject: [XML-SIG] WSDL library ? References: <3C667AC9.537F7330@lemburg.com> <3C669D16.2EE8564D@zolera.com> <3C66FFBB.8E95DFCC@prescod.net> <3C680B5F.7050606@zolera.com> <3C681A46.30C007A4@prescod.net> <3C6972E5.9090608@zolera.com> Message-ID: <3C69AFB3.F99ACB47@prescod.net> Rich Salz wrote: > > ... > > > Of course it should be possible to refer to an XML schema for > > *document-oriented* SOAP. But for RPC-oriented SOAP, older IDLs are > > actually much simpler. > > DCE IDL; it's an ISO standard. :) I hate to say it but I've never really had any problem with IDL. I don't see the benefit in inventing an angle-bracket syntax for it just to have done so. >... > > 2. The interface description language should be as easy to read and > > write (semantically, not syntactically) as standard IDLs like CORBA and > > COM IDLs. There is a sense that WSDL is much, much more complicated and > > this is going to hurt its adoption on the open Internet. > > You wanna get rid of the "abstract" layers? Er, If I'm going to use SOAP as a replacement for CORBA/DCOM, I'd like the abstract layers to be as abstract as IDL and no more and no less. Right now they seem both more and less. They are less abstract in that they are defined in XML schema which is fundamentally a language for defining XML vocabularies, not "abstract data models." They are MORE abstract in the sense that if you point out the problems of XML schema in this area people will say: "don't think of it as directly specifying the XML elements. Think of it as an abstract definition language." Only it is so hard to think of an XML vocabulray definition language as an abstract data typing that it makes my head hurt and you almost have to mentally indirect through IDL. > > 3. If the interface definition language is to be used both for RPC > > *and* document-style interfaces then it needs first-class concepts of > > array and struct, which XML Schema lacks, for RPC-style interfaces. > > Arguably, using schema for both kinds of interfaces is more confusing > > than helpful. > > Not sure what we could do. Well I know it would never go over but to me IDL is already a decent abstract interface definition language. What does XML Schema provide for that purpose beyond buzzword compliance. Of course XML Schema is much more appropriate for defining the syntax of *document-style* messages. But they are a very different kettle of fish. They are defined by their syntax, not their "abstract model." Heck, maybe XML schema is even good for defining the *syntax* (not data model) of RPC messages. You could somehow refer from the schema up to the abstract definition to say which elements represented which parameters and structure properties. You know CORBA etc. What's wrong with IDL other than being unfashionable? Paul Prescod From uche.ogbuji@fourthought.com Wed Feb 13 06:31:29 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Tue, 12 Feb 2002 23:31:29 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Mon, 11 Feb 2002 13:20:15 EST." <3C680B5F.7050606@zolera.com> Message-ID: <200202130631.g1D6VT703977@localhost.localdomain> > > I will be extremely disappointed if WSDL 1.1 is made SOAP only. > > > Don't worry, I expect to lose that battle. Good. It looks as if you should have made it to SPAM10 for the Web services panel. You would have been the only one with any decent amount of good things to say about SOAP ;-) Pretty scary when I'd be more comfortable pointing people to a hack like XML-RPC than I would be pointing people to SOAP. This also seems to be emerging consensus, in the several communities in which I'm involved. Besides the ever enthusiastic giants, and the pretenders like IONA, SOAP is losing its shine at an amazing pace. Good riddance. [ Wow. And I tried to make a conscious effort not to rant ;-) ] -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Wed Feb 13 06:41:45 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Tue, 12 Feb 2002 23:41:45 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Paul Prescod of "Mon, 11 Feb 2002 11:23:50 PST." <3C681A46.30C007A4@prescod.net> Message-ID: <200202130641.g1D6fje03993@localhost.localdomain> > Rich Salz wrote: > > > > > I will be extremely disappointed if WSDL 1.1 is made SOAP only. > > > > Don't worry, I expect to lose that battle. > > > > > WSDL's biggest problem, IMO, is that people feel it is not a language > > > that should be authored by hand. > > > > What's preventing it? In my view, it's the cut/paste repetition you > > have to keep doing. > > That's part of it. Plus there are so many levels (see below). Often you > see an element type with the same name as a part, with the same name as > an operation, with the same name as a port type. You've got four levels > to do one thing. > > Another part is using XML Schema as an "abstract type description > language". It's a little ridiculous to use a schema language without > standard OO notions of "property", "array", "struct" etc. But I'm sure > I'd get voted down. Tis a paradox indeed. Makes no sense for RPC, yet WSDL is the Web Services answer to IDL. The other paradox is that in almost every CORBA development scenario I've been in, the IDL is the part that gets written by hand, and the language-specific bindings get generated. In WS land, people want to generate WSDL from Java interfaces. I've actually heard the idea of hand-editing WSDL called "nutty". > WSDL 1.2 should be formally split into two languages: e.g. WS Interface > Description L and Service Implementation Definition Language. Perhaps > the Service Implementation Definition Language could be entirely > protocol-binding-specific. There you go telling WGs to split languages, again, Paul. ;-) -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Wed Feb 13 06:47:53 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Tue, 12 Feb 2002 23:47:53 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from "M.-A. Lemburg" of "Sun, 10 Feb 2002 19:23:12 +0100." <3C66BA90.C4231504@lemburg.com> Message-ID: <200202130647.g1D6lrX04005@localhost.localdomain> > Eron Lloyd wrote: > > > > I've been playing with wsdllib, from a IBM developerWorks article by Uche. > > I've attached the actual module for you to look at. The article can be found > > here: > > http://www-105.ibm.com/developerworks/education.nsf/webservices-onlinecourse-bytitle/D092605075D1D67D86256A7E0042432D?OpenDocument > > That's the one I meant: the licensing for that module isn't > clear though (at least not to me). IANAL, but the way I read it, the IBM OSS license we use is less restrictive than even that of mxDateTime ;-). We didn't mind using it because it's OSI approved. The main problem is maintenance. Neither Mike nor I have had a moment to maintain it, though we have considered incorporating it into 4Suite, and updating it as we do so. But it comes with no promises: we can't even stick to 4Suite release schedules. P.S. If I seem full of emoticons lately, it's because I'm a bit tired of people misinterpreting my bluntness. Supposedly they help, though I personally tend to ignore them. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From veillard@redhat.com Wed Feb 13 08:21:48 2002 From: veillard@redhat.com (Daniel Veillard) Date: Wed, 13 Feb 2002 03:21:48 -0500 Subject: [XML-SIG] WSDL library ? In-Reply-To: <200202130631.g1D6VT703977@localhost.localdomain>; from uche.ogbuji@fourthought.com on Tue, Feb 12, 2002 at 11:31:29PM -0700 References: <200202130631.g1D6VT703977@localhost.localdomain> Message-ID: <20020213032148.W24231@redhat.com> On Tue, Feb 12, 2002 at 11:31:29PM -0700, Uche Ogbuji wrote: > > > I will be extremely disappointed if WSDL 1.1 is made SOAP only. > > > > > > Don't worry, I expect to lose that battle. > > Good. > > It looks as if you should have made it to SPAM10 for the Web services panel. > You would have been the only one with any decent amount of good things to say > about SOAP ;-) > > Pretty scary when I'd be more comfortable pointing people to a hack like > XML-RPC than I would be pointing people to SOAP. Fits the 80%/20% rule perfectly. Less than 5 pages and easy to implement reliably. For the people in that 80% pool it's simply the best solution. The only problem is being able to cache calls without side-effects, but it's a scaling issue, and that minimal addition could probably be standardized on top the core (like HTTP/1.1 vs HTTP/1.0 initial goal). > [ Wow. And I tried to make a conscious effort not to rant ;-) ] ranting ? nahhh Daniel -- Daniel Veillard | Red Hat Network https://rhn.redhat.com/ veillard@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ From mal@lemburg.com Wed Feb 13 09:43:40 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 13 Feb 2002 10:43:40 +0100 Subject: [XML-SIG] WSDL library ? References: <200202130647.g1D6lrX04005@localhost.localdomain> Message-ID: <3C6A354C.97F42BA0@lemburg.com> Uche Ogbuji wrote: > > > Eron Lloyd wrote: > > > > > > I've been playing with wsdllib, from a IBM developerWorks article by Uche. > > > I've attached the actual module for you to look at. The article can be found > > > here: > > > http://www-105.ibm.com/developerworks/education.nsf/webservices-onlinecourse-bytitle/D092605075D1D67D86256A7E0042432D?OpenDocument > > > > That's the one I meant: the licensing for that module isn't > > clear though (at least not to me). > > IANAL, but the way I read it, the IBM OSS license we use is less restrictive > than even that of mxDateTime ;-). > > We didn't mind using it because it's OSI approved. So the IBM OSS license does apply to the lib there ? That was basically what I was unsure about because even though the site mentions that all software is published under the OSS license, the source code gives no mention (not even a copyright). > The main problem is maintenance. Neither Mike nor I have had a moment to > maintain it, though we have considered incorporating it into 4Suite, and > updating it as we do so. But it comes with no promises: we can't even stick > to 4Suite release schedules. Since it heavily relies on 4Suite this would probably be the best thing to do. If it breaks we'll yell out loud ;-) (and provide patches, of course...). -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From mal@lemburg.com Wed Feb 13 09:50:44 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 13 Feb 2002 10:50:44 +0100 Subject: [XML-SIG] WSDL library ? References: <200202130641.g1D6fje03993@localhost.localdomain> Message-ID: <3C6A36F4.F4B44AE@lemburg.com> Uche Ogbuji wrote: > > > Another part is using XML Schema as an "abstract type description > > language". It's a little ridiculous to use a schema language without > > standard OO notions of "property", "array", "struct" etc. But I'm sure > > I'd get voted down. > > Tis a paradox indeed. Makes no sense for RPC, yet WSDL is the Web Services > answer to IDL. > > The other paradox is that in almost every CORBA development scenario I've been > in, the IDL is the part that gets written by hand, and the language-specific > bindings get generated. In WS land, people want to generate WSDL from Java > interfaces. This is what I'm after for Python. The "only" problem is defining the input and output types of functions -- the programmer will have to provide this information somehow and in some format and I'm not really sure which road to follow here (e.g. home grown, ZSI type object style, XML Schema lookalike...). This gets particularly interesting when you try to model Python's notion of interfaces onto the definition, e.g. first parameter needs to be a sequence, second a number, third should provide a mapping interface, etc... Oh yes, and whatever the format will be, it'll have to provide enough information to be able to generate SOAP type declarations, WSDL type declarations, type check XML-RPC requests, and so on. I'll keep on dreaming... -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From etienne@usablenet.com Wed Feb 13 13:19:57 2002 From: etienne@usablenet.com (Etienne Antoniutti Di Muro) Date: Wed, 13 Feb 2002 14:19:57 +0100 Subject: [XML-SIG] PyXML-0.7 on MACOS X Message-ID: <6029076A-2084-11D6-BDE0-0003930197B6@usablenet.com> Hi everybody !! I'm trying to install PyXML-0.7 on MACOS X. Everything works fine, except I get the following error msg: """ running build_ext building '_xmlplus.parsers.pyexpat' extension skipping extensions/pyexpat.c (build/temp.darwin-5.2-Power Macintosh-2.2/pyexpat.o up-to-date) skipping extensions/expat/lib/xmlparse.c (build/temp.darwin-5.2-Power Macintosh-2.2/xmlparse.o up-to-date) skipping extensions/expat/lib/xmlrole.c (build/temp.darwin-5.2-Power Macintosh-2.2/xmlrole.o up-to-date) skipping extensions/expat/lib/xmltok.c (build/temp.darwin-5.2-Power Macintosh-2.2/xmltok.o up-to-date) cc -Wl,-F. -Wl,-U,_environ -bundle -framework Python build/temp.darwin-5.2-Power Macintosh-2.2/pyexpat.o build/temp.darwin-5.2-Power Macintosh-2.2/xmlparse.o build/temp.darwin-5.2-Power Macintosh-2.2/xmlrole.o build/temp.darwin-5.2-Power Macintosh-2.2/xmltok.o -o build/lib.darwin-5.2-Power Macintosh-2.2/_xmlplus/parsers/pyexpat.so /usr/bin/ld: can't use -U flags when -twolevel_namespace is in effect error: command 'cc' failed with exit status 1 """ I know it is a cc error, but any idea to work around ?? cheers ----- Etienne Antoniutti Di Muro etienne@usablenet.com visit: http://www.usablenet.com From tpassin@home.com Wed Feb 13 14:05:55 2002 From: tpassin@home.com (Thomas B. Passin) Date: Wed, 13 Feb 2002 09:05:55 -0500 Subject: [XML-SIG] XBEL Bug Fixes Message-ID: <001b01c1b497$8ea4f040$0bf13044@tbp> I had occasion to use XBEL for an experiment, and I found several bugs in msie_parse, the script that turns IE bookmarks into the XBEL format. I don't know if any of the other format parsers have similar bugs or not. I include fixes for them. I used the files from pyxml 0.7, but It doesn't look like the code has changed for some time. I'm not sure who would be adding the fixes, or whether this should go to Sourceforge as a bug report, so I'm reporting them here. Hope it will be useful. 1) The code starting at line 27 that walks the bookmark directory tree fails to leave each directory after it has been visited. This causes massively incorrect nesting of directories. Successive folders tend to get nested in previous ones, which is not what is wanted. Here is a version that works as expected - one line is added: def __walk(self, subpath=[]): # traverse favourites folder path = os.path.join(self.path, string.join(subpath, os.sep)) for file in os.listdir(path): fullname = os.path.join(path, file) if os.path.isdir(fullname): self.bms.add_folder(file,None) self.__walk(subpath + [file]) self.bms.leave_folder() ###### Add this line ###### else: url = self.__geturl(fullname) if url: self.bms.add_bookmark(os.path.splitext(file)[0],None, None,None,url) 2) The format of IE bookmark files (also called "shortcuts" for some reason) has changed - there is a new "[DEFAULT]" section at the start of the bookmark - and the parser cannot find the url in many or most cases. However, some bookmarks could still be in the old format, so you have to check for both, or look for "[InternetShortcut" beond the first line. The code in question starts on line 41. Here is a version that works, although it makes no attempt to get the date modified value which is now sometimes included in the bookmark: def __geturl(self, file): try: fp = open(file) while 1: line=fp.readline() if not line: return None if line=="[InternetShortcut]\n": ### If still old format s = fp.readline() if not s: break if s[:4] == "URL=": fp.close() return s[4:-1] elif line=="[DEFAULT]\n": ### New format s = fp.readline() if not s: break if s[:8] == "BASEURL=": fp.close() return s[8:-1] except IOError: return None fp.close() return None From uche.ogbuji@fourthought.com Wed Feb 13 14:40:46 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 13 Feb 2002 07:40:46 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Daniel Veillard of "Wed, 13 Feb 2002 03:21:48 EST." <20020213032148.W24231@redhat.com> Message-ID: <200202131440.g1DEekF05173@localhost.localdomain> > On Tue, Feb 12, 2002 at 11:31:29PM -0700, Uche Ogbuji wrote: > > > > I will be extremely disappointed if WSDL 1.1 is made SOAP only. > > > > > > > > > Don't worry, I expect to lose that battle. > > > > Good. > > > > It looks as if you should have made it to SPAM10 for the Web services panel. > > You would have been the only one with any decent amount of good things to say > > about SOAP ;-) > > > > Pretty scary when I'd be more comfortable pointing people to a hack like > > XML-RPC than I would be pointing people to SOAP. > > Fits the 80%/20% rule perfectly. Less than 5 pages and easy to implement > reliably. For the people in that 80% pool it's simply the best solution. > The only problem is being able to cache calls without side-effects, but > it's a scaling issue, and that minimal addition could probably be > standardized on top the core (like HTTP/1.1 vs HTTP/1.0 initial goal). But it still is hacky. The biggest problems in my own experience are: * ASCII only (UTF-7, anyone?) * Very sketchy datatyping support for RPC, including no support for generic types. Some people might consider part 2 outside the 80% point, but I disagree: I think that flexible data types are the key to complex problem solving using RPC. Of course, that is bearing in mind that it's better to to avoid RPC entirely if one has complex problems to solve. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Wed Feb 13 14:42:51 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 13 Feb 2002 07:42:51 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from "M.-A. Lemburg" of "Wed, 13 Feb 2002 10:43:40 +0100." <3C6A354C.97F42BA0@lemburg.com> Message-ID: <200202131442.g1DEgpe05182@localhost.localdomain> > Uche Ogbuji wrote: > > > > > Eron Lloyd wrote: > > > > > > > > I've been playing with wsdllib, from a IBM developerWorks article by Uche. > > > > I've attached the actual module for you to look at. The article can be found > > > > here: > > > > http://www-105.ibm.com/developerworks/education.nsf/webservices-onlinecourse-bytitle/D092605075D1D67D86256A7E0042432D?OpenDocument > > > > > > That's the one I meant: the licensing for that module isn't > > > clear though (at least not to me). > > > > IANAL, but the way I read it, the IBM OSS license we use is less restrictive > > than even that of mxDateTime ;-). > > > > We didn't mind using it because it's OSI approved. > > So the IBM OSS license does apply to the lib there ? That was > basically what I was unsure about because even though the > site mentions that all software is published under the OSS license, > the source code gives no mention (not even a copyright). Ah. I see. The next release will have a COPYRIGHT file. I hope the above public declaration by one of the authors is enough, for now. > > The main problem is maintenance. Neither Mike nor I have had a moment to > > maintain it, though we have considered incorporating it into 4Suite, and > > updating it as we do so. But it comes with no promises: we can't even stick > > to 4Suite release schedules. > > Since it heavily relies on 4Suite this would probably be the > best thing to do. If it breaks we'll yell out loud ;-) (and > provide patches, of course...). K. That's probably what we'll do. Soon, I hope. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From akuchlin@mems-exchange.org Wed Feb 13 15:09:31 2002 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Wed, 13 Feb 2002 10:09:31 -0500 Subject: [XML-SIG] WSDL library ? In-Reply-To: <200202131440.g1DEekF05173@localhost.localdomain> References: <20020213032148.W24231@redhat.com> <200202131440.g1DEekF05173@localhost.localdomain> Message-ID: <20020213150931.GA573@ute.mems-exchange.org> On Wed, Feb 13, 2002 at 07:40:46AM -0700, Uche Ogbuji wrote: >But it still is hacky. The biggest problems in my own experience are: >* Very sketchy datatyping support for RPC, including no support for generic >types. * In particular, lack of support for None is extremely annoying. You end up converting None into an empty string or something like that, and losing the distinction between the two. --amk (www.amk.ca) Things are getting out of control; even *I* can't play this many games at once! -- The Doctor, in "Ghost Light" From paul@prescod.net Wed Feb 13 15:52:53 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 07:52:53 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130641.g1D6fje03993@localhost.localdomain> Message-ID: <3C6A8BD5.5D4136A5@prescod.net> Uche Ogbuji wrote: > >... > > There you go telling WGs to split languages, again, Paul. ;-) Maybe half-way through every standardization process there should be a mandatory step where they ask the community for a vote on whether to split the spec. It doesn't matter what the spec is, it always seems to make sense to split it. ;) * http://lists.w3.org/Archives/Public/xml-dist-app/2002Feb/0234.html Paul Prescod From paul@prescod.net Wed Feb 13 15:56:37 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 07:56:37 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> Message-ID: <3C6A8CB5.8B12259A@prescod.net> Daniel Veillard wrote: > >... > > Fits the 80%/20% rule perfectly. Even so, XML-RPC really is a hack. It doesn't support Unicode, has a silly definition of float, is needlessly bloated (to the point of obfuscation) , has no way of inlining XML elements etc. You could have something just as easy to use that wasn't a hack. e.g. Here's one I prefer: http://www.focusresearch.com/gregor/sw/XPC/XPC-0.2.html > ... Less than 5 pages and easy to implement > reliably. For the people in that 80% pool it's simply the best solution. > The only problem is being able to cache calls without side-effects, but > it's a scaling issue, and that minimal addition could probably be > standardized on top the core (like HTTP/1.1 vs HTTP/1.0 initial goal). If you want to scale I'd say you shouldn't use RPC...that's another emerging concensus... Here's my contribution to it: http://www.xml.com/pub/a/2002/02/06/rest.html Paul Prescod From rsalz@zolera.com Wed Feb 13 16:24:23 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 11:24:23 -0500 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> Message-ID: <3C6A9337.10F85812@zolera.com> > If you want to scale I'd say you shouldn't use RPC. Please define what you mean by RPC when you say this. /r$ -- Zolera Systems, Securing web services (XML, SOAP, Signatures, Encryption) http://www.zolera.com From paul@prescod.net Wed Feb 13 16:49:28 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 08:49:28 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> Message-ID: <3C6A9918.D6A96181@prescod.net> Rich Salz wrote: > > > If you want to scale I'd say you shouldn't use RPC. > > Please define what you mean by RPC when you say this. Oh dear...I don't have time for another debate about this this week. And surely you've seen a lot of it on xml-dist-app. Here's Fielding's definition: "What distinguishes RPC from other forms of network-based application communication is the notion of invoking a procedure on the remote machine, wherein the protocol identifies the procedure and passes it a fixed set of parameters, and then waits for the answer to be supplied within a return message using the same interface. Remote method invocation (RMI) is similar, except that the procedure is identified as an {object, method} tuple rather than a service procedure." When I say RPC I mean Remote Procedure Call, which means that it is a form of networking that treats network interactions as procedure calls in a programming language. In my experience, the more you try to do networking as "procedure calls" the more problems you have with scale. On the other hand, for ease of use, RPC can't be beat. For instance if a Python call looks like stock = foo.getStockQuote("MSFT", some_date) then it is very tempting to turn this into a network call of MSFTsome_date. This works great for small systems but I feel it is the wrong approach for big ones. First, you need to have some way to say if it is cachable. Let's say: stock = foo.getStockQuote("MSFT", some_date, _withcache=1) Next problem is extensibility. This is very poorly extensible. So you might decide to use keyword arguments instead: stock = foo.getStockQuote(stock_name = "MSFT", date = some_date, _withcache=1) It's starting to look less and less like a normal Python procedure call and more and more like some kind of networking protocol. I could go on, describing more and more permutations to make this procedure call networking friendly. Many people agree with me thus far. I happen to be among a small minority that thinks that the logical endpoint of this is: stock = http.GET("http://www.stocks.com/%(stockquote)s/%(some_date)s") And as I'm short of time for the whole discussion, here are a few URIs: * http://www.xml.com/pub/a/2002/02/06/rest.html * http://internet.conveyor.com/RESTwiki/moin.cgi/ * http://internet.conveyor.com/RESTwiki/moin.cgi/RestFaq * http://www.itworld.com/nl/xml_prac/01312002/ Paul Prescod From fredrik@pythonware.com Wed Feb 13 17:44:31 2002 From: fredrik@pythonware.com (Fredrik Lundh) Date: Wed, 13 Feb 2002 18:44:31 +0100 Subject: [XML-SIG] WSDL library ? References: <200202131440.g1DEekF05173@localhost.localdomain> Message-ID: <038101c1b4b7$7e52e060$ced241d5@hagrid> Uche Ogbuji wrote: > But it still is hacky. The biggest problems in my own experience are: > > * ASCII only (UTF-7, anyone?) that's a myth. in private correspondence, dave has always been 100% clear that an XML-RPC string can contain anything that's allowed by XML. (you cannot read Dave stuff with your W3C goggles on ;-) and contrary to what the wienerboys are claiming, you can use XML-RPC over HTTPS too, without breaking any law. > * Very sketchy datatyping support for RPC, including no support for generic > types. > > Some people might consider part 2 outside the 80% point, but I disagree: I > think that flexible data types are the key to complex problem solving using > RPC. > > Of course, that is bearing in mind that it's better to to avoid RPC entirely > if one has complex problems to solve. exactly. what was your point again? From fredrik@pythonware.com Wed Feb 13 17:43:37 2002 From: fredrik@pythonware.com (Fredrik Lundh) Date: Wed, 13 Feb 2002 18:43:37 +0100 Subject: [XML-SIG] WSDL library ? References: <200202131440.g1DEekF05173@localhost.localdomain> Message-ID: <037e01c1b4b7$7d785ee0$ced241d5@hagrid> Uche Ogbuji wrote: > But it still is hacky. The biggest problems in my own experience are: > > * ASCII only (UTF-7, anyone?) that's a myth. in private correspondence, dave has always been 100% clear that an XML-RPC string can contain anything that's allowed by XML. (you cannot read Dave stuff with your W3C goggles on ;-) and contrary to what the wienerboys are claiming, you can use XML-RPC over HTTPS too, without breaking any law. > * Very sketchy datatyping support for RPC, including no support for generic > types. > > Some people might consider part 2 outside the 80% point, but I disagree: I > think that flexible data types are the key to complex problem solving using > RPC. > > Of course, that is bearing in mind that it's better to to avoid RPC entirely > if one has complex problems to solve. exactly. what was your point again? From fredrik@pythonware.com Wed Feb 13 17:54:28 2002 From: fredrik@pythonware.com (Fredrik Lundh) Date: Wed, 13 Feb 2002 18:54:28 +0100 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> Message-ID: <038201c1b4b7$7f0d56c0$ced241d5@hagrid> paul wrote: > When I say RPC I mean Remote Procedure Call, which means that it is a > form of networking that treats network interactions as procedure calls > in a programming language. In my experience, the more you try to do > networking as "procedure calls" the more problems you have with scale. > On the other hand, for ease of use, RPC can't be beat. I'm not sure I agree, based on recent experiences from a large REST- based system -- given the right tools, writing a thin interface layer for a REST-style protocol is not much harder than writing a bunch of XML- RPC calls. (well, I guess you could save some time if you use something like xmlrpclib, and don't have to write any documentation or test cases, ... but compared to SOAP+WSDL, REST+simple tools is far easier to use -- at least for people with small brains, like me ;-) > Many people agree with me thus far. I happen to be among a small > minority that thinks that the logical endpoint of this is: > > stock = http.GET("http://www.stocks.com/%(stockquote)s/%(some_date)s") well, if it's any help, I know you're right. From rsalz@zolera.com Wed Feb 13 18:01:40 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 13:01:40 -0500 Subject: [XML-SIG] WSDL library ? References: <200202131440.g1DEekF05173@localhost.localdomain> <038101c1b4b7$7e52e060$ced241d5@hagrid> Message-ID: <3C6AAA04.6060501@zolera.com> > that's a myth. in private correspondence, dave has always been 100% > clear that an XML-RPC string can contain anything that's allowed by XML. In public, Dave said "oops, I goofed" and said he never meant to be ascii-only. Dave refuses to write anything approaching a rigorous spec, so you never really know ... /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From paul@prescod.net Wed Feb 13 18:01:57 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 10:01:57 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> <038201c1b4b7$7f0d56c0$ced241d5@hagrid> Message-ID: <3C6AAA15.34930040@prescod.net> Fredrik Lundh wrote: > >... > > I'm not sure I agree, based on recent experiences from a large REST- > based system -- given the right tools, writing a thin interface layer for > a REST-style protocol is not much harder than writing a bunch of XML- > RPC calls. Well we're just splitting very thin hairs here, but the nice thing about RPC is that you put the API on the wire so that the client doesn't need even a thin interface layer. This matters because distributing a thin interface layer to Java, Python, Perl and C++ clients could be a pain. > (well, I guess you could save some time if you use something like xmlrpclib, > and don't have to write any documentation or test cases, ... but compared > to SOAP+WSDL, REST+simple tools is far easier to use -- at least for people > with small brains, like me ;-) If you were a C# programmer, you might feel otherwise. In theory they just hit a button to generate their RPC interface and it handles all marshalling and unmarshalling for them. In theory. > > Many people agree with me thus far. I happen to be among a small > > minority that thinks that the logical endpoint of this is: > > > > stock = http.GET("http://www.stocks.com/%(stockquote)s/%(some_date)s") > > well, if it's any help, I know you're right. Despite the fact that I think you're a very smart guy, we hardly ever agree on anything. Is it too late for me to become a fan of RPC? ;) Paul Prescod From mal@lemburg.com Wed Feb 13 18:39:46 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 13 Feb 2002 19:39:46 +0100 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> Message-ID: <3C6AB2F2.5BBC7E3D@lemburg.com> Paul Prescod wrote: > > Many people agree with me thus far. I happen to be among a small > minority that thinks that the logical endpoint of this is: > > stock = http.GET("http://www.stocks.com/%(stockquote)s/%(some_date)s") Just to make sure I got the WSDL 1.1 spec right: this is covered by the standard, isn't it ? (I wonder why people are so keen on sending complex objects over the wire -- strings do just fine :-) -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From paul@prescod.net Wed Feb 13 18:03:09 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 10:03:09 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> <038201c1b4b7$7f0d56c0$ced241d5@hagrid> Message-ID: <3C6AAA5D.5AB57606@prescod.net> Fredrik Lundh wrote: > >... > > I'm not sure I agree, based on recent experiences from a large REST- > based system -- given the right tools, writing a thin interface layer for > a REST-style protocol is not much harder than writing a bunch of XML- > RPC calls. Are you allowed to discuss your system? Maybe a white paper some day? Paul Prescod From brian@sweetapp.com Wed Feb 13 19:55:54 2002 From: brian@sweetapp.com (Brian Quinlan) Date: Wed, 13 Feb 2002 11:55:54 -0800 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6A8CB5.8B12259A@prescod.net> Message-ID: <002301c1b4c8$72c1ffe0$445d4540@Dell2> Paul Prescod wrote: > Even so, XML-RPC really is a hack. It doesn't support Unicode, has a > silly definition of float, is needlessly bloated (to the point of > obfuscation) , has no way of inlining XML elements etc. You could have > something just as easy to use that wasn't a hack. e.g. 1. I think the ASCII string requirement is widely ignored 2. What's wrong with the float definition (aside from being vague)? 3. If you are trying to inline XML elements then you have a peg/hole mismatch :-) One of thing things that I really like about XML-RPC is that it is easy to use from many languages, including statically typed ones like C. I think that is because all of the XML-RPC types are reasonably easy to deal with in C and the fixed format allows almost all of the marshalling/unmarshalling logic to be done at the library level. Cheers, Brian From martin@v.loewis.de Wed Feb 13 19:59:21 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 13 Feb 2002 20:59:21 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <038101c1b4b7$7e52e060$ced241d5@hagrid> References: <200202131440.g1DEekF05173@localhost.localdomain> <038101c1b4b7$7e52e060$ced241d5@hagrid> Message-ID: "Fredrik Lundh" writes: > > * ASCII only (UTF-7, anyone?) > > that's a myth. in private correspondence, dave has always been 100% > clear that an XML-RPC string can contain anything that's allowed by XML. That is no contradiction. He has also been pretty clear in public that XML-RPC is completely XML compliant, in the sense that no XML construct is banned. So you can use encodings, character references, CDATA sections, and everything else. HOWEVER, the only acceptable content of the "string" element is a string (ie. PCDATA) that restricts itself to only characters with ordinal values below 128, as specified byte "ASCII string" in http://www.xmlrpc.com/spec I do not think that dave has ever claimed, in public or private, that this is meant to be "arbitrary text". Regards, Martin From martin@v.loewis.de Wed Feb 13 19:59:47 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 13 Feb 2002 20:59:47 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6AAA04.6060501@zolera.com> References: <200202131440.g1DEekF05173@localhost.localdomain> <038101c1b4b7$7e52e060$ced241d5@hagrid> <3C6AAA04.6060501@zolera.com> Message-ID: Rich Salz writes: > In public, Dave said "oops, I goofed" and said he never meant to be > ascii-only. Reference? Regards, Martin From brian@sweetapp.com Wed Feb 13 20:12:44 2002 From: brian@sweetapp.com (Brian Quinlan) Date: Wed, 13 Feb 2002 12:12:44 -0800 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message-ID: <002401c1b4ca$cc7026a0$445d4540@Dell2> FYI: here is the XML-RPC Unicode string enhancement proposed by Iain Colledge: http://www.xmlrpc.com/discuss/msgReader$2129?mode=day Cheers, Brian From rsalz@zolera.com Wed Feb 13 20:11:10 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 15:11:10 -0500 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> Message-ID: <3C6AC85E.50601@zolera.com> > It looks as if you should have made it to SPAM10 for the Web services panel. > You would have been the only one with any decent amount of good things to say > about SOAP ;-) Budgets prevented it; I was invited (twice :). > Pretty scary when I'd be more comfortable pointing people to a hack like > XML-RPC than I would be pointing people to SOAP. What's wrong with SOAP? I like it because: - Supports more than just sender-receiver; e.g., intermediates. - SOAP with Attachments - Ability to send XML - Richer data types - href/id handles pointer aliasing - href allows (transparent!) refs to network data - extensible architecture (header elements) - reasonable size to implement I don't like XML-RPC because it doesn't have the above. :) > This also seems to be emerging consensus, in the several communities in which > I'm involved. Besides the ever enthusiastic giants, and the pretenders like > IONA, SOAP is losing its shine at an amazing pace. Not from where I sit. > Good riddance. Why? What do you not like about it? /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From rsalz@zolera.com Wed Feb 13 20:16:49 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 15:16:49 -0500 Subject: [XML-SIG] WSDL library ? References: <200202130641.g1D6fje03993@localhost.localdomain> Message-ID: <3C6AC9B1.3060203@zolera.com> > The other paradox is that in almost every CORBA development scenario I've been > in, the IDL is the part that gets written by hand, and the language-specific > bindings get generated. In WS land, people want to generate WSDL from Java > interfaces. > > I've actually heard the idea of hand-editing WSDL called "nutty". I think this is because people want to take legacy applications and turn them into services, not because it's necessarily the best way to proceed for new code. > There you go telling WGs to split languages, again, Paul. ;-) Others are on the WSDL wg like this, too. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From fredrik@pythonware.com Wed Feb 13 20:13:53 2002 From: fredrik@pythonware.com (Fredrik Lundh) Date: Wed, 13 Feb 2002 21:13:53 +0100 Subject: [XML-SIG] WSDL library ? References: <200202131440.g1DEekF05173@localhost.localdomain><038101c1b4b7$7e52e060$ced241d5@hagrid> Message-ID: <06b801c1b4cc$02db5060$ced241d5@hagrid> martin wrote: > HOWEVER, the only acceptable content of the "string" element is a > string (ie. PCDATA) that restricts itself to only characters with > ordinal values below 128, as specified byte "ASCII string" in > > http://www.xmlrpc.com/spec the specification says: "The body of the request is in XML. A procedure executes on the server and the value it returns is also formatted in XML." and then it says: "ASCII string" and in response to the question "what characters can you use in a string" (asked by me), it says: "Any characters are allowed in a string except < and &, which are encoded as < and &" looks like the "any valid XML character is okay" wins by 2-1. > I do not think that dave has ever claimed, in public or private, that > this is meant to be "arbitrary text". "Any characters are allowed in a string except < and &, which are encoded as < and &" From rsalz@zolera.com Wed Feb 13 20:24:43 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 15:24:43 -0500 Subject: [XML-SIG] WSDL library ? References: <200202130641.g1D6fje03993@localhost.localdomain> <3C6A36F4.F4B44AE@lemburg.com> Message-ID: <3C6ACB8B.8060305@zolera.com> >> In WS land, people want to generate WSDL from Java >>interfaces. > This is what I'm after for Python. The "only" problem is defining > the input and output types of functions -- the programmer will have > to provide this information somehow and in some format and > I'm not really sure which road to follow here (e.g. home grown, > ZSI type object style, XML Schema lookalike...). ZSI typecodes are intended to be used "easily" as the output of an XML Schema compiler, so the last two items should be pretty much the same. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From rsalz@zolera.com Wed Feb 13 20:27:03 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 15:27:03 -0500 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> Message-ID: <3C6ACC17.6040408@zolera.com> Ahh, you need only say "RPC doesn't scale (as opposed to REST)" and I'd've understood. Worth posting this just for the double contraction of "I would have" :) /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From rsalz@zolera.com Wed Feb 13 20:28:53 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 15:28:53 -0500 Subject: [XML-SIG] WSDL library ? References: <002301c1b4c8$72c1ffe0$445d4540@Dell2> Message-ID: <3C6ACC85.8090808@zolera.com> > One of thing things that I really like about XML-RPC is that it is easy > to use from many languages, including statically typed ones like C. I > think that is because all of the XML-RPC types are reasonably easy to > deal with in C and the fixed format allows almost all of the > marshalling/unmarshalling logic to be done at the library level. Same for SOAP. One of the things I like about SOAP RPC encoding is that you can tell the difference between char *p, *q; p = q = "hello"; and this: p = "hello"; q = strdup(p); /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From brian@sweetapp.com Wed Feb 13 20:32:45 2002 From: brian@sweetapp.com (Brian Quinlan) Date: Wed, 13 Feb 2002 12:32:45 -0800 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6AC85E.50601@zolera.com> Message-ID: <002501c1b4cd$983a7db0$445d4540@Dell2> > What's wrong with SOAP? wc soap-spec.txt 1519 10671 79445 soap-spec.txt wc xmlrpc-spec.txt 315 1657 15838 xmlrpc-spec.txt Cheers, Brian From rsalz@zolera.com Wed Feb 13 20:32:12 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 15:32:12 -0500 Subject: [XML-SIG] WSDL library ? References: <002301c1b4c8$72c1ffe0$445d4540@Dell2> Message-ID: <3C6ACD4C.4090205@zolera.com> {Possible re-send, excuse the duplicate} > One of thing things that I really like about XML-RPC is that it is easy > to use from many languages, including statically typed ones like C. I > think that is because all of the XML-RPC types are reasonably easy to > deal with in C and the fixed format allows almost all of the > marshalling/unmarshalling logic to be done at the library level. This is all true for SOAP, too. One of the things I like about SOAP is that the RPC Encoding allows you to tell the difference between: char *p, *q; p = q = "hello"; and this: p = "hello"; q = strdup(p); Simple apps don't care, but real RPC programmers do. :) /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From rsalz@zolera.com Wed Feb 13 20:38:52 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 15:38:52 -0500 Subject: [XML-SIG] WSDL library ? References: <200202131440.g1DEekF05173@localhost.localdomain> <038101c1b4b7$7e52e060$ced241d5@hagrid> <3C6AAA04.6060501@zolera.com> Message-ID: <3C6ACEDC.4020806@zolera.com> Martin v. Loewis wrote: > Rich Salz writes: > > >>In public, Dave said "oops, I goofed" and said he never meant to be >>ascii-only. >> > > Reference? If you look through the xml-rpc discussion stuff he maintains, you can find a posting from him. I can't find it, poking with google wasn't helpful, but I am positive, just not clear if it was at davenet, userland, xml-rpc, discuss@yahoogroups, etc. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From paul@prescod.net Wed Feb 13 20:49:31 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 12:49:31 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> <3C6ACC17.6040408@zolera.com> Message-ID: <3C6AD15B.F22B3FA8@prescod.net> Rich Salz wrote: > > Ahh, you need only say "RPC doesn't scale (as opposed to REST)" and > I'd've understood. > > Worth posting this just for the double contraction of "I would have" :) But w'd you've agreed? ;) You have a LOT of experience building networked systems so I would love to hear your view. With all of your experience in internet protocols I would have thought you'd be on the non-RPC side (as internet protocols are typically not RPC). But then I'd've thought Fredrik would have been on the RPC side because of his experience building upon xmlrpclib and soaplib, so I'm batting 0. Paul Prescod From uche.ogbuji@fourthought.com Wed Feb 13 21:09:08 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 13 Feb 2002 14:09:08 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from "Fredrik Lundh" of "Wed, 13 Feb 2002 18:54:28 +0100." <038201c1b4b7$7f0d56c0$ced241d5@hagrid> Message-ID: <200202132109.g1DL98l08333@localhost.localdomain> > > Many people agree with me thus far. I happen to be among a small > > minority that thinks that the logical endpoint of this is: > > > > stock = http.GET("http://www.stocks.com/%(stockquote)s/%(some_date)s") > > well, if it's any help, I know you're right. I'm actually not all that convinved that it is a small minority. One of our employees, Matt Gushee, wrote on an internal mailing list this past Friday, without any prodding from polluted minds such as mine: """ Check out Paul Prescod's article on "Second Generation Web Services": http://www.xml.com/pub/a/2002/02/06/rest.html I would go so far as to call it inspiring, and it's been some time since I've felt that way about anything to do with Web Services. """ I susspect that a huge number of developers will end up on the same side of the fence as Paul, Fredrik, Matt, me and others, if we just get the word out (good job, Paul). -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From paul@prescod.net Wed Feb 13 20:42:40 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 12:42:40 -0800 Subject: [XML-SIG] SOAP Skepticism References: <200202130631.g1D6VT703977@localhost.localdomain> <3C6AC85E.50601@zolera.com> Message-ID: <3C6ACFC0.26350973@prescod.net> I'll confirm that there was a strong anti-SOAP bias at ICP10 and I suspect it is indicative of a bias among the "hacker elite." *I* was the SOAP defender (somebody had to play the role!) despite what I say below. Part of this is no doubt just a dislike of overhyped technology. But part of it is: "why reinvent CORBA in XML badly?" Now I'll swing over to the other side to try and cleanse my soul. Sorry that you're taking the brunt of it....take it as technical commentary: * too much stuff...the SOAP spec could be split into three or four independent specs that would sink or swim on their own * neither fish nor fowl. When I last saw him speak, Henrik F. said that SOAP was "just an envelope". Other people see it as an RPC protocol. In one view it is an XML form of MIME. In the other it is an XML form of CORBA/DCOM. In either view the whole point seems to be to put angle brackets around something that already exists in a very circuitious and expensive manner. * the churn has been so great over the last few years that interoperability is a dream * all of the "REST versus SOAP" stuff you've seen...I won't repeat it. But if the anti-RPCers are right then the SOAP RPC stuff has been a massive waste of brain-power. And if they are wrong, then what would have been the problem with just XML-ifying CORBA? Plus, when did an RPC protocol ever succeed on the public Internet (e.g. DCE's)? Why would we expect that to change now? * the SOAP encoding is too complex for mortals to feel like SOAP is "human readable" (which it should be). I show people the dump of two-param methods and they are already confused. * nit: SOAP had to have its acronym taken away because it had drifted so far from its original goals. That's kind of a frightening world record in requirements drift. It is also annoying to have acronyms floating around with no expansion. * href: If you're right that it does transparent references to network data then isn't it a little bit of a mistake to put network data (e.g. UDDI) behind RPC interfaces that *cannot be referenced* * SOAP RPC is hard to implement interoperably. It's too big. It's more than it needs to be to meet your bullet points below. * having a mapping from XML elements to language types (i.e. the SOAP encoding) *in the message* is an arguably bad idea for security reasons. The mapping should be entirely defined by the recipients (i.e. TypeCodes, not xsi:type attributes). * the SOAP encoding is once again neither fish nor fowl. It isn't as simple as defining a bunch of element types (as per XML-RPC). But is isn't non-obtrusive enough that you could just take an existing vocabulary and shove it in with a few extra attributes or something. So you've got more flexibility than you need but not enough to be useful, which is why you get the really hideous gensym: stuff. etc. etc. I could complain about the encoding all day...either tell me precisely what element types to use to get a certain structure or get out of my way. Half and half doesn't help. * SOAP RPC tunnels RPC over firewalls whose admins would never knowingly externalize RPC interfaces. * SOAP is full of optional features. XML philosophy was to drive optional features out as much as possible (we failed once or twice but overall did a much better job of SOAP). Optional features are an interop nightmare. * I don't know that it is really meaningful to define a "transport independent protocol." Most protocol specifications make some statement about the underlying transport like: "HTTP relies on a reliable connection-oriented protocol" or "Foobar relies on a broadcast protocol". SOAP makes no such statement. As such, I don't know if it is really even a protocol. The SOAP RPC binding to HTTP is a protocol. But SOAP in general? If a SOAP message floats in to one system through email with no reply addrss, and another system through an HTTP RPC, are they really using the same "Protocol"? If it doesn't define the pattern of messages back and forth, isn't it really just a data format? Leaving the operation mode of the underlying protocol up to the user seems like the ultimate "optional feature." How can I reason about SOAP systems if I don't even know whether, in general, they will return 0, 1 or N responses? Paul Prescod From paul@prescod.net Wed Feb 13 21:43:35 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 13:43:35 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> <3C6AB2F2.5BBC7E3D@lemburg.com> Message-ID: <3C6ADE07.8778DB8D@prescod.net> "M.-A. Lemburg" wrote: > >... > > Just to make sure I got the WSDL 1.1 spec right: this is covered > by the standard, isn't it ? Yes, this much is covered by the standard. But it isn't clear to me, once you get back an XML document with some hyperlinks in it, and you follow those hyperlinks, how you get a new WSDL document for the new service you are involved in. Does that make sense? getStockQuote is easy because it is a one-shot operation. Most operations will generate a document that tells you where to go next, like a multi-step "standard" web service. First you fill out your address. Then it shoots you to a form where you fill in your credit card number. Then you go to a form where you review. Finally you commit. I don't see how to do this with WSDL. Once you get to the second XML document, you're out of the scope of the WSDL. An XML schema doesn't help much either, because it doesn't tell you about what to expect following various links. So I think that there is a gap there that no "description language" helps with... Paul Prescod From rsalz@zolera.com Wed Feb 13 21:56:47 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 16:56:47 -0500 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> <3C6AB2F2.5BBC7E3D@lemburg.com> <3C6ADE07.8778DB8D@prescod.net> Message-ID: <3C6AE11F.9040106@zolera.com> Yes, WSDL only covers two parties. For multi-party stuff, you need XLANG (MSFT Biztalk langauge), or WSFL (WS framework langauge; from IBM) or something else. OASIS also has work going on here, I think. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From paul@prescod.net Wed Feb 13 21:59:30 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 13:59:30 -0800 Subject: [XML-SIG] WSDL library ? References: <200202130631.g1D6VT703977@localhost.localdomain> <20020213032148.W24231@redhat.com> <3C6A8CB5.8B12259A@prescod.net> <3C6A9337.10F85812@zolera.com> <3C6A9918.D6A96181@prescod.net> <3C6AB2F2.5BBC7E3D@lemburg.com> <3C6ADE07.8778DB8D@prescod.net> <3C6AE11F.9040106@zolera.com> Message-ID: <3C6AE1C2.831C8B22@prescod.net> Rich Salz wrote: > > Yes, WSDL only covers two parties. For multi-party stuff, you need > XLANG (MSFT Biztalk langauge), or WSFL (WS framework langauge; from IBM) > or something else. OASIS also has work going on here, I think. Okay, but in my view one of the virtue of the web is that "two parties" is just a degenate case of "multiple parties". I would structure my services this way so that every step in a transaction represents a new XML document with pointers to the next set of possible steps...like a Choose Your Own Adventure book. Even if there are only two actual parties involved, WSDL won't help me. :( I need a schema language that says what happens when you follow links, or apply HTTP methods to things that are referenced in links...I guess I'll have to do it myself some day. Paul Prescod From paul@prescod.net Wed Feb 13 22:08:22 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 14:08:22 -0800 Subject: [XML-SIG] XML-RPC References: <200202131440.g1DEekF05173@localhost.localdomain> <037e01c1b4b7$7d785ee0$ced241d5@hagrid> Message-ID: <3C6AE3D6.A75445CF@prescod.net> Fredrik Lundh wrote: > > Uche Ogbuji wrote: > > But it still is hacky. The biggest problems in my own experience are: > > > > * ASCII only (UTF-7, anyone?) > > that's a myth. in private correspondence, dave has always been 100% > clear that an XML-RPC string can contain anything that's allowed by XML. Er, why would he write that in private rather than public correspondance? This is a guy who practically invented putting his life on display in a blog! The story I heard was that FrontierScript doesn't support Unicode so it is in Dave's interest to ignore the issue. Paul Prescod From brian@sweetapp.com Wed Feb 13 22:23:48 2002 From: brian@sweetapp.com (Brian Quinlan) Date: Wed, 13 Feb 2002 14:23:48 -0800 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6ACD4C.4090205@zolera.com> Message-ID: <002801c1b4dd$1bbf0480$445d4540@Dell2> Rich Salz wrote: > One of the things I like about SOAP is that the RPC Encoding allows you > to tell the difference between: > char *p, *q; > p = q = "hello"; > and this: > p = "hello"; > q = strdup(p); > > Simple apps don't care, but real RPC programmers do. :) Why is this a good thing? Certainly in Python you have to use some hackery to make sure you get the identity behavior that you want. >>> a = b = "hello" >>> a is b 1 >>> b = copy.deepcopy(a) >>> a is b # too bad 1 >>> b = a[0] + a[1:] # ewwwwwwww! >>> a is b 0 Cheers, Brian From rsalz@zolera.com Wed Feb 13 23:27:09 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 18:27:09 -0500 Subject: [XML-SIG] WSDL library ? References: <002801c1b4dd$1bbf0480$445d4540@Dell2> Message-ID: <3C6AF64D.3DCD449@zolera.com> Perhaps you don't care in Python, but if you're shipping pointer-based objects around via RPC's with C/C++ languages, then you do care. /r$ -- Zolera Systems, Securing web services (XML, SOAP, Signatures, Encryption) http://www.zolera.com From uche.ogbuji@fourthought.com Thu Feb 14 00:05:17 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 13 Feb 2002 17:05:17 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Wed, 13 Feb 2002 15:11:10 EST." <3C6AC85E.50601@zolera.com> Message-ID: <200202140005.g1E05Hr08518@localhost.localdomain> OK. Quick answers because, like Paul, I don't have a lot of time to repeat what I've written before in this and other forums, as well as in articles. > > Pretty scary when I'd be more comfortable pointing people to a hack like > > XML-RPC than I would be pointing people to SOAP. > > > What's wrong with SOAP? I like it because: > - Supports more than just sender-receiver; e.g., intermediates. So can HTTP and SMTP, using extension headers. BEEP doesn't even need extensions, I think. > - SOAP with Attachments I thought you were listing reasons for liking SOAP. I'm unable to interpret this as such. > - Ability to send XML Anything can send XML. And SOAP/RPC is very lexically brittle for sending XML has serious problems sending XML. For instance, if the embedded XML has an XML decl, you have to escape things. And anyway, why can't anything else send XML? > - Richer data types This is not an absolute statement. A CORBA person would tell you that given structs, ANYs, object-by-value, etc., CORBA is every bit as rich in data types as SOAP/RPC. Can you give a concrete example of a task that SOAP's data typs made more possible than if you'd used other RPC mechanisms? > - href/id handles pointer aliasing Only if you're delivering the entire object being pointed to anyway. I hardly see what this buys you over CORBA OBV. > - href allows (transparent!) refs to network data And why can't you send hrefs using any other mechanism? > - extensible architecture (header elements) HTTP and SMTP are also extensible. SOAP does have the advantage that extensions can have hierarchical structure. This is one of the few true advantages I've been able to admit for SOAP. But guess what? BEEP has the same advantage. > - reasonable size to implement Having looked really closely at ZSI, SOAP.py, SOAPy, and our own coupel of attempts to implement, I am astounded at this claim. > > Good riddance. > > > Why? What do you not like about it? * Most importantly, it has nothing whatsoever to contribute to RPC except for hierarchically extensible headers * SOAP interoperability is a myth, as I can painfully attest * It conflates transport and payload details * SOAP data types consist of hack after hack, with the biggest hack being the multi-reference values you seem to like so much * It is wicked inefficient (5-6x the network traffic, several times the latency and about 100 times the marshalling/unmarshalling expense when compared to OmniORB/Python, in my low-fidelity observation) Funny thing is that Clay Shirky makes a completely different set of points from my own, and still manages to roast WS quite handily http://www.xml.com/pub/a/2001/10/03/webservices.html -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Thu Feb 14 00:13:11 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 13 Feb 2002 17:13:11 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Wed, 13 Feb 2002 15:28:53 EST." <3C6ACC85.8090808@zolera.com> Message-ID: <200202140013.g1E0DBX08527@localhost.localdomain> > > One of thing things that I really like about XML-RPC is that it is easy > > to use from many languages, including statically typed ones like C. I > > think that is because all of the XML-RPC types are reasonably easy to > > deal with in C and the fixed format allows almost all of the > > marshalling/unmarshalling logic to be done at the library level. > > > Same for SOAP. > > One of the things I like about SOAP RPC encoding is that you can tell > the difference between > char *p, *q; > p = q = "hello"; > and this: > p = "hello"; q = strdup(p); Again the multi-reference hack. This is an semantics-of-value/lifecycle issue. Experience in distributed computing quickly makes it clear that handling semantics of IDs, values and references is probably the hardest problem in that space, and that handling data lifecycles is probably the second hardest. It amazes me that the SOAP designers think that this puny facility can really clean up the differing semantics you sketch in your code example above. Of course, I'be never seen a much more complex Web service than a stock quote getter, or the Captain Haddock curse generator, so one can't even evaluate this extravagant claim in the light of a successful test case. Man, even CORBA and DCOM would be easy if you didn't have to worry about state on either end. I think a CORBA Captain Haddock would take up even fewer lines of code than a SOAP Captain Haddock. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From rsalz@zolera.com Thu Feb 14 02:19:07 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 21:19:07 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140005.g1E05Hr08518@localhost.localdomain> Message-ID: <3C6B1E9B.EF17BCA2@zolera.com> > So can HTTP and SMTP, using extension headers. You don't like the invention of SOAP but you accept an invention of new HTTP headers? :) > BEEP doesn't even need extensions, I think. Beep solves different problems, it's HTTP-NG, really; a plea in the night that we avoid crappy substrates like HTTP. > > - SOAP with Attachments > > I thought you were listing reasons for liking SOAP. I'm unable to interpret > this as such. id/ref and the CID scheme; perhaps more accurate: "it makes SwA possible." > > - Ability to send XML > > Anything can send XML. And SOAP/RPC is very lexically brittle for sending XML > has serious problems sending XML. For instance, if the embedded XML has an > XML decl, you have to escape things. XML embedded in XML is a general XML problem. You can't send XML in XML-RPC unless you stringify it. If I've already got a message decoder, why force the price of re-encapsulation. > And anyway, why can't anything else send XML? See above. > This is not an absolute statement. A CORBA person would tell you that given > structs, ANYs, object-by-value, etc., CORBA is every bit as rich in data types > as SOAP/RPC. And since Corba doesn't have pointers, that person would be wrong. > Can you give a concrete example of a task that SOAP's data typs made more > possible than if you'd used other RPC mechanisms? Ahh, that's a different question. Are there equivalent tools? Certainly. Is that really the key problem? It seems like your position is: If it's simple use XML-RPC; if it's not, use Corba Is that fair? If so, then what about all those DCOM and pure-RPC and java-RMI folks? > And why can't you send hrefs using any other mechanism? Sure, if you can define a datatype that is "aliasable." But I was trying to show what I liked about SOAP that wasn't in other things, not what I liked that could be created elsewhere. > > - reasonable size to implement > > Having looked really closely at ZSI, SOAP.py, SOAPy, and our own coupel of > attempts to implement, I am astounded at this claim. I guess we come at it from different viewpoints. I wrote a C++ BER library for LDAP; it took 2000 lines. A full DER package such as openssl's ASN1 module is 18K lines. The core SOAP part of ZSI (TC*.py, parse.py, writer.py) is 2K lines. DCE RPC was like 25K lines. > * SOAP interoperability is a myth, as I can painfully attest Disagree, as I can attest. :) Come join us in the soapbuilders mailing list (at yahoogroups). > Funny thing is that Clay Shirky makes a completely different set of points from my own, and still manages to roast WS quite handily Yes, I quite enjoy Clay's writing. SOAP != web services. And IIOP is a crappy protocol that only came into existence because Sun said DCE protocol over my dead body and IBM, fearing DCOM, caved in. If it were so great, RMI would've gone along quietly. :) /r$ -- Zolera Systems, Securing web services (XML, SOAP, Signatures, Encryption) http://www.zolera.com From rsalz@zolera.com Thu Feb 14 02:25:06 2002 From: rsalz@zolera.com (Rich Salz) Date: Wed, 13 Feb 2002 21:25:06 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140013.g1E0DBX08527@localhost.localdomain> Message-ID: <3C6B2002.20A6AF92@zolera.com> > It amazes me that the SOAP > designers think that this puny facility can really clean up the differing > semantics you sketch in your code example above. Well, what can I tell you; it does, it really does. Don't forget that two of the SOAP designers were Don Box, who has extensive experience in DCE (and therefore DCOM) network data representation, and Andrew Layman, who is one of the most pedantic datatype guys I've ever met. > Of course, I'be never seen a much more complex Web service than a stock quote Take a look at the files in http://www.zolera.com/schemas/2001/11/ > I think a CORBA Captain Haddock would take up even fewer lines > of code than a SOAP Captain Haddock. Sure, and after five years of BOA your code might even be portable. :) /r$ -- Zolera Systems, Securing web services (XML, SOAP, Signatures, Encryption) http://www.zolera.com From paul@prescod.net Thu Feb 14 03:08:13 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 19:08:13 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140005.g1E05Hr08518@localhost.localdomain> <3C6B1E9B.EF17BCA2@zolera.com> Message-ID: <3C6B2A1D.1A018918@prescod.net> Rich Salz wrote: > >... > > Beep solves different problems, it's HTTP-NG, really; a plea in the > night that we avoid crappy substrates like HTTP. Hey, your name is in the HTTP spec. You can't blame the rest of us! Paul Prescod From uche.ogbuji@fourthought.com Thu Feb 14 04:34:01 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 13 Feb 2002 21:34:01 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Wed, 13 Feb 2002 21:19:07 EST." <3C6B1E9B.EF17BCA2@zolera.com> Message-ID: <200202140434.g1E4Y1E10259@localhost.localdomain> > > So can HTTP and SMTP, using extension headers. > > You don't like the invention of SOAP but you accept an invention of new > HTTP headers? :) I don't have a problem with the invention of SOAP. Just that I think SOAP is too big and hariry an invention for just this small purpose. > > BEEP doesn't even need extensions, I think. > > Beep solves different problems, it's HTTP-NG, really; a plea in the > night that we avoid crappy substrates like HTTP. Of course. But my argument is that no more is needed. We can use good old GIOP with CDR, XDR or other established RPC systems when we need RPC, and save BEEP for the rich messaging payloads that I think is SOAP's only legitimate niche. > > > - SOAP with Attachments > > > > I thought you were listing reasons for liking SOAP. I'm unable to interpret > > this as such. > > id/ref and the CID scheme; perhaps more accurate: "it makes SwA > possible." > > > > - Ability to send XML > > > > Anything can send XML. And SOAP/RPC is very lexically brittle for sending XML > > has serious problems sending XML. For instance, if the embedded XML has an > > XML decl, you have to escape things. > > XML embedded in XML is a general XML problem. You can't send XML in > XML-RPC unless you stringify it. If I've already got a message decoder, > why force the price of re-encapsulation. Agreed, but then hopw is SOAP better than XML-RPC for the purpose? You need to escape/encode in either case. > > And anyway, why can't anything else send XML? > > See above. > > > This is not an absolute statement. A CORBA person would tell you that given > > structs, ANYs, object-by-value, etc., CORBA is every bit as rich in data types > > as SOAP/RPC. > > And since Corba doesn't have pointers, that person would be wrong. SOAP doesn't have pointers either. It has a hack where you can state a value once and give it an arbitrary ID, and then use that ID elsewhere. There is no guarantee that this represents any reliable state on the server side, so it's not a pointer, but a gimmick. > > Can you give a concrete example of a task that SOAP's data typs made more > > possible than if you'd used other RPC mechanisms? > > Ahh, that's a different question. Are there equivalent tools? > Certainly. Is that really the key problem? It seems like your position > is: > If it's simple use XML-RPC; if it's not, use Corba > Is that fair? If so, then what about all those DCOM and pure-RPC and > java-RMI folks? Mostly politics. The only thing complex about CORBA, properly implemented, is setting up the ORB package. XML-RPC does save this, since so many languages come with XML-RPC libs built in. Therefore, I like the formula you suggest "If it's simple use XML-RPC; if it's not, use Corba" > > And why can't you send hrefs using any other mechanism? > > Sure, if you can define a datatype that is "aliasable." But I was > trying to show what I liked about SOAP that wasn't in other things, not > what I liked that could be created elsewhere. I have no idea what you mean with all this about pointers and aliases. Can you just give an example? Pick any real-world scenario. Show me how CORBA cannot do what SOAP can with regard to this pointers/aliases magic. > > > - reasonable size to implement > > > > Having looked really closely at ZSI, SOAP.py, SOAPy, and our own coupel of > > attempts to implement, I am astounded at this claim. > > I guess we come at it from different viewpoints. I wrote a C++ BER > library for LDAP; it took 2000 lines. A full DER package such as > openssl's ASN1 module is 18K lines. The core SOAP part of ZSI (TC*.py, > parse.py, writer.py) is 2K lines. DCE RPC was like 25K lines. > > > * SOAP interoperability is a myth, as I can painfully attest > > Disagree, as I can attest. :) Come join us in the soapbuilders mailing > list (at yahoogroups). I'd rather be pull off my toenails one by one and eat them. :-) If you have to join a mailing list to see SOAP interop, it's just as bad as I think. I just downloaded tools, followed instructions, and watched everything fail. This is using well-published and trivial Web services listed at XMethods. Not to point fingers, but the very first Web service I tried with ZSI failed to work with a Delphi-based service: the silly Captain Haddick thingie. Sad, I'd say. I've had immeasurably more luck with CORBA, without having to join mailing lists. > > Funny thing is that Clay Shirky makes a completely different set of points from my own, and still manages to roast WS quite handily > > Yes, I quite enjoy Clay's writing. SOAP != web services. > > And IIOP is a crappy protocol that only came into existence because Sun > said DCE protocol over my dead body and IBM, fearing DCOM, caved in. If > it were so great, RMI would've gone along quietly. :) The best thing about the Internet is that everyone has a raw, pulsating opinion, eh? Cheers. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Thu Feb 14 04:35:39 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 13 Feb 2002 21:35:39 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Wed, 13 Feb 2002 21:19:07 EST." <3C6B1E9B.EF17BCA2@zolera.com> Message-ID: <200202140435.g1E4Zdq10270@localhost.localdomain> > And IIOP is a crappy protocol that only came into existence because Sun > said DCE protocol over my dead body and IBM, fearing DCOM, caved in. If > it were so great, RMI would've gone along quietly. :) BTW, IIOP is an unfair target. Should I attack SOAP 0.9? What do you think about GIOP, then? -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From paul@prescod.net Thu Feb 14 04:49:38 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 13 Feb 2002 20:49:38 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140435.g1E4Zdq10270@localhost.localdomain> Message-ID: <3C6B41E2.8D141E4F@prescod.net> Uche Ogbuji wrote: > > > And IIOP is a crappy protocol that only came into existence because Sun > > said DCE protocol over my dead body and IBM, fearing DCOM, caved in. If > > it were so great, RMI would've gone along quietly. :) > > BTW, IIOP is an unfair target. Should I attack SOAP 0.9? > > What do you think about GIOP, then? I thought IIOP was the binding of GIOP for the Internet. It would seem to be more analogous to SOAP than GIOP which is not "general". Paul Prescod From martin@v.loewis.de Thu Feb 14 08:36:54 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 14 Feb 2002 09:36:54 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6B41E2.8D141E4F@prescod.net> References: <200202140435.g1E4Zdq10270@localhost.localdomain> <3C6B41E2.8D141E4F@prescod.net> Message-ID: Paul Prescod writes: > > BTW, IIOP is an unfair target. Should I attack SOAP 0.9? > > > > What do you think about GIOP, then? > > I thought IIOP was the binding of GIOP for the Internet. It would seem > to be more analogous to SOAP than GIOP which is not "general". All true. And even though GIOP (and thus IIOP) has its subtleties, I don't think it is correct to call it a "crappy protocol". It is very easy to implement, quite well specified (the message format is defined in IDL itself), and, compared to any XML RPC scheme, super-efficient. Regards, Martin From martin@v.loewis.de Thu Feb 14 08:37:43 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 14 Feb 2002 09:37:43 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6B2002.20A6AF92@zolera.com> References: <200202140013.g1E0DBX08527@localhost.localdomain> <3C6B2002.20A6AF92@zolera.com> Message-ID: Rich Salz writes: > > I think a CORBA Captain Haddock would take up even fewer lines > > of code than a SOAP Captain Haddock. > > Sure, and after five years of BOA your code might even be portable. :) After five years, your code is ported to POA, and then indeed it is portable. Regards, Martin From akuchlin@mems-exchange.org Thu Feb 14 15:21:04 2002 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Thu, 14 Feb 2002 10:21:04 -0500 Subject: [XML-SIG] Interface for XSD datatypes Message-ID: <20020214152104.GA584@crystal.mems-exchange.org> RELAX NG requires support for the primitive datatypes defined in part 2 of the XML Schema standard. Support for datatypes would be useful outside of the RELAX NG processor, if, for example, someone wanted to implement XML Schema in Python or if other standards adopt the XML Schema datatypes. Therefore, I'd like to get comments on a proposed interface for datatypes. # # Datatype interfaces # class DatatypeValueError(Exception): """ Exception raised when a supplied string does not represent a legal value for a datatype. Instance attributes: message : string Message explaining what's wrong with the string """ class DatatypeURIError(Exception): """ Exception raised when there's no datatype library corresponding to a given URI. """ class DatatypeLibCollection: """ Holder of a bunch of datatype libraries. """ def register (self, library): """register(library : DatatypeLibrary) Add 'library' to the list of libraries available in this collection. """ def has_uri (self, uri): """has_uri(uri:string) : boolean Returns true if there's a datatype library registered for the given URI. """ def has_type (self, (uri, type)): """has_uri((uri:string,type:string)) : boolean Returns true if the specified datatype exists. """ def check (self, (uri,type), params, value): """check((uri:string,type:string), params: {string : string}, value : string) : boolean Returns true if the string 'value' represents a legal value for the datatype selected by the (uri,type) pair, taking the additional parameters 'params' into account. If this method returns false, it might mean either that the uri isn't for any registered library, or that the library is OK and the value is wrong. XXX should this return an explanatory message, or should there be a third function (explain()?) """ try: value = self.evaluate((uri,type), params, value) except (DatatypeValueError, DatatypeURIError): return 0 else: return 1 def evaluate (self, (uri,type), params, value): """evaluate((uri:string,type:string), params: {string : string}, value : string) : any Evaluate the string 'value' as a value of the datatype selected by the (uri,type) pair, taking the additional parameters 'params' into account. Raises DatatypeValueError if the value is illegal; raises DatatypeURIError if there's no library registered for that URI. """ class DatatypeLibrary: """ Instance attributes: uri : string Namespace URI for this collection of data types """ def evaluate(self, type, params, value): """evaluate(type:string, params: {string : string}, value : string) : any Evaluate the string 'value' as a value of the datatype selected by the name 'type', taking the additional parameters 'params' into account. Raises DatatypeValueError with an explanatory message if the value is illegal. """ def has_type (self, type): """has_type(type:string) : boolean Returns true if the library supports a type with the given name. """ def is_type_legal (self, type, params): """is_type_legal(type:string, params:{string:string}) : boolean Returns true if the type and corresponding parameters are legal. """ def get_xsd_library (): """get_xsd_library(): DatatypeLibrary Return the library for the XML Schema standard's primitive datatypes. """ I envision the RELAX NG interface ultimately looking like this: schema = relaxng.parse(...) # Get a relaxng.Schema object with a # .datatypecoll attribute. # It will initially have just the # XML Schema library registered. # Add a custom type library schema.datatypecoll.register(myTypeLibrary) # Check a document against the schema print schema.is_valid(...) The code will live in sandbox/datatype for now. Should it go in the XML tree eventually, or be a separate library? If the former, where should it go? xml.schema.datatype, xml.datatype, ... ? --amk (www.amk.ca) My customers consider it a marketable skill that I a) think for myself b) share my thoughts with them. -- Paul Prescod, 2 Nov 1998 From rsalz@zolera.com Thu Feb 14 16:01:20 2002 From: rsalz@zolera.com (Rich Salz) Date: Thu, 14 Feb 2002 11:01:20 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> Message-ID: <3C6BDF50.2070104@zolera.com> The discussion seems to be heating up a bit, so I'm gonna start to slow down in terms of posting. :) With this note I'll try to summarize some things that seem to have been mis-undrestood. I never said IIOP is crappy; I said HTTP is crappy as a generic application protocol. SOAP RPC Encoding can't transport arbitrary XML, agreed. But SOAP itself can. That's a good thing. If I want to transmit legally binding information over the Internet, then SOAP's ability to include an XML DSIG (as either a header element, or using doc/literal style in the body) is way cool; XML-RPC can't do that. The ability to transmit pointer-using data types (e.g, a balanced tree in C/C++), to make changes on the server, and to send the new tree back such that the client can reconstruct -- that can be important and useful. Sure, Corba proves that you can solve real-world problems without it, but that doesn't reduce its utility. The SOAP id/href technique makes that possible. Server or client-side state has nothing to do with it. It has been more than three years since I left the COM, Corba, DCE middleware trenches, and I've gladly forgotten many details, but I don't believe it's possible to use Corba IIOP without using the Corba object model. Most of the distributed computing world does not use the Corba object model. As for pointers, etc., I'd like to see the IIOP serialization of a doubly-linked list. I don't believe it is totally fair to complain about the developing world of SOAP interop. The spec is fairly new, most suppliers are on their first generation of implementation, etc. It is particularly not fair to compare it to Corba interop, which had was first defined nearly five years ago, after nearly five years of deliberately avoiding the issue. I am quite pleased by the state of SOAP interop; amazing progress has been made in a few months, so much so that at the end of the month there will be a two-day interop festival for early WSDL. In an earlier message I refered to XSD files at http://www.zolera.com/schemas/2001/11/ ; unforunately our ISP (good ole Win-chapter 11-Star) had problems, which seem to be fixed. They are real, not contrived examples, used in our Tamarin product; a server that does XML signatures and encryption. Pace. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From paul@boddie.net Thu Feb 14 17:43:13 2002 From: paul@boddie.net (paul@boddie.net) Date: 14 Feb 2002 17:43:13 -0000 Subject: [XML-SIG] WSDL library ? Message-ID: <20020214174313.11705.qmail@www1.nameplanet.com> Rich Salz wrote: > [...] I'm in well over my head, here, but... >SOAP RPC Encoding can't transport arbitrary XML, agreed. But SOAP >itself can. That's a good thing. If I want to transmit legally binding >information over the Internet, then SOAP's ability to include an XML >DSIG (as either a header element, or using doc/literal style in the >body) is way cool; XML-RPC can't do that. When asked to investigate SOAP, one of the apparent advantages I found for those who have already invested in XML data exchange representations is that it seems to be possible to just drop the usual XML instances inside a SOAP envelope and use largely the tools you already have to deconstruct those instances later. For people who aren't strictly interested in converting their data to RPC-like calls, SOAP provides the messaging infrastructure, in theory, whilst the interpretation of the data is left to the application. Personally, I think the obsession with making everything an object, so that one can receive RPC messages or access relational databases by pulling objects out of a hat and calling setFamilyName on them (for example), is somewhat tiresome and not always particularly necessary. In other words, I think that there are benefits to just receiving an XML document, rather than having to stuff such data into an object hierarchy. Paul -- Get your firstname@lastname email at http://Nameplanet.com/?su From paul@prescod.net Thu Feb 14 18:40:36 2002 From: paul@prescod.net (Paul Prescod) Date: Thu, 14 Feb 2002 10:40:36 -0800 Subject: [XML-SIG] WSDL library ? References: <20020214174313.11705.qmail@www1.nameplanet.com> Message-ID: <3C6C04A4.9A0A7C54@prescod.net> paul@boddie.net wrote: > >... > > When asked to investigate SOAP, one of the apparent advantages I found for > those who have already invested in XML data exchange representations is that it > seems to be possible to just drop the usual XML instances inside a SOAP > envelope and use largely the tools you already have to deconstruct those > instances later. More or less. But there are lots of details you may have to worry about. Some of them your SOAP toolkit will handle, but others it will not. For instance if you have a hyperlink from one part of your document to another of the form xpath="/", should you rewrite it (the document's root element is no longer THE root element) before putting it in the SOAP message or not? SOAP doesn't really tell you. Heretical though it is, I'd say it is safer to NOT embed XML in SOAP. Either use separate MIME parts or use a protective level of encoding like base64. > ... For people who aren't strictly interested in converting their > data to RPC-like calls, SOAP provides the messaging infrastructure, in theory, > whilst the interpretation of the data is left to the application. HTTP or SMTP or whatever provides the messaging infrastructure. SOAP provides...a secondary level of envelope? > Personally, I think the obsession with making everything an object, so that one > can receive RPC messages or access relational databases by pulling objects out > of a hat and calling setFamilyName on them (for example), is somewhat tiresome > and not always particularly necessary. Some of us would argue hardly ever necessary. > ... In other words, I think that there are > benefits to just receiving an XML document, rather than having to stuff such > data into an object hierarchy. I think you'll find quite a bit of agreement on that point. Paul Prescod From noreply@sourceforge.net Thu Feb 14 18:49:32 2002 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Thu, 14 Feb 2002 10:49:32 -0800 Subject: [XML-SIG] [ pyxml-Bugs-517641 ] UnicodeError: UTF-16 decoding error: ill Message-ID: Bugs item #517641, was opened at 2002-02-14 10:49 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=106473&aid=517641&group_id=6473 Category: xmlproc Group: None Status: Open Resolution: None Priority: 5 Submitted By: Charles G Waldman (cgw) Assigned to: Lars Marius Garshol (larsga) Summary: UnicodeError: UTF-16 decoding error: ill Initial Comment: shell$ uname -a SunOS hydrogen 5.8 Generic_108529-11 i86pc i386 i86pc shell$ pwd [...]/Python/PyXML-0.7/demo/xmlproc shell$ python Python 2.1 (#7, Jun 6 2001, 17:16:03) [GCC 2.95.3 20010315 (release)] on sunos5 Type "copyright", "credits" or "license" for more information. >>> import doctree.py Traceback (most recent call last): File "", line 1, in ? File "doctree.py", line 9, in ? from xml.parsers.xmlproc import xmlproc File "/opt/python/lib/python2.1/site-packages/_xmlplus/parsers/xmlproc/xmlproc.py", line 14, in ? from dtdparser import * File "/opt/python/lib/python2.1/site-packages/_xmlplus/parsers/xmlproc/dtdparser.py", line 12, in ? from xmlutils import * File "/opt/python/lib/python2.1/site-packages/_xmlplus/parsers/xmlproc/xmlutils.py", line 875, in ? from xml.utils import characters File "/opt/python/lib/python2.1/site-packages/_xmlplus/utils/characters.py", line 3, in ? x00-!+!.!\x80\x00-!\x820A\x00-0\x940\xa1\x00-0\xfa1\x05\x00-1,\xac\x00\x00-\xd7\xa3\x00]','utf-16-be') UnicodeError: UTF-16 decoding error: illegal encoding ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=106473&aid=517641&group_id=6473 From paul@boddie.net Thu Feb 14 18:52:35 2002 From: paul@boddie.net (paul@boddie.net) Date: 14 Feb 2002 18:52:35 -0000 Subject: [XML-SIG] WSDL library ? Message-ID: <20020214185235.15010.qmail@www1.nameplanet.com> On Thu, 14 Feb 2002 10:40:36 -0800 Paul Prescod wrote: >paul@boddie.net wrote: >> >> When asked to investigate SOAP, one of the apparent advantages I found for >> those who have already invested in XML data exchange representations is that >> it seems to be possible to just drop the usual XML instances inside a SOAP >> envelope and use largely the tools you already have to deconstruct those >> instances later. > >More or less. But there are lots of details you may have to worry about. >Some of them your SOAP toolkit will handle, but others it will not. For >instance if you have a hyperlink from one part of your document to >another of the form xpath="/", should you rewrite it (the document's >root element is no longer THE root element) before putting it in the >SOAP message or not? I think that this is really up to the application, and where you're just using SOAP to throw pieces of XML around, you're probably not going to want to access your piece of XML while it's inside the envelope. I've never done anything with SOAP, though. :-) >SOAP doesn't really tell you. Heretical though it >is, I'd say it is safer to NOT embed XML in SOAP. Either use separate >MIME parts or use a protective level of encoding like base64. Well, I could contradict myself immediately and say that one advantage is that you can access your XML inside the envelope. ;-) >HTTP or SMTP or whatever provides the messaging infrastructure. SOAP >provides...a secondary level of envelope? I wonder if SOAP provides messaging semantics over and above HTTP or SMTP. I should try and find out more on messaging. Paul -- Get your firstname@lastname email at http://Nameplanet.com/?su From paul@prescod.net Thu Feb 14 21:33:12 2002 From: paul@prescod.net (Paul Prescod) Date: Thu, 14 Feb 2002 13:33:12 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> Message-ID: <3C6C2D18.296EE19D@prescod.net> Rich Salz wrote: > > The discussion seems to be heating up a bit, so I'm gonna start to slow > down in terms of posting. :) Understood. You don't have to reply if you don't have time or feel like it. >... > The ability to transmit pointer-using data types (e.g, a balanced tree > in C/C++), to make changes on the server, and to send the new tree back > such that the client can reconstruct -- that can be important and > useful. Sure, Corba proves that you can solve real-world problems > without it, but that doesn't reduce its utility. The SOAP id/href > technique makes that possible. Server or client-side state has nothing > to do with it. Okay, but this raises a whole host of questions for me: 1. Where do you use this pointer feature in a business application? 2. How did you decide that this should go in the protocol instead of at the application layer? For instance, I would love it if SOAP supported structs where the keys were themselves structured (e.g. a string/float/Qname triple). Python has no problem with this. Java has no problem with this. But I'm sure if I asked for it, SOAP's designers would say that it should go at the application level. 3. Internal pointers are nice. But to me, they are much, much, much less useful and important than pointers from the message back into a data store potentially on the same machine but potentially on another machine. Unfortunately there is no standard way to refer to the results of a SOAP method call so you can only make a standard pointer to something exposed with HTTP, FTP or another URI-integrated protocol. What do you see as the solution for this problem? >... > I don't believe it is totally fair to complain about the developing > world of SOAP interop. If you're just trying to solve problems then it really doesn't matter whether the complaint is fair or not! The spec is fairly new, most suppliers are on > their first generation of implementation, etc. It is particularly not > fair to compare it to Corba interop, which had was first defined nearly > five years ago, after nearly five years of deliberately avoiding the > issue. I am quite pleased by the state of SOAP interop; amazing progress > has been made in a few months, so much so that at the end of the month > there will be a two-day interop festival for early WSDL. Okay > In an earlier message I refered to XSD files at > http://www.zolera.com/schemas/2001/11/ ; unforunately our ISP (good ole > Win-chapter 11-Star) had problems, which seem to be fixed. They are > real, not contrived examples, used in our Tamarin product; a server that > does XML signatures and encryption. I don't doubt that you are solving real problems but it isn't clear what advantage SOAP is conferring beyond traditional XML/HTTP ways to solve the same problems. It seems like the schemas are doing the hard work of data structure description and HTTP is doing the hard work of getting the data from point A to B. So what benefit are you getting out of SOAP? For example, I can't find occurrences of "href". You use arrays, but I don't think they are SOAP arrays... Paul Prescod From uche.ogbuji@fourthought.com Fri Feb 15 00:14:56 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Thu, 14 Feb 2002 17:14:56 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Thu, 14 Feb 2002 11:01:20 EST." <3C6BDF50.2070104@zolera.com> Message-ID: <200202150014.g1F0Eu511098@localhost.localdomain> > The discussion seems to be heating up a bit, so I'm gonna start to slow > down in terms of posting. :) With this note I'll try to summarize some > things that seem to have been mis-undrestood. Wow. I must be getting to used to XML-DEV :-) I thought we were having a chummy palaver. > The ability to transmit pointer-using data types (e.g, a balanced tree > in C/C++), to make changes on the server, and to send the new tree back > such that the client can reconstruct -- that can be important and > useful. Sure, Corba proves that you can solve real-world problems > without it, but that doesn't reduce its utility. The SOAP id/href > technique makes that possible. Server or client-side state has nothing > to do with it. I still don't understand, and I have a feeling I won't understand until I have a good example. You mention a tree. Do you mean you ship the tree using SOAP, and use multi-reference to indicate parent or child pointers? OK. I understand that, but you can do the same thing using hierarchical generic structures. So I guess your really convincing argument would be to do the same thing for more complex graphs. Dare I suggest that RDF handles this very well? If I had complex graphs that I wanted to send and XML seemed a suitable format, I'd use RDF. But assume we don't have this third man poking in his head. Even if I had to use CORBA, I see no reason why I wouldn't simply prefer to transmit an adjacency table. Basically, I'm still having trouble seeing where I might actually be missing pointers in distributed programming, except in the complex life-cycle matters which you seme to admit are just as hard for SOAP. Oh well, to each his POV. > It has been more than three years since I left the COM, Corba, DCE > middleware trenches, and I've gladly forgotten many details, but I don't > believe it's possible to use Corba IIOP without using the Corba object > model. Most of the distributed computing world does not use the Corba > object model. > > As for pointers, etc., I'd like to see the IIOP serialization of a > doubly-linked list. Easy: an array. > In an earlier message I refered to XSD files at > http://www.zolera.com/schemas/2001/11/ ; unforunately our ISP (good ole > Win-chapter 11-Star) had problems, which seem to be fixed. They are > real, not contrived examples, used in our Tamarin product; a server that > does XML signatures and encryption. Cool. I'll have a look. I'm honestly intrigued. > Pace. Absolutely! -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From martin@v.loewis.de Fri Feb 15 00:18:01 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 15 Feb 2002 01:18:01 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6BDF50.2070104@zolera.com> References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> Message-ID: Rich Salz writes: > The ability to transmit pointer-using data types (e.g, a balanced tree > in C/C++), to make changes on the server, and to send the new tree > back such that the client can reconstruct -- that can be important and > useful. Sure, Corba proves that you can solve real-world problems > without it Since CORBA 2.3 (July 1999), this kind of interaction is supported. > It has been more than three years since I left the COM, Corba, DCE > middleware trenches, and I've gladly forgotten many details, but I > don't believe it's possible to use Corba IIOP without using the Corba > object model. Most of the distributed computing world does not use > the Corba object model. Can you please clarify? The "CORBA object model" is roughly: Objects have interfaces, interfaces provide operations, clients invoke operations. Seems quite general to me, and except for asynchronous, event-oriented interactions, this is also standard in the distributed computing world (even HTTP is an RPC mechanism, with clearly identified request and response messages). > As for pointers, etc., I'd like to see the IIOP serialization of a > doubly-linked list. // IDL module PointerDemo{ valuetype linked_list{ public string data; linked_list prev, next; }; interface ListReceiver{ void put_list(in linked_list list); }; }; # Python client side from PointerDemo import linked_list receiver = obtain_reference_to_receiver() #somehow head = linked_list("Hello",None,None) head.next = linked_list("World",None,None) head.next.next = linked_list("!",None,None) # backlinks head.next.prev = head head.next.next.prev = head.next # invoke operation receiver.put_list(head) This will send an isomorphic copy of the list to the receiver, which can be written in any of the languages that have an IDL mapping. I could construct the IIOP/GIOP/CDR byte sequence that is marshalled for this invocation (including any necessary back-references); please refer to the CORBA spec if you really need to know. Regards, Martin From paul@prescod.net Fri Feb 15 00:24:11 2002 From: paul@prescod.net (Paul Prescod) Date: Thu, 14 Feb 2002 16:24:11 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> Message-ID: <3C6C552B.AA99F213@prescod.net> "Martin v. Loewis" wrote: > >... > computing world (even HTTP is an RPC mechanism, with clearly > identified request and response messages). http://www1.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_5_2 You may not be able to "get" it from that section without reading all of the context but think of it this way: HTTP is an "Remote Method Invocation" model where every single object has the same interface...i.e. not really an RPC at all. This is a big part of what makes HTTP scale, because once you learn that one interface you can develop tons of caches, firewalls and other optimizers which you cannot do if people invent their own interfaces willy nilly. Paul Prescod From uche.ogbuji@fourthought.com Fri Feb 15 00:34:58 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Thu, 14 Feb 2002 17:34:58 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from martin@v.loewis.de (Martin v. Loewis) of "15 Feb 2002 01:18:01 +0100." Message-ID: <200202150034.g1F0YwE11149@localhost.localdomain> > Rich Salz writes: > > > The ability to transmit pointer-using data types (e.g, a balanced tree > > in C/C++), to make changes on the server, and to send the new tree > > back such that the client can reconstruct -- that can be important and > > useful. Sure, Corba proves that you can solve real-world problems > > without it > > Since CORBA 2.3 (July 1999), this kind of interaction is supported. Well enough, but I still think it's a feature I would never think of using. > > As for pointers, etc., I'd like to see the IIOP serialization of a > > doubly-linked list. > > // IDL > module PointerDemo{ > valuetype linked_list{ > public string data; > linked_list prev, next; > }; > interface ListReceiver{ > void put_list(in linked_list list); > }; > }; > > # Python client side > from PointerDemo import linked_list > receiver = obtain_reference_to_receiver() #somehow > head = linked_list("Hello",None,None) > head.next = linked_list("World",None,None) > head.next.next = linked_list("!",None,None) > # backlinks > head.next.prev = head > head.next.next.prev = head.next > # invoke operation > receiver.put_list(head) Wow. I wasn't joking when I said "array". If I had a development problem where I had data structured as a doubly linked list on the server, which I decided to send to a client, I'd use an array. A doubly linked list is nothing more than a vector implementation optimized for certain operations. Seems this detail has no business poking its nose into data marshalling. I would be horrified if a marshaller took a complex data structure of mine, chased down all pointers it contained and proceeded to marshal the end-points, merrily inventing it's own little analogue of my heap in the message payload. Sounds like a recipe for nasty surprises, not least in the area of performance. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From martin@v.loewis.de Fri Feb 15 00:57:52 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 15 Feb 2002 01:57:52 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6C552B.AA99F213@prescod.net> References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6C552B.AA99F213@prescod.net> Message-ID: Paul Prescod writes: > You may not be able to "get" it from that section without reading all of > the context but think of it this way: HTTP is an "Remote Method > Invocation" model where every single object has the same > interface...i.e. not really an RPC at all. Why would that not be "remote procedure call"? Frankly, I disagree with this thesis. It seems to me that the HTTP client invokes a procedure (namely, retrieve a resource), and it does so remotely. I'm not even sure that all servers implement the same protocol. If you expect some kind of "operation name" in an RPC protocol, I'd claim that the URL is the operation name. Additional parameters are provided by the headers, and the body of the request. > This is a big part of what makes HTTP scale, because once you learn > that one interface you can develop tons of caches, firewalls and > other optimizers which you cannot do if people invent their own > interfaces willy nilly. I don't believe this is true either. On one hand, requesting resources based on URL is *not* sufficient for caches and firewalls. Here is a number of cases why caching could go wrong: - requesting the same resource (URL) multiple times may return different values each time (e.g. in case of a CGI script) - different parameters (e.g. Accept-Language) may have effect the response as well, even though identical requests would give identical responses. To circumvent these problems, specific support for caching was built into the protocol (Expires headers, caching indications, etc) Furthermore, it is *not* true that RPC protocols could not be used in an infrastructure that allows caching and firewalls. It is quite possible to have a firewall act as a proxy for arbitrary CORBA clients, without even knowing the specific signature of each operation. For another example, consider NFS: It is clearly an RPC application, yet caching and firewall traversal are frequently done. For yet another example, ILU extends the notion of operations on an interface with a FUNCTIONAL attribute, which allows the client to cache responses. If such a feature is put in the wire protocol (as a bit to indicate whether caching of the response is allowed), proxies could easily perform caching for arbitrary clients. HTTP-ng was built on top of an RPC architecture, yet it was just as scalable as HTTP 1.1, and more efficient. So I think it is non-sense to claim that RPC infrastructures, by nature, cannot scale. Regards, Martin From martin@v.loewis.de Fri Feb 15 01:22:35 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 15 Feb 2002 02:22:35 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <200202150034.g1F0YwE11149@localhost.localdomain> References: <200202150034.g1F0YwE11149@localhost.localdomain> Message-ID: Uche Ogbuji writes: > I would be horrified if a marshaller took a complex data structure > of mine, chased down all pointers it contained and proceeded to > marshal the end-points, merrily inventing it's own little analogue > of my heap in the message payload. Sounds like a recipe for nasty > surprises, not least in the area of performance. In older approaches to the same problem (like OSF/RPC), it actually is surprisingly and non-obvious. In CORBA, this is really type-safe: You declare, in IDL, what fields to follow, and those fields must then be of an IDL-declared type again. That will normally give you a quite regular data structure, and by no means "pull out" the entire object graph that you may have on the client. Regards, Martin From paul@prescod.net Fri Feb 15 02:01:24 2002 From: paul@prescod.net (Paul Prescod) Date: Thu, 14 Feb 2002 18:01:24 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6C552B.AA99F213@prescod.net> Message-ID: <3C6C6BF4.15A3B988@prescod.net> "Martin v. Loewis" wrote: > >... > > Why would that not be "remote procedure call"? Frankly, I disagree > with this thesis. It seems to me that the HTTP client invokes a > procedure (namely, retrieve a resource), and it does so remotely. One of the defining characteristics of procedure calls is you get to choose your own procedure names, per component. In HTTP the names are generic across all components. > I'm not even sure that all servers implement the same protocol. If you > expect some kind of "operation name" in an RPC protocol, I'd claim > that the URL is the operation name. Additional parameters are provided > by the headers, and the body of the request. If the URL is the operation name then what is the HTTP method for? > > This is a big part of what makes HTTP scale, because once you learn > > that one interface you can develop tons of caches, firewalls and > > other optimizers which you cannot do if people invent their own > > interfaces willy nilly. > > I don't believe this is true either. On one hand, requesting resources > based on URL is *not* sufficient for caches and firewalls. Here is a > number of cases why caching could go wrong: > - requesting the same resource (URL) multiple times may return different > values each time (e.g. in case of a CGI script) That's why there are cache control headers. But unlike RPC you *know* when you are requesting a representation of the same resource multiple times. > - different parameters (e.g. Accept-Language) may have effect the response > as well, even though identical requests would give identical responses. Caches know about this stuff. > To circumvent these problems, specific support for caching was built > into the protocol (Expires headers, caching indications, etc) Exactly. And caches combine these *generic* headers with the *generic* method name to figure out what is going on. Whereas in RPC the method names and headers (if any) are specific to the service. > Furthermore, it is *not* true that RPC protocols could not be used in > an infrastructure that allows caching and firewalls. It is quite > possible to have a firewall act as a proxy for arbitrary CORBA clients, > without even knowing the specific signature of each operation. A firewall that doesn't understand the data it is passing back and forth isn't much of a firewall. > For another example, consider NFS: It is clearly an RPC application, > yet caching and firewall traversal are frequently done. But is the caching and firewalling done at the RPC level or the NFS level? NFS itself is more like HTTP, an application protocol, than like RPC. It has a fixed set of methods etc. > For yet another example, ILU extends the notion of operations on an > interface with a FUNCTIONAL attribute, which allows the client to > cache responses. Caches are just one example. Filters, loggers, spiders, proxies, these all depend on knowledge of HTTP (or NFS, or SMTP) semantics. Google is an example of a web service that only works because it knows that the services it talks to all speak HTTP (or FTP, or some other protocol with known semantics). Google will likely never do anything useful with an XML-RPC site. It could only ever make progress if something ON TOP of XML-RPC defined some semantics it understood. And that thing on top would be the important bit. XML-RPC would just be annoying syntax that got in the way. Babelfish is the same. Meerkat is another. > .... If such a feature is put in the wire protocol (as a > bit to indicate whether caching of the response is allowed), proxies > could easily perform caching for arbitrary clients. HTTP-ng was built > on top of an RPC architecture, yet it was just as scalable as HTTP > 1.1, and more efficient. Yes, you can build efficient protocols *on top* of an RPC. That is very different than saying that RPC scales. You can also build an efficient protocol *without* RPC and what value is the RPC layer providing you? If you want to think of HTTP as being built on top of a nameless RPC protocol then go ahead. That doesn't change the fact that HTTP is not itself RPC, nor that non-RPC protocols like HTTP, FTP and SMTP have achieved much more widespread usage in "internet-scale" applications than RPC protocols have. HTTP-NG is just the latest in the list of failures. I predict SOAP will be next. > So I think it is non-sense to claim that RPC infrastructures, by > nature, cannot scale. If you use RPC as RPC, i.e. defining your own methods whenever it is convenient to, then you will not achieve internet-wide scalablility, popularity nor fire-wall compatibility. I've been through this so many times that I can't do it again. Here are some URLs: * http://www.xent.com/pipermail/fork/2001-August/002801.html * http://mail.python.org/pipermail/xml-sig/2002-February/007160.html * http://www.xml.com/pub/a/2002/02/06/rest.html * http://www.xent.com/jan00/0907.html * http://conveyor.com/RESTwiki/moin.cgi/HowToConvertRpcToRest * http://www.distributedcoalition.org/mailing_lists/dist-obj/msg03077.html * http://www.distributedcoalition.org/mailing_lists/dist-obj/msg03084.html * http://www.distributedcoalition.org/mailing_lists/dist-obj/msg03091.html If you still disagree when you've read them (and Fielding's thesis) then that's okay with me. There is always room in the computing industry for another attempt to deploy RPC on the Internet. We can have this debate again in a couple of years. ;) Paul Prescod From uche.ogbuji@fourthought.com Fri Feb 15 02:57:20 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Thu, 14 Feb 2002 19:57:20 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from martin@v.loewis.de (Martin v. Loewis) of "15 Feb 2002 02:22:35 +0100." Message-ID: <200202150257.g1F2vN611946@localhost.localdomain> > Uche Ogbuji writes: > > > I would be horrified if a marshaller took a complex data structure > > of mine, chased down all pointers it contained and proceeded to > > marshal the end-points, merrily inventing it's own little analogue > > of my heap in the message payload. Sounds like a recipe for nasty > > surprises, not least in the area of performance. > > In older approaches to the same problem (like OSF/RPC), it actually is > surprisingly and non-obvious. In CORBA, this is really type-safe: You > declare, in IDL, what fields to follow, and those fields must then be > of an IDL-declared type again. That will normally give you a quite > regular data structure, and by no means "pull out" the entire object > graph that you may have on the client. Agreed. This is why SOAP's multi-reference types seem to me to be either quite useless or quite dangerous, depending on how each language buinding would put them into play. Either you have to specify by hand what gets roped into multi-ref, in which case, it seems useless (I can do that just as well, and more precisely, by hand in the code) Or the implementation automatically sucks all referenced objects into the result, which seems a frightening thought, as I've noted. Again, what I can imagine needing is covered by CORBA. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From lloyd@lancaster.lib.pa.us Fri Feb 15 03:10:21 2002 From: lloyd@lancaster.lib.pa.us (Eron Lloyd) Date: Thu, 14 Feb 2002 22:10:21 -0500 Subject: [XML-SIG] WSDL library ? Message-ID: <20020215031327.FUWC23533.out009.verizon.net@there> Wow. Way to make a wandering webservice journeyman feel like he has *no* clue at all which path to take from here...;-). I used to think I was getting the hand of this, and now I see I'm way off. So what's a newbie to do? SOAP sucks (seems to be the consensus), RPC just can't seem to get it right, CORBA should get more attention (but it probably won't, because everyone is starry-eyed about SOAP), and distributed computing as a whole has a very varied "distribution" of opinion of what the hell it should be. And now I guess interop is a facade, too. I'm seeing this in other areas of the "XML metaworld" as well; XSLT is being abused, DTDs need to disappear, XSchema is too complex, and we have XQL...no, I mean XQuery...I mean..., etc. etc. I remember someone saying that XML would simplify information management. Personally, I'm trying to design a distributed architecture using Python, XML, and Web services to manage large and diverse amounts of local community information. Honestly, I don't want to have to think about the inefficiencies of HTTP, the bloat of SOAP, and the pros and cons of different XML payload delivery schemes. All I really hope to provide is a way, for instance, that a homeless person can keep track of possible job opportunities and somehow be notified wherever they are when a reply is sent. Much of my framework sits atop Zope, with lots of glue binding things like 4Suite, Jabber, and PostgreSQL. XML-RPC seemed like a way to go, with a move towards SOAP once it settles a bit. It seems to me that like most technologies, XML & Web service standards are going to go through a long and tough time of growing pains. With groups like Microsoft, IBM, and Activestate touting SOAP, UDDI, and WSDL, I thought maybe I avoided the maturation process. Now I think differently. Whatever happens, I hope both Python, and us, the Python community, can continue to stay ahead and work together to further deliberative and openly participatory design projects. Regards, Eron Lloyd From tpassin@home.com Fri Feb 15 03:37:31 2002 From: tpassin@home.com (Thomas B. Passin) Date: Thu, 14 Feb 2002 22:37:31 -0500 Subject: [XML-SIG] Interface for XSD datatypes References: <20020214152104.GA584@crystal.mems-exchange.org> Message-ID: <004201c1b5d2$19da2190$0bf13044@tbp> [Andrew Kuchling] Andrew, this is very interesting. I've not worked with datatype libraries so I'd just be guessing at what would be useful. Still, I have a few suggestions. > RELAX NG requires support for the primitive datatypes defined in part > 2 of the XML Schema standard. Support for datatypes would be useful > outside of the RELAX NG processor, if, for example, someone wanted to > implement XML Schema in Python or if other standards adopt the XML > Schema datatypes. Therefore, I'd like to get comments on a proposed > interface for datatypes. > >... > class DatatypeLibCollection: > """ > Holder of a bunch of datatype libraries. > """ > > def register (self, library): > """register(library : DatatypeLibrary) > Add 'library' to the list of libraries available in this collection. > """ > > def has_uri (self, uri): #### suggest naming this "is_registered". I assume that we are going to identify #### a library by a uri? > """has_uri(uri:string) : boolean > Returns true if there's a datatype library registered for the given > URI. > """ > > def has_type (self, (uri, type)): > """has_uri((uri:string,type:string)) : boolean > Returns true if the specified datatype exists. > """ #### An apparent typo, the intended form being #### has_type((uri:string,type:string)) : boolean > def check (self, (uri,type), params, value): > """check((uri:string,type:string), > params: {string : string}, > value : string) : boolean > Returns true if the string 'value' represents a legal > value for the datatype selected by the (uri,type) pair, > taking the additional parameters 'params' into account. > If this method returns false, it might mean either > that the uri isn't for any registered library, or > that the library is OK and the value is wrong. > XXX should this return an explanatory message, or should > there be a third function (explain()?) > """ #### Wouldn't you sometimes want to know which library (or libraries) #### said this value was legal? > ... > def evaluate (self, (uri,type), params, value): > """evaluate((uri:string,type:string), > params: {string : string}, > value : string) : any > > Evaluate the string 'value' as a value of the datatype > selected by the (uri,type) pair, taking the additional > parameters 'params' into account. Raises DatatypeValueError > if the value is illegal; raises DatatypeURIError if there's > no library registered for that URI. > """ #### What would "evaluate" mean here? What would its semantics be? #### What gets returned? #### I'd like a way to enumerate the registered libraries: def list_libs(): '''Return a list of registered libraries (or maybe their uri values), or maybe a dictionary would be better''' > > class DatatypeLibrary: > """ > Instance attributes: > uri : string > Namespace URI for this collection of data types > """ > > def evaluate(self, type, params, value): > """evaluate(type:string, > params: {string : string}, > value : string) : any > > Evaluate the string 'value' as a value of the datatype > selected by the name 'type', taking the additional parameters > 'params' into account. Raises DatatypeValueError with an > explanatory message if the value is illegal. > """ #### Same question as for the collection. > def has_type (self, type): > """has_type(type:string) : boolean > Returns true if the library supports a type with the given name. > """ #### Might not some libraries want to use a uri:string pair or #### some other structured convention? Maybe there is a way #### to allow more flexibility in the definition of "type". Maybe "type" could #### be an abstract type that, in some subclasses of DatatypeLibrary, #### would be a string. > def is_type_legal (self, type, params): > """is_type_legal(type:string, params:{string:string}) : boolean > Returns true if the type and corresponding parameters are legal. > """ #### Of course, the comment above would ripple through other methods. > > def get_xsd_library (): > """get_xsd_library(): DatatypeLibrary > Return the library for the XML Schema standard's primitive > datatypes. > """ #### Wouldn't this be a method on the collection? #### I'd like to see a way to list the types in a given library, some #### way to enumerate through them: def list_datatypes() '''Returns a list of datatypes in the library''' > I envision the RELAX NG interface ultimately looking like this: > schema = relaxng.parse(...) # Get a relaxng.Schema object with a > # .datatypecoll attribute. > # It will initially have just the > # XML Schema library registered. > > # Add a custom type library > schema.datatypecoll.register(myTypeLibrary) > # Check a document against the schema > print schema.is_valid(...) > > The code will live in sandbox/datatype for now. Should it go in the > XML tree eventually, or be a separate library? If the former, where > should it go? xml.schema.datatype, xml.datatype, ... ? > If we may end up with support for more than one type of schema, perhaps xml.schema.datatypes would be good. Cheers, Tom P From fdrake@acm.org Fri Feb 15 05:07:15 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 00:07:15 -0500 Subject: [XML-SIG] minidom changes & additional modules Message-ID: <15468.38787.558166.715298@grendel.zope.com> Please send comments on this discussion & proposal to xml-sig@python.org. minidom changes & additional modules ------------------------------------ At Python 10, the problem of performance for the Python DOM implementations came up (again). There are several implementations of the DOM either already available or coming available in the near future (a few are in alpha/beta releases). I'm not sure what the status of those will be, or how they'll perform, but many will include C code rather than being 100% pure Python implementations. I think it would be nice to have a pure Python DOM available as part of both the PyXML package and the standard library. At the moment, that means minidom. While not perfect, there just haven't been a lot of complaints about bugs, so I'm inclined to consider it fairly stable code. It will be easier to get a new revision of minidom into the standard library than it would be to replace it, specifically because of the familiarity and stability of the code. The performance problem is substantial for many users, however, and the most often cited problems seem to be the time it takes to construct a new document object from XML text, and the memory size of the document. While it won't be possible to solve all the performance and resource problems by tweaking the implementation, there are a number of areas in which improvements are not difficult to achieve and won't cause significant de-stabilization concerns. I'd like to describe my post-conference efforts and see if others think this is a reasonable approach. Optimizing minidom ------------------ As its name suggests, minidom is a fairly minimal implementation of the DOM; there are many corner cases it doesn't check, and it certainly doesn't enforce all the read-only constraints specified in the DOM recommendations. As such, it is wonderfully "Pythonic", and subscribes whole-heartedly to the "we're all adults here" philosophy. However, the minidom implementation does use the constructors of the various node types to initialize based on whatever parameters are passed in (mostly), even though the class constructors are not specified by the DOM (only the factory functions are specified). Moreover, the constructors generally cascade to the base Node.__init__() constructor, which does very little, but does provide one debugging hook. This hook, which causes all nodes to be added to a table when debugging is enabled, is used to make sure that all nodes are freed when the Node.unlink() method is called; the regression test checks that the table is empty after the appropriate unlink() calls have been made. Unfortunately, this imposes a serious performance burden. Even nodes which do not allow child nodes (such as Text and Comment nodes) end up with a new NodeList instance (essentially a built-in list), and the __init__() must be called. If we remove the Node.__init__() method, we do lose some measure of debug-ability, but we can relegate NodeList creation to the constructors of the derived classes and avoid the method call to the base constructor. In the case of the Text & CDATASection node types, we can do the attribute initialization in the factory functions and avoid having an __init__() method altogether, allowing these nodes to be much cheaper to construct. Constructing document instances ------------------------------- The current process of constructing a typical minidom document object using the minidom.parse() and minidom.parseString() functions is fairly expensive at runtime. There's a pyexpat parser, an adapter that makes it look like a SAX2 reader, a ContentHandler and an event manager from the pulldom module, plus the calls into the minidom code itself. A large portion of the code is simply the adaptors that glue everything together. Building a minidom DOM builder directly on top of pyexpat allows us to avoid about a third of the overhead, and such an implementation can be based on some code I wrote for the "Parsed XML" product for Zope. While the code was originally targeted to a DOM written for that project, most of it is adapting the pyexpat callback parameters to the DOM structures; modifying it to work with minidom has proved fairly easy. The minidom.parse() and minidom.parseString() functions can be easily adapted to use the alternate DOM builder if a specific parser is not indicated in the parameter list. As a benefit, the new builder offers an interface much like what is being proposed for the DOM Level 3 Load specification, including filtering support. This makes it easy to drop information that isn't needed while supporting more of the DOM than the pulldom methods. The target API for the new interfaces will be the final DOM 3 Load component, but I don't know when that can be expected to become final. The working group is making progress, but it doesn't appear to be close to completion. I expect to provide feedback based on implementation experience. Current status -------------- I have code that works and supports much of what's proposed in each of the sections above. My test data indicates that the speed of building the DOM has approximately doubled. The minidom changes alone don't make a lot of difference, but combined with the new loader we see a great deal of improvement. I'd like to check this into the PyXML tree soon so that we can shake out any problems and maybe squeeze out more performance before integrating the changes into the standard library. Before I do this, I'd like to add Entity and Notation nodes to minidom, since the builder can extract the required information from Expat. (But that's just a few hours' work; the basic implementation for that was already done for the Parsed XML project.) Further work ------------ There's a lot more that could be done to improve performance, primarily by finishing some work on Expat and extending the pyexpat interface to support reporting the details of each event in an easier-to-use form, but I'll leave that for another day. ;-) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From martin@v.loewis.de Fri Feb 15 09:00:06 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 15 Feb 2002 10:00:06 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6C6BF4.15A3B988@prescod.net> References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6C552B.AA99F213@prescod.net> <3C6C6BF4.15A3B988@prescod.net> Message-ID: Paul Prescod writes: > > I'm not even sure that all servers implement the same protocol. If you > > expect some kind of "operation name" in an RPC protocol, I'd claim > > that the URL is the operation name. Additional parameters are provided > > by the headers, and the body of the request. > > If the URL is the operation name then what is the HTTP method for? For all practical purposes, the method can be only "GET" or "POST". Those are really synonymous; it is merely a protocol variant (i.e. POST can be taken to mean "do not cache", so it is part of the protocol header). > > I don't believe this is true either. On one hand, requesting resources > > based on URL is *not* sufficient for caches and firewalls. Here is a > > number of cases why caching could go wrong: > > - requesting the same resource (URL) multiple times may return different > > values each time (e.g. in case of a CGI script) > > That's why there are cache control headers. But unlike RPC you *know* > when you are requesting a representation of the same resource multiple > times. In RPC, you can also know when you invoke the same operation on the same object twice, and cache the result (consider the NFS case). > > To circumvent these problems, specific support for caching was built > > into the protocol (Expires headers, caching indications, etc) > > Exactly. And caches combine these *generic* headers with the *generic* > method name to figure out what is going on. Whereas in RPC the method > names and headers (if any) are specific to the service. Sure. But the RPC infrastructure could provide the same kind of information. E.g. ILU does, with the FUNCTIONAL attribute. > > Furthermore, it is *not* true that RPC protocols could not be used in > > an infrastructure that allows caching and firewalls. It is quite > > possible to have a firewall act as a proxy for arbitrary CORBA clients, > > without even knowing the specific signature of each operation. > > A firewall that doesn't understand the data it is passing back and forth > isn't much of a firewall. So it should not let HTTP through then, either? After all, a POST could include arbitrary information (such as a SOAP message, or a GIOP message). > > For another example, consider NFS: It is clearly an RPC application, > > yet caching and firewall traversal are frequently done. > > But is the caching and firewalling done at the RPC level or the NFS > level? NFS itself is more like HTTP, an application protocol, than like > RPC. It has a fixed set of methods etc. The caching is done on the NFS level. NFS is an RPC application, so it is both: RPC and application. In this terminology, could you agree that HTTP is an RPC application (with a fixed set of operation names: GET, POST, and a few that aren't in use)? > Google will likely never do anything useful with an > XML-RPC site. It could only ever make progress if something ON TOP of > XML-RPC defined some semantics it understood. Exactly. So what is the point? It seems what you are saying is "RPC cannot (in general) be used without knowledge of the specific interface"; I could not agree more. Your implication "it does not scale" then becomes "RPC does not scale, but specific RPC applications can". For example, Google could collect information from CORBA Naming Service installations right away (or better CORBA bootstrap installations, since they even have a well-known port). So it would seem that you can agree that the CORBA Naming Service does scale, and so could my own CORBA application. If so, we are in violent agreement. > Yes, you can build efficient protocols *on top* of an RPC. That is very > different than saying that RPC scales. You can also build an efficient > protocol *without* RPC and what value is the RPC layer providing you? The value of using an RPC infrastructure is that it precisely safes you the effort of defining your own wire protocol. The wire protocol (and in case of CORBA, the programming language API) is implied by defining the interface. > If you want to think of HTTP as being built on top of a nameless RPC > protocol then go ahead. That is indeed my view. > That doesn't change the fact that HTTP is not itself RPC, nor that > non-RPC protocols like HTTP, FTP and SMTP have achieved much more > widespread usage in "internet-scale" applications than RPC protocols > have. Because they are applications with widespread applicability. There is (unfortunately, IMO) a tradition to define text protocolls in the internet. The Intelligent Net telephone infrastructure (the one that implements number translation for the 1-800 services etc) is indeed an application of an RPC protocol (an adaptation X.880, to be specific). I'd claim that there are more invocations of that application on any given day than there are FTP or SMTP interactions (HTTP invocations might outnumberb the number of phone call to toll-free telephone numbers). > HTTP-NG is just the latest in the list of failures. I predict SOAP > will be next. Those infrastructures are only used if people use them for applications. They will do so if they help them to do their work (such as CORBA and COM do), instead of being in the way of solving the problem (as is the case with HTTP-ng, SOAP, and DCOM). They will certainly never see such widespread use as HTTP or SMTP, just since the applications that are developed with it are not as widely used as "retrieve remote document" and "send electronic mail". > > So I think it is non-sense to claim that RPC infrastructures, by > > nature, cannot scale. > > If you use RPC as RPC, i.e. defining your own methods whenever it is > convenient to, then you will not achieve internet-wide scalablility, > popularity nor fire-wall compatibility. It seems that out main problem is a terminology one. What means "it cannot scale" to you? To me, it means "you cannot build an infrastructure where many user in vastly remote locations participate". I still think this not true, for RPC systems. To you, it seems to mean "it is unlikely that as many users will ever use it as they use HTTP today to get documents". If so, we agree. I'm still a bit unclear what to make of the fire-wall compatibility: it seems that for any specific application, you'll either have to explain it to the firewall, or cheat it; whether the interaction is REST-style or RPC. > I've been through this so many times that I can't do it again. Here are > some URLs: Thanks for these. I agree that we probably don't need to continue this discussion endlessly; it seems that we don't disagree that much about facts, just in how we judge the relevance of these facts. Regards, Martin From paul@prescod.net Fri Feb 15 09:24:02 2002 From: paul@prescod.net (Paul Prescod) Date: Fri, 15 Feb 2002 01:24:02 -0800 Subject: [XML-SIG] Economics of RPC References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6C552B.AA99F213@prescod.net> <3C6C6BF4.15A3B988@prescod.net> Message-ID: <3C6CD3B2.6E85D4FE@prescod.net> "Martin v. Loewis" wrote: > >... > > For all practical purposes, the method can be only "GET" or > "POST". Those are really synonymous; it is merely a protocol variant > (i.e. POST can be taken to mean "do not cache", so it is part of the > protocol header). No, GET and POST could not be more different. Caching is irrelevant. What happens when you hit "reload" on a browser on a POSTed page. The reload specifically disables cache but if the browser is any good it behaves massively different when the page came from a GET versus a POST. Plus PUT and DELETE also exist and should be used more than they are. > ... > In RPC, you can also know when you invoke the same operation on the > same object twice, and cache the result (consider the NFS case). NFS is an application protocol. You KNOW because you are using NFS, not because you are using RPC. RPC is just another layer you are ignoring. > > A firewall that doesn't understand the data it is passing back and forth > > isn't much of a firewall. > > So it should not let HTTP through then, either? After all, a POST > could include arbitrary information (such as a SOAP message, or a GIOP > message). I would strongly advise system administrators to disallow POSTs of SOAP or GIOP messages. They should be able to *always know* the safety and semantics of a particular POST by looking at the URI and the method name. The rest of the message should be mostly irrelevant for firewalling purposes. >... > The caching is done on the NFS level. NFS is an RPC application, so it > is both: RPC and application. In this terminology, could you agree > that HTTP is an RPC application (with a fixed set of operation names: > GET, POST, and a few that aren't in use)? I could agree that HTTP *could have been* an RPC application if it were defined that way. But the underlying RPC "language" for HTTP was never defined separately from HTTP. Similarly, I posit that NFS could have been defined without an RPC basis and have been none the worse for wear. For widely deployed protocols the underlying RPC bit becomes irrelevant. It's only useful for not-very-widely deployed protocols. > > Google will likely never do anything useful with an > > XML-RPC site. It could only ever make progress if something ON TOP of > > XML-RPC defined some semantics it understood. > > Exactly. So what is the point? It seems what you are saying is "RPC > cannot (in general) be used without knowledge of the specific > interface"; I could not agree more. Your implication "it does not > scale" then becomes "RPC does not scale, but specific RPC applications > can". But those applications would scale just as well (or poorly) if they didn't use RPC. > For example, Google could collect information from CORBA Naming > Service installations right away (or better CORBA bootstrap > installations, since they even have a well-known port). So it would > seem that you can agree that the CORBA Naming Service does scale, and > so could my own CORBA application. If so, we are in violent agreement. Let's put it this way, 1. if you wanted to deploy a widely used application protocol on the Internet the CORBA layer would be a net loss, not a gain. 2. "generic" RPC, unconstrained to a particular application protocol will never get through corporate firewalls for very long. It is the application protocol that matters. The RPC layer does not help and may hurt. >... > Because they are applications with widespread applicability. There is > (unfortunately, IMO) a tradition to define text protocolls in the > internet. That's because internet protocols are adopted bottom up, by developers, and tend not to be mandated from the top down, by managers and standardizers. That's another reason that RPC just gets in the way. >... > Those infrastructures are only used if people use them for > applications. They will do so if they help them to do their work (such > as CORBA and COM do), instead of being in the way of solving the problem > (as is the case with HTTP-ng, SOAP, and DCOM). Okay, but CORBA gives me tremendous bang for my buck if you and I are going to build a protocol to talk to each other. If everyone on XML-DEV gets interested the bang for buck starts to drop because now we're talking about a lot of ORB installations (or SOAP implementation installations, or XML-RPC implementation installations). If everyone in the computing world gets interested then it gets downright expensive. My initial savings in not defining the wire format (which is relatively easy with XML) have been sucked up in the extra deployment cost of deploying two layers, the RPC layer and the application protocol layer. Now if the Internet had standardized on CORBA twenty years ago then maybe by now we'd have enough application protocls to recoup the cost of deploying all of those ORBs. But there is a strong argument to be made that application protocols are going to come along much more slowly in the future. Part of that is that it is harder to deploy them because firewalls are so popular. Part of that is because now that protocols (especially HTTP) work on a universal namespace model alot of the differences between protocols evaporate. POP and IMAP are a lot like HTTP except that they had mail-specific namespace models. NNTP is the same. I'll bet today they could be HTTP variants with little extra complexity and a huge savings in duplicated infrastructure. Also, another part of the saying "RPC doesn't scale" is the "common usage." If we consider NFS or HTTP as "applications" of RPC, they are incredibly careful, well-thought out applications. Many person-years went into each. RPCs do not encourage you to put in these person years because they give the illusion that the network component is a library that you call like a local library. Anybody sane realizes that this is not a good way to program. So why think of the network as a library-like component at all? Why think of network interactions as method calls at all? Why think of the data being sent across the network as a "parameter"? >... > It seems that out main problem is a terminology one. What means "it > cannot scale" to you? To me, it means "you cannot build an > infrastructure where many user in vastly remote locations > participate". I still think this not true, for RPC systems. To you, > it seems to mean "it is unlikely that as many users will ever use > it as they use HTTP today to get documents". If so, we agree. Yes, I'm mostly talking about multi-vendor, multi-client, multi-server, multi-intermediary interoperability. You won't get that until you pin down a fixed set of methods. > I'm still a bit unclear what to make of the fire-wall compatibility: > it seems that for any specific application, you'll either have to > explain it to the firewall, or cheat it; whether the interaction > is REST-style or RPC. The nice thing about REST-style is that it forces you to dumb it down to the point that the firewall can almost understand it "automatically." Where it cannot, a few rules like "POST to URIs of this form are okay" will help a lot. One of the things about REST is that the method name and the URI are so central and they are also front-and-center to the firewall. The "important bit" of an RPC message could be any parameter and might in fact involve state that's already been set on one side or another! Paul Prescod From d.hoeppner@tu-bs.de Fri Feb 15 09:34:10 2002 From: d.hoeppner@tu-bs.de (Dierk Hoeppner) Date: Fri, 15 Feb 2002 10:34:10 +0100 Subject: [XML-SIG] GET vs POST (was WSDL library ?) In-Reply-To: References: <3C6C6BF4.15A3B988@prescod.net> Message-ID: <3C6CE422.24435.507BBCE@localhost> > For all practical purposes, the method can be only "GET" or > "POST". Those are really synonymous; it is merely a protocol variant > (i.e. POST can be taken to mean "do not cache", so it is part of the > protocol header). Not quite 'synonymous'': GET Options are stored in an environmentvariable QUERY_STRING by the server before calling the cgi program. Environment variables mostly have a limited length. With POST the CGI has to read the standard input. That stream can be much much longer than QUERY_STRING. Using POST is safer because you don't need to know which operating system the web server runs on. Dierk Dierk Hoeppner Universitaetsbibliothek Pockelsstr. 13 D-38106 Braunschweig Germany Tel: +49-531-391-5066 Fax: -5836 E-Mail: d.hoeppner@tu-bs.de From martin@v.loewis.de Fri Feb 15 09:13:22 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 15 Feb 2002 10:13:22 +0100 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: <15468.38787.558166.715298@grendel.zope.com> References: <15468.38787.558166.715298@grendel.zope.com> Message-ID: "Fred L. Drake, Jr." writes: > I'd like to check this into the PyXML tree soon so that we can shake > out any problems and maybe squeeze out more performance before > integrating the changes into the standard library. Please do; this all sounds very reasonable. I think the most controversial one is > Building a minidom DOM builder directly on top of pyexpat allows us to > avoid about a third of the overhead, and such an implementation can be > based on some code I wrote for the "Parsed XML" product for Zope. > While the code was originally targeted to a DOM written for that > project, most of it is adapting the pyexpat callback parameters to the > DOM structures; modifying it to work with minidom has proved fairly > easy. The issue here is that there are atleast three competing such implementations: xml.dom.ext.reader.PyExpat.Reader, Ft.Xml.pDomlette.PyExpatReader, and your ParsedXML reader, so the question is which one to use. At IPC10, I've toyed already with integrating the ext.reader into minidom, but I'm happy to throw that away. Mike Olson is interested in dumping pDomlette in favour of minidom, but that would require that there is a pDomlette compatible reader. We could probably still use the API and implementation you've been designing (especially since it appears to follow DOM Level 3); hoping that we can provide the 4Suite-style reader API on top of that. The one feature that Mike wants to see in the reader is optional XInclude support; it should be possible to incorporate that from 4Suite once you have committed your changes. Regards, Martin From mal@lemburg.com Fri Feb 15 11:15:13 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Fri, 15 Feb 2002 12:15:13 +0100 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6C552B.AA99F213@prescod.net> <3C6C6BF4.15A3B988@prescod.net> Message-ID: <3C6CEDC1.E86F9E92@lemburg.com> To some up this thread (which has run off into a completely different, though interesting direction): * FourThought will include their wsdllib.py in one fo the future 4Suite releases. * The "best" way to define input/output types is by sticking to ZSI's type objects. Now, all I'm missing is the link between the two :-) Ideal would probably be some helper wrapped around these two which takes a list of method names and their input/output type objects, plus the URL to use for method invokation and spits out a nicely formatted WSDL file. Looking at the postings on this thread, I'm probably too pragmatic about this ;-) Oh well, -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From fdrake@acm.org Fri Feb 15 15:33:21 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 10:33:21 -0500 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: References: <15468.38787.558166.715298@grendel.zope.com> Message-ID: <15469.10817.253804.837730@grendel.zope.com> Martin v. Loewis writes: > Please do; this all sounds very reasonable. I think the most > controversial one is > > > Building a minidom DOM builder directly on top of pyexpat allows us to > > avoid about a third of the overhead, and such an implementation can be > > based on some code I wrote for the "Parsed XML" product for Zope. I wasn't expecting this to be controversial! I was expecting the removal of the Node.__init__() method to be controversial since it makes it more difficult to debug leaks, which are still good to catch since minidom uses an explicit unlinking step. (I've had a few thoughts about how to make that less painful, but that doesn't help the performance story.) > The issue here is that there are atleast three competing such > implementations: xml.dom.ext.reader.PyExpat.Reader, > Ft.Xml.pDomlette.PyExpatReader, and your ParsedXML reader, so the > question is which one to use. I'm sure the compatibility code can be written without a lot of difficulty; I'll take a look at that soon (probably this weekend). > Mike Olson is interested in dumping pDomlette in favour of minidom, > but that would require that there is a pDomlette compatible reader. One nice thing about the DOM 3 Load interface is that it can be used to do just about anything reasonable while loading a document. > We could probably still use the API and implementation you've been > designing (especially since it appears to follow DOM Level 3); hoping > that we can provide the 4Suite-style reader API on top of that. Since "designing" means "substantially complete implementation", I glad you think it'll be useful. ;-) > The one feature that Mike wants to see in the reader is optional > XInclude support; it should be possible to incorporate that from > 4Suite once you have committed your changes. That would be cool! Another thing that would be good to support is xml:base; I'm not sure what others have done for that, if anything. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From uche.ogbuji@fourthought.com Fri Feb 15 15:50:56 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 08:50:56 -0700 Subject: [XML-SIG] IPC 10 BoF notes (Re: minidom changes & additional modules) In-Reply-To: Message from "Fred L. Drake, Jr." of "Fri, 15 Feb 2002 00:07:15 EST." <15468.38787.558166.715298@grendel.zope.com> Message-ID: <200202151551.g1FFovO12519@localhost.localdomain> Aargh! I'm so sorry, even though Fred posted a reminder I keep forgetting to post my notes from the BoF. The key determination that was made was to add support for XPath evaluation to the DOM apis, perhaps in the form: #get DOM node somehow node.evaluate(".//*") Which would return a node list of all the descendant nodes. Of course any other XPath expression my be used, and the node on which evaluate was called would serve as the context. Issues I see that need to be resolved: * How to define variable bindings and extension function definitions * Whether to maintain context position and context size info * How to resolve the ordering of returned node sets (I assume all node sets would be sorted into doc order and turned into node lists on output, but we never decided) * Whether to turn this into a generic query system a la XML:DB, which would allow other query modes, such as XPointer? Here are my actual notes (sketchy, unfortunately, because at the latter parts I got too much into the dicussion ;-) ) New DOM BOF ----------- How many peeps using XML/DOM/both are using it for : 5 of us Data only: 8 DOM for data: 3 people SAX 4DOM minidom pulldom Orchard p/cDomlette Xerces DOM Pyxie Problems -------- DOM is confusing: API is non-intuitive, not Pythonic, Java-style function call style minidom gives no guidance on navigation DOM is not lexically consistent (no round-tripping) Slow and memory intensive Andrew Dalke discussed particular problem he had with manipulating XML that was generated from non-XML formats. A consensus began to emerge that we move towards minidom+XPath as an experimental fix for DOM usability. Was discussed that pDomlette is redundant against minidom. Mike Olson will work on minidom/pDomlette merging. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Fri Feb 15 15:59:38 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 08:59:38 -0700 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: Message from "Fred L. Drake, Jr." of "Fri, 15 Feb 2002 00:07:15 EST." <15468.38787.558166.715298@grendel.zope.com> Message-ID: <200202151559.g1FFxcM12530@localhost.localdomain> > At the moment, that means minidom. While not perfect, there just > haven't been a lot of complaints about bugs, so I'm inclined to > consider it fairly stable code. It will be easier to get a new > revision of minidom into the standard library than it would be to > replace it, specifically because of the familiarity and stability of > the code. Sure. Mike Olson also working to make minidom amenable enough for pDOmlette to be eliminated. The assumption is that this can be done without affecting minidom performance. > However, the minidom implementation does use the constructors of the > various node types to initialize based on whatever parameters are > passed in (mostly), even though the class constructors are not > specified by the DOM (only the factory functions are specified). > Moreover, the constructors generally cascade to the base > Node.__init__() constructor, which does very little, but does provide > one debugging hook. This hook, which causes all nodes to be added to > a table when debugging is enabled, is used to make sure that all nodes > are freed when the Node.unlink() method is called; the regression test > checks that the table is empty after the appropriate unlink() calls > have been made. > > Unfortunately, this imposes a serious performance burden. Even nodes > which do not allow child nodes (such as Text and Comment nodes) end up > with a new NodeList instance (essentially a built-in list), and the > __init__() must be called. If we remove the Node.__init__() method, > we do lose some measure of debug-ability, but we can relegate NodeList > creation to the constructors of the derived classes and avoid the > method call to the base constructor. In the case of the Text & > CDATASection node types, we can do the attribute initialization in the > factory functions and avoid having an __init__() method altogether, > allowing these nodes to be much cheaper to construct. Sounds fine to me. > Building a minidom DOM builder directly on top of pyexpat allows us to > avoid about a third of the overhead, and such an implementation can be > based on some code I wrote for the "Parsed XML" product for Zope. > While the code was originally targeted to a DOM written for that > project, most of it is adapting the pyexpat callback parameters to the > DOM structures; modifying it to work with minidom has proved fairly > easy. > > The minidom.parse() and minidom.parseString() functions can be easily > adapted to use the alternate DOM builder if a specific parser is not > indicated in the parameter list. > > As a benefit, the new builder offers an interface much like what is > being proposed for the DOM Level 3 Load specification, including > filtering support. This makes it easy to drop information that isn't > needed while supporting more of the DOM than the pulldom methods. > > The target API for the new interfaces will be the final DOM 3 Load > component, but I don't know when that can be expected to become > final. The working group is making progress, but it doesn't appear to > be close to completion. I expect to provide feedback based on > implementation experience. This also seems fine to me. I would, however, like to merge the DOM L&S InputSource class with the SAX2 InputSource class, so we can have some uniformity and simplicty in URI and entity resolution and handling across PyXML (and 4Suite). This might involve some changes to our use of DOM L&S, which wouldn't bother me a bit. I hope to put my proposal on the matter forth today. I guess Tom Passim had a point with the PyXML PEP idea. :-) > I have code that works and supports much of what's proposed in each of > the sections above. My test data indicates that the speed of building > the DOM has approximately doubled. The minidom changes alone don't > make a lot of difference, but combined with the new loader we see a > great deal of improvement. > > I'd like to check this into the PyXML tree soon so that we can shake > out any problems and maybe squeeze out more performance before > integrating the changes into the standard library. Before I do this, > I'd like to add Entity and Notation nodes to minidom, since the > builder can extract the required information from Expat. (But that's > just a few hours' work; the basic implementation for that was already > done for the Parsed XML project.) OK. But even though I agree with most of it, I think you should check this into a branch. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Fri Feb 15 16:03:21 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 09:03:21 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from "M.-A. Lemburg" of "Fri, 15 Feb 2002 12:15:13 +0100." <3C6CEDC1.E86F9E92@lemburg.com> Message-ID: <200202151603.g1FG3LW12539@localhost.localdomain> > To some up this thread (which has run off into a completely > different, though interesting direction): > > * FourThought will include their wsdllib.py in one fo the > future 4Suite releases. > > * The "best" way to define input/output types is by sticking to > ZSI's type objects. > > Now, all I'm missing is the link between the two :-) > Ideal would probably be some helper wrapped around these two > which takes a list of method names and their input/output type > objects, plus the URL to use for method invokation and > spits out a nicely formatted WSDL file. I think that the licensing is compatible, so we have actually been considering including ZSI in 4Suite to provide the SOAP/RPC iomplementation for the repository. If we did this (with Rich's permission, of course), it would help you a bit, but someone would still have to write the wrapper you mentioned. I regret I'm unlikely to have the time to write it, but if you'd like to give it a start... -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From mal@lemburg.com Fri Feb 15 16:11:29 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Fri, 15 Feb 2002 17:11:29 +0100 Subject: [XML-SIG] WSDL library ? References: <200202151603.g1FG3LW12539@localhost.localdomain> Message-ID: <3C6D3331.926C9EEA@lemburg.com> Uche Ogbuji wrote: > > > To sum up this thread (which has run off into a completely > > different, though interesting direction): > > > > * FourThought will include their wsdllib.py in one fo the > > future 4Suite releases. > > > > * The "best" way to define input/output types is by sticking to > > ZSI's type objects. > > > > Now, all I'm missing is the link between the two :-) > > > Ideal would probably be some helper wrapped around these two > > which takes a list of method names and their input/output type > > objects, plus the URL to use for method invokation and > > spits out a nicely formatted WSDL file. > > I think that the licensing is compatible, so we have actually been considering > including ZSI in 4Suite to provide the SOAP/RPC iomplementation for the > repository. If we did this (with Rich's permission, of course), it would help > you a bit, but someone would still have to write the wrapper you mentioned. I will have to install 4Suite and ZSI eventually, so wrapping everything into one package would be nice, but is not a requirement. However, it would be nice to have them interop at some level... > I regret I'm unlikely to have the time to write it, but if you'd like to give > it a start... I most probably will within the next two months, since I need this for a project I'm working on. Thanks, -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From fdrake@acm.org Fri Feb 15 16:14:16 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 11:14:16 -0500 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: <200202151559.g1FFxcM12530@localhost.localdomain> References: <15468.38787.558166.715298@grendel.zope.com> <200202151559.g1FFxcM12530@localhost.localdomain> Message-ID: <15469.13272.413647.569454@grendel.zope.com> Uche Ogbuji writes: > Sure. Mike Olson also working to make minidom amenable enough for > pDOmlette to be eliminated. The assumption is that this can be > done without affecting minidom performance. Excellent! Thanks for the BoF notes, BTW; I wish I'd been able to attend. > This also seems fine to me. I would, however, like to merge the DOM L&S > InputSource class with the SAX2 InputSource class, so we can have some > uniformity and simplicty in URI and entity resolution and handling across > PyXML (and 4Suite). Good idea; there's no need to have multiple InputSource types. We can move the InputSource implementation to xml.utils or someplace and then import it into both places (since we need to maintain compatibility with the APIs that already offer it directly). > I guess Tom Passim had a point with the PyXML PEP idea. :-) Yeah, I started to think this was a "big" thing when I saw how much proposal I was writing. ;-) > OK. But even though I agree with most of it, I think you should check this > into a branch. I presume you mean the whole implementation of my proposal? I can do that. I'll presume we can target this for PyXML 0.8; I don't know what plans there are for a PyXML 0.7.1. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From rsalz@zolera.com Fri Feb 15 16:20:18 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 11:20:18 -0500 Subject: [XML-SIG] WSDL library ? References: <200202151603.g1FG3LW12539@localhost.localdomain> Message-ID: <3C6D3542.20607@zolera.com> > I think that the licensing is compatible, so we have actually been considering > including ZSI in 4Suite to provide the SOAP/RPC iomplementation for the > repository. Ouch -- bumped my head on the floor when I fell out of my chair. ZSI (as of 1.2 RC3) uses the X copyright, so anyone can do anything they want as long as they don't remove the copyright. Don't ask, don't tell. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From rsalz@zolera.com Fri Feb 15 16:27:09 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 11:27:09 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> Message-ID: <3C6D36DD.2070507@zolera.com> Thanks, Martin, for the explanation of how Corba can do doubly-linked lists. I am glad it's gotten more competent since I looked. Can it really do full cycles now, where head->next = tail->prev? Cool. I claimed most distributed computing doesn't use the Corba object model. DCOM doesn't, it's aggregation of interfaces. Java uses single inheritance and interface. Neither of those can be mapped into a simple inheritance model. As for being "surprised" or "horrified" that all pointers are chased when you serialize an object. Hunh? If I declared an object in Corba or DCE IDL (or MIDL) I would be quite upset if only certain parts of it ended up being remoted. Yes, many serializations allow full pointer-chasing, heap management, etc. It's not ineffecient if you don't need it, and it's useful when you do. Sure, you don't necessarily need it in business -- VisualBasic's datatypes are provably sufficient. All I know about RDF is how to spell it. :) As for why HREF/ID, etc., is in SOAP? Well, I wasn't there, so I can't say for sure, but I have my guesses. They wanted SOAP RPC Encoding to be rich enough to be able to be a serialization for DCE, DCOM, Corba, Java, etc. Some here clearly think they aimed too high. Me, I like having a single uniform system. Paul, the Zolera Tamarin schema's don't use HREF/ID because we don't need to. If I want to sign something, I can do ......your text here or I can do and the SOAP layer handles it transparently BTW, SOAP RPC Encoding is going to be *really optional* for 1.2, so much so that it might even merit it's own document. (It won't, but it could.) /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From rsalz@zolera.com Fri Feb 15 16:34:18 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 11:34:18 -0500 Subject: [XML-SIG] SOAP Skepticism References: <200202130631.g1D6VT703977@localhost.localdomain> <3C6AC85E.50601@zolera.com> <3C6ACFC0.26350973@prescod.net> Message-ID: <3C6D388A.7040606@zolera.com> Here's why I like SOAP: For the first time in the history of distributed computing, all of the major vendors agree on how to send structured data among multiple parties, in a system that is open, extensible, and yet fairly comprehensive in itself. Further, it lets me do this without major changes to the existing WWW infrastructure or software. Technology notwithstanding, I think that's a good thing. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From uche.ogbuji@fourthought.com Fri Feb 15 16:40:26 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 09:40:26 -0700 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: Message from "Fred L. Drake, Jr." of "Fri, 15 Feb 2002 10:33:21 EST." <15469.10817.253804.837730@grendel.zope.com> Message-ID: <200202151640.g1FGeQI12605@localhost.localdomain> > > The one feature that Mike wants to see in the reader is optional > > XInclude support; it should be possible to incorporate that from > > 4Suite once you have committed your changes. > > That would be cool! > > Another thing that would be good to support is xml:base; I'm not sure > what others have done for that, if anything. cDomlette supports xml:base. Each node has an xmlBase python attribute on it with the appropriate value. Why don't we enshrine this into the Python/DOM binding? xml:base is ludicrously simple to implement. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Fri Feb 15 16:46:34 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 09:46:34 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Fri, 15 Feb 2002 11:20:18 EST." <3C6D3542.20607@zolera.com> Message-ID: <200202151646.g1FGkYX12616@localhost.localdomain> > > I think that the licensing is compatible, so we have actually been considering > > including ZSI in 4Suite to provide the SOAP/RPC iomplementation for the > > repository. > > > Ouch -- bumped my head on the floor when I fell out of my chair. Por que? I hope not out of surprise. ZSI is the most complete, well-designed and usable SOAP implementation for Pyton. My comments on ZSI on this thread have by no means been to bash ZSI but to point out that I think my problems working with it were more tied to SOAP itself than to ZSI's implementation thereof. Having used Apache SOAP, XSoap, and the WASP demo, I'd say that ZSI is also a better bet than these Java entrants. I haven't had a chance to try .NET or the IBM WS toolkit. Re: Apache SOAP: I heard somewhere that it may be used as the reference implementation. If so, someone has been popping 'ludes, in my opinion. :-) So, Rich, if you want to have ZSI usurp Apache in this regard, you have my vote. ;-) -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From rsalz@zolera.com Fri Feb 15 16:56:49 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 11:56:49 -0500 Subject: [XML-SIG] WSDL library ? References: <200202151646.g1FGkYX12616@localhost.localdomain> Message-ID: <3C6D3DD1.5050405@zolera.com> Thanks for the kind words, I wasn't fishing for compliments, honest. Given your issues with SOAP (which I did keep separate from ZSI), I was quite surprised to see that you're gonna be needing/using it. > So, Rich, if you want to have ZSI usurp Apache in this regard, you have my > vote. ;-) Apache + mod_python + ZSI: web services, here we come ... /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From uche.ogbuji@fourthought.com Fri Feb 15 16:55:13 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 09:55:13 -0700 Subject: [XML-SIG] SOAP Skepticism In-Reply-To: Message from Rich Salz of "Fri, 15 Feb 2002 11:34:18 EST." <3C6D388A.7040606@zolera.com> Message-ID: <200202151655.g1FGtD312626@localhost.localdomain> > Here's why I like SOAP: For the first time in the history of > distributed computing, all of the major vendors agree on how to send > structured data among multiple parties, in a system that is open, > extensible, and yet fairly comprehensive in itself. I must admit you have a strong point there. Besides my admission of the power of SOAP's header infrastructure, I have always recognized SOAP's greatest import is the fact that the Microsoft and the aught-but-ms gangs both finally agreed on something. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From fdrake@acm.org Fri Feb 15 16:57:18 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 11:57:18 -0500 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: <200202151640.g1FGeQI12605@localhost.localdomain> References: <15469.10817.253804.837730@grendel.zope.com> <200202151640.g1FGeQI12605@localhost.localdomain> Message-ID: <15469.15854.941089.395019@grendel.zope.com> Uche Ogbuji writes: > cDomlette supports xml:base. Each node has an xmlBase python > attribute on it with the appropriate value. Why don't we enshrine > this into the Python/DOM binding? xml:base is ludicrously simple Every node, or just the non-Attr nodes that have children? I'd be inclined to make it "lazy" and go searching up the tree to get the base; one optimization I'd like to persue later is trying to make the node.__dict__ not grow beyond 5 entries whenever possible. (Allowing it to grow past that means an extra malloc() call.) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From uche.ogbuji@fourthought.com Fri Feb 15 16:58:55 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 09:58:55 -0700 Subject: [XML-SIG] WSDL library ? In-Reply-To: Message from Rich Salz of "Fri, 15 Feb 2002 11:56:49 EST." <3C6D3DD1.5050405@zolera.com> Message-ID: <200202151658.g1FGwtB12647@localhost.localdomain> > Thanks for the kind words, I wasn't fishing for compliments, honest. > Given your issues with SOAP (which I did keep separate from ZSI), I was > quite surprised to see that you're gonna be needing/using it. Our clients demand it; we pay our bills by attending to client demands. Life bites, sometimes. > > So, Rich, if you want to have ZSI usurp Apache in this regard, you have my > > vote. ;-) > > > Apache + mod_python + ZSI: web services, here we come ... Right-o. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Fri Feb 15 17:21:29 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Fri, 15 Feb 2002 10:21:29 -0700 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: Message from "Fred L. Drake, Jr." of "Fri, 15 Feb 2002 11:57:18 EST." <15469.15854.941089.395019@grendel.zope.com> Message-ID: <200202151721.g1FHLTv12677@localhost.localdomain> > > Uche Ogbuji writes: > > cDomlette supports xml:base. Each node has an xmlBase python > > attribute on it with the appropriate value. Why don't we enshrine > > this into the Python/DOM binding? xml:base is ludicrously simple > > Every node, or just the non-Attr nodes that have children? In cDomlette, it's every node, which doesn't hurt in cDomlette. > I'd be inclined to make it "lazy" and go searching up the tree to get > the base; one optimization I'd like to persue later is trying to make > the node.__dict__ not grow beyond 5 entries whenever possible. > (Allowing it to grow past that means an extra malloc() call.) No problem. I know that though it doesn't affect performance in cDomlette, the way we have it would re-introduce the sorts of htings you're trying to streamline in minidom. Therefore, your suggestion sounds reasonable. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From paul@prescod.net Fri Feb 15 17:22:37 2002 From: paul@prescod.net (Paul Prescod) Date: Fri, 15 Feb 2002 09:22:37 -0800 Subject: [XML-SIG] SOAP Skepticism References: <200202130631.g1D6VT703977@localhost.localdomain> <3C6AC85E.50601@zolera.com> <3C6ACFC0.26350973@prescod.net> <3C6D388A.7040606@zolera.com> Message-ID: <3C6D43DD.16D127CF@prescod.net> Rich Salz wrote: > >... > > Technology notwithstanding, I think that's a good thing. > /r$ Well said, and I made this poing to Uche several months ago. But I've since realized that this has nothing to do with web services...i.e. integrating organizational processes through the web. If it way too expensive to use a technology optimized for point-to-point, like RPC, rather than a technology optimized for creating a shared and common namespace and programmatic interface like HTTP. Paul Prescod From Mike.Olson@fourthought.com Fri Feb 15 17:26:46 2002 From: Mike.Olson@fourthought.com (Mike Olson) Date: 15 Feb 2002 10:26:46 -0700 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: References: <15468.38787.558166.715298@grendel.zope.com> Message-ID: <1013794007.3993.0.camel@penny.fourthought.com> On Fri, 2002-02-15 at 02:13, Martin v. Loewis wrote: > > The issue here is that there are atleast three competing such > implementations: xml.dom.ext.reader.PyExpat.Reader, > Ft.Xml.pDomlette.PyExpatReader, and your ParsedXML reader, so the > question is which one to use. > > At IPC10, I've toyed already with integrating the ext.reader into > minidom, but I'm happy to throw that away. > > Mike Olson is interested in dumping pDomlette in favour of minidom, > but that would require that there is a pDomlette compatible reader. > We could probably still use the API and implementation you've been > designing (especially since it appears to follow DOM Level 3); hoping > that we can provide the 4Suite-style reader API on top of that. > > The one feature that Mike wants to see in the reader is optional > XInclude support; it should be possible to incorporate that from > 4Suite once you have committed your changes. I've already started on some of this work. I have pDomlette removed from 4Suite and most of our code working with minidom. However, I kept our own reader since this is where the XInclude work is done. I have a small list of midifications that needed to be made. Most were unsupported methods. As soon as I'm satisfied that all is working good, I'll send out a patch. Mike > > Regards, > Martin > > _______________________________________________ > XML-SIG maillist - XML-SIG@python.org > http://mail.python.org/mailman/listinfo/xml-sig -- Mike Olson Principal Consultant mike.olson@fourthought.com +1 303 583 9900 x 102 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, http://4Suite.org Boulder, CO 80301-2537, USA XML strategy, XML tools, knowledge management From in1443@msn.com Fri Feb 15 09:31:48 2002 From: in1443@msn.com (in1443@msn.com) Date: Fri, 15 Feb 2002 09:31:48 Subject: [XML-SIG] Marketing / Building Your Practice Message-ID: <200202151729.MAA77493@smtp1.c1.ca> Untitled Document I noticed your email address on a physician list serve related to growing your practice. With your permission, we would like to send you information regarding new approaches to improving and/or growing your patient base, business tips for private practice physicians, and workshops and events for healthcare practitioners. To opt-in to our monthly e-newsletter and events calendar click here.

Sincerely,

Victor Black
Practice Growth Consultant

From paul@prescod.net Fri Feb 15 17:24:24 2002 From: paul@prescod.net (Paul Prescod) Date: Fri, 15 Feb 2002 09:24:24 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> Message-ID: <3C6D4448.66A4FD67@prescod.net> Rich Salz wrote: > >... > > Paul, the Zolera Tamarin schema's don't use HREF/ID because we don't > need to. If I want to sign something, I can do > ......your text here > or I can do > > and the SOAP layer handles it transparently Does the SOAP specification say anywhere that href handling happens before schema application? Because the element you describe above does not conform to the schema, and if I were your business partner I would reject it. Paul Prescod From Mike.Olson@fourthought.com Fri Feb 15 17:30:01 2002 From: Mike.Olson@fourthought.com (Mike Olson) Date: 15 Feb 2002 10:30:01 -0700 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: <15469.10817.253804.837730@grendel.zope.com> References: <15468.38787.558166.715298@grendel.zope.com> <15469.10817.253804.837730@grendel.zope.com> Message-ID: <1013794201.4014.2.camel@penny.fourthought.com> On Fri, 2002-02-15 at 08:33, Fred L. Drake, Jr. wrote: > > > Another thing that would be good to support is xml:base; I'm not sure > what others have done for that, if anything. > We support it in our C based DOM but not our pure python DOM. Its on my list to add it in. I'll be looking at adding it to minidom and include it in my patch. Mike > > -Fred > > -- > Fred L. Drake, Jr. > PythonLabs at Zope Corporation > > _______________________________________________ > XML-SIG maillist - XML-SIG@python.org > http://mail.python.org/mailman/listinfo/xml-sig -- Mike Olson Principal Consultant mike.olson@fourthought.com +1 303 583 9900 x 102 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, http://4Suite.org Boulder, CO 80301-2537, USA XML strategy, XML tools, knowledge management From fdrake@acm.org Fri Feb 15 17:31:32 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 12:31:32 -0500 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: <200202151721.g1FHLTv12677@localhost.localdomain> References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> Message-ID: <15469.17908.26168.785522@grendel.zope.com> Uche Ogbuji writes: > No problem. I know that though it doesn't affect performance in cDomlette, That depends on how deep the tree is, when your perform the join operations, and how you perform joins (urlparse.urljoin() is just plain slow). Even if your joins are incredibly fast, if you end up with different URIs at each node, there's a memory penalty, but reasonable people won't write their XML that way. Perhaps the urlparse module should be re-written in C, though. But not today. I think Skip did part of this some time ago as his urlop module. > the way we have it would re-introduce the sorts of htings you're trying to > streamline in minidom. Therefore, your suggestion sounds reasonable. Another approach would be to have a utility function do it all, and not change the DOM at all. This should allow a single utility to work for all DOM implementations. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From akuchlin@mems-exchange.org Fri Feb 15 17:44:43 2002 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Fri, 15 Feb 2002 12:44:43 -0500 Subject: [XML-SIG] Ideas for web/ package In-Reply-To: <15469.17908.26168.785522@grendel.zope.com> References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> Message-ID: <20020215174443.GB17613@dust.mems-exchange.org> On Fri, Feb 15, 2002 at 12:31:32PM -0500, Fred L. Drake, Jr. wrote: >Perhaps the urlparse module should be re-written in C, though. But >not today. I think Skip did part of this some time ago as his urlop >module. As part of the RELAX NG stuff, I've discovered that urlparse() is really lenient in its parsing. For example, the fragment value is '' if no fragment is supplied, so you can't distinguish between http://www.amk.ca and http://www.amk.ca# . Unfortunately this can't really be fixed without changing the API of urlparse() and breaking old code. So I had the idea of creating a new 'web.*' package containing updated tools for Web-related tasks, so we can make a clean break with the old APIs. The two things for the web/ package that I can think of are 1) a stricter URL parser, and 2) the skeleton of a Web client that handles cookies and caching sensibly (so you could write screen-scraping applications on top of it). Can anyone think of other things that could be part of this package? --amk (www.amk.ca) You stupid stubborn thickheaded numbskull, you were supposed to die in bed! I could have handled it... -- The Doctor, in "Battlefield" From rsalz@zolera.com Fri Feb 15 17:47:17 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 12:47:17 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> <3C6D4448.66A4FD67@prescod.net> Message-ID: <3C6D49A5.4060808@zolera.com> > Does the SOAP specification say anywhere that href handling happens > before schema application? Because the element you describe above does > not conform to the schema, and if I were your business partner I would > reject it. The problem is that we're using Schema to describe SOAP RPC Encoding, and it's a bad fit. (As you point out, classic IDL's are better). The answer must be "mu", as in Buddhist "unask the question." /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From paul@prescod.net Fri Feb 15 17:56:56 2002 From: paul@prescod.net (Paul Prescod) Date: Fri, 15 Feb 2002 09:56:56 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> <3C6D4448.66A4FD67@prescod.net> <3C6D49A5.4060808@zolera.com> Message-ID: <3C6D4BE8.5D79C934@prescod.net> Rich Salz wrote: > >... > > The problem is that we're using Schema to describe SOAP RPC Encoding, > and it's a bad fit. (As you point out, classic IDL's are better). > > The answer must be "mu", as in Buddhist "unask the question." It's pretty Zen to bet your business on technologies that don't seem to work together. ;) Paul Prescod From rsalz@zolera.com Fri Feb 15 18:10:25 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 13:10:25 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> <3C6D4448.66A4FD67@prescod.net> <3C6D49A5.4060808@zolera.com> <3C6D4BE8.5D79C934@prescod.net> Message-ID: <3C6D4F11.8040006@zolera.com> > It's pretty Zen to bet your business on technologies that don't seem to > work together. ;) A less flip answer: we don't strictly schema validate, and our use of soap allows href anywhere the schema defines an xsd:string element. happier? :) /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From fdrake@acm.org Fri Feb 15 18:14:59 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 13:14:59 -0500 Subject: [XML-SIG] Ideas for web/ package In-Reply-To: <20020215174443.GB17613@dust.mems-exchange.org> References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> Message-ID: <15469.20515.40123.488084@grendel.zope.com> Andrew Kuchling writes: > As part of the RELAX NG stuff, I've discovered that urlparse() is > really lenient in its parsing. For example, the fragment value is '' > if no fragment is supplied, so you can't distinguish between > http://www.amk.ca and http://www.amk.ca# . Unfortunately this can't It's not clear that the distinction is meaningful in the RFC, as best as I can recall (it's been a couple of months since I looked at it). > really be fixed without changing the API of urlparse() and breaking > old code. That's a big issue. I added some new functions in Python 2.2 (urlsplit() and urlunsplit()), but they won't address your concern about fragments. > 1) a stricter URL parser, and You'll have to be more specific about requirements than this! You're asking for lexical information about the URL rather than logical information; I'm not sure that's even come up before. > 2) the skeleton of a Web client that > handles cookies and caching sensibly (so you could write > screen-scraping applications on top of it). This would be *really* nice to have! -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From paul@prescod.net Fri Feb 15 18:14:02 2002 From: paul@prescod.net (Paul Prescod) Date: Fri, 15 Feb 2002 10:14:02 -0800 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> <3C6D4448.66A4FD67@prescod.net> <3C6D49A5.4060808@zolera.com> <3C6D4BE8.5D79C934@prescod.net> <3C6D4F11.8040006@zolera.com> Message-ID: <3C6D4FEA.D2254409@prescod.net> Rich Salz wrote: > > > It's pretty Zen to bet your business on technologies that don't seem to > > work together. ;) > > A less flip answer: we don't strictly schema validate, and our use of > soap allows href anywhere the schema defines an xsd:string element. I don't see how you intend to achieve interoperability in this manner. Will you tell your customers that the schemas are purely advisory? And explain to them that you have a special convention for where and when to use href? Is there an XP ISSUE about how href interacts with schema languages? Paul Prescod From rsalz@zolera.com Fri Feb 15 18:26:08 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 13:26:08 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> <3C6D4448.66A4FD67@prescod.net> <3C6D49A5.4060808@zolera.com> <3C6D4BE8.5D79C934@prescod.net> <3C6D4F11.8040006@zolera.com> <3C6D4FEA.D2254409@prescod.net> Message-ID: <3C6D52C0.7030100@zolera.com> There is a SOAP issue that XML Schema can't really describe SOAP RPC Encoding. We tell our customers that the Schema defines the datatypes, which should be encoded using SOAP RPC. The schemas are NOT advisory, you can use them as-is to code in doc/literal style, or you can use soap rpc encoding and treat the schema as a datatype definition. Hope this helps. /r$ -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From paul@prescod.net Fri Feb 15 18:26:06 2002 From: paul@prescod.net (Paul Prescod) Date: Fri, 15 Feb 2002 10:26:06 -0800 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> <15469.20515.40123.488084@grendel.zope.com> Message-ID: <3C6D52BE.4D03A00E@prescod.net> "Fred L. Drake, Jr." wrote: > >... > > > 1) a stricter URL parser, and > > You'll have to be more specific about requirements than this! You're > asking for lexical information about the URL rather than logical > information; I'm not sure that's even come up before. If you send out a request for comments on the Python URL parser you may get more requirements back. I've heard second and third-hand grumblings before. e.g. http://groups.yahoo.com/group/rest-discuss/message/206 This might be what Fred fixed in 2.2, though... Paul Prescod From mal@lemburg.com Fri Feb 15 18:37:18 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Fri, 15 Feb 2002 19:37:18 +0100 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> Message-ID: <3C6D555E.9D9AAC57@lemburg.com> Andrew Kuchling wrote: > > On Fri, Feb 15, 2002 at 12:31:32PM -0500, Fred L. Drake, Jr. wrote: > >Perhaps the urlparse module should be re-written in C, though. But > >not today. I think Skip did part of this some time ago as his urlop > >module. You might also want to take a look at mxURL which is part of egenix-mx-expermental. > As part of the RELAX NG stuff, I've discovered that urlparse() is > really lenient in its parsing. For example, the fragment value is '' > if no fragment is supplied, so you can't distinguish between > http://www.amk.ca and http://www.amk.ca# . Unfortunately this can't > really be fixed without changing the API of urlparse() and breaking > old code. Are you sure that the two URLs you gave are different in any way ? I know that many JavaScript hacks use the 'HREF="#"' trick, but it is not clear to me why "index.html#" would mean anything different from "index.html". mxURL returns '' in both cases, since there is no fragment definition there to be found. > So I had the idea of creating a new 'web.*' package containing updated > tools for Web-related tasks, so we can make a clean break with the old > APIs. The two things for the web/ package that I can think of are 1) > a stricter URL parser, and 2) the skeleton of a Web client that > handles cookies and caching sensibly (so you could write > screen-scraping applications on top of it). > > Can anyone think of other things that could be part of this package? The usual bunch of HTML tweaking functions, e.g. fast escaping, unescaping, finding certain parts within the page (in a non-parsing way, since this often breaks with todays HTML hackery), link checker, link finder, etc. Note that mxTextTools has a HTML scanner which can be very helpful with this (and it's also very fast at what it's doing). -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From fdrake@acm.org Fri Feb 15 19:40:06 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 14:40:06 -0500 Subject: [XML-SIG] Ideas for web/ package In-Reply-To: <3C6D52BE.4D03A00E@prescod.net> References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> <15469.20515.40123.488084@grendel.zope.com> <3C6D52BE.4D03A00E@prescod.net> Message-ID: <15469.25622.925311.355951@grendel.zope.com> Paul Prescod writes: > If you send out a request for comments on the Python URL parser you may > get more requirements back. I've heard second and third-hand grumblings > before. e.g. This is good to know. I've replied to the specific message you cited. > This might be what Fred fixed in 2.2, though... Yes, this one was. That's not to say there aren't other issues with the urlparse module API. There's certainly more to be done -- since there are appearantly people who want to parameterize each path segment, there are probably people who want to extract those parameters(!), and we don't have an API for that yet. Even if the strawman proposal I made when I fixed the bug was good enough (and it's not clear that it was), there's been no real discussion of URL parsing requirements since then. (At least not that I'm aware of.) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From fdrake@acm.org Fri Feb 15 20:03:47 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 15 Feb 2002 15:03:47 -0500 Subject: [XML-SIG] minidom enhancement development Message-ID: <15469.27043.86489.360943@grendel.zope.com> Mike Olson & I will be working the minidom changes out on the minidom-enhancements branch of the "xml" CVS module. If you want to check it out and play with our changes once we start checking them in, use this command: cvs -d:ext:cvs.pyxml.sourceforge.net:/cvsroot/pyxml checkout \ -r minidom-enhancements -d xml-minidom xml -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From veillard@redhat.com Fri Feb 15 20:33:06 2002 From: veillard@redhat.com (Daniel Veillard) Date: Fri, 15 Feb 2002 15:33:06 -0500 Subject: [XML-SIG] minidom changes & additional modules In-Reply-To: <15469.15854.941089.395019@grendel.zope.com>; from fdrake@acm.org on Fri, Feb 15, 2002 at 11:57:18AM -0500 References: <15469.10817.253804.837730@grendel.zope.com> <200202151640.g1FGeQI12605@localhost.localdomain> <15469.15854.941089.395019@grendel.zope.com> Message-ID: <20020215153305.Q29297@redhat.com> On Fri, Feb 15, 2002 at 11:57:18AM -0500, Fred L. Drake, Jr. wrote: > > Uche Ogbuji writes: > > cDomlette supports xml:base. Each node has an xmlBase python > > attribute on it with the appropriate value. Why don't we enshrine > > this into the Python/DOM binding? xml:base is ludicrously simple > > Every node, or just the non-Attr nodes that have children? > > I'd be inclined to make it "lazy" and go searching up the tree to get > the base; one optimization I'd like to persue later is trying to make > the node.__dict__ not grow beyond 5 entries whenever possible. > (Allowing it to grow past that means an extra malloc() call.) that's what I do (natively at the C level) in libxml2. It's fine IMHO, one doesn't need it that often, usually to compute the target of an URI-Reference and that's not that common that it justifies to clutter the tree with unneeded and recomputable data. Daniel -- Daniel Veillard | Red Hat Network https://rhn.redhat.com/ veillard@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ From martin@v.loewis.de Fri Feb 15 20:44:02 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 15 Feb 2002 21:44:02 +0100 Subject: [XML-SIG] WSDL library ? In-Reply-To: <3C6D36DD.2070507@zolera.com> References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> Message-ID: Rich Salz writes: > Thanks, Martin, for the explanation of how Corba can do doubly-linked > lists. I am glad it's gotten more competent since I looked. Can it > really do full cycles now, where head->next = tail->prev? Cool. Indeed. It was introduced to be able to implement Java RMI on top of it. > I claimed most distributed computing doesn't use the Corba object > model. DCOM doesn't, it's aggregation of interfaces. Java uses single > inheritance and interface. Neither of those can be mapped into a > simple inheritance model. CORBA's interface inheritance is not single; any interfaces can have many base interfaces. For valuetypes, single inheritance is only available for "stateful" valuetypes; there is also the notion of abstract valuetypes, which do support multiple inheritance. Again, you can do all of Java RMI on top of CORBA. Implementing COM-style interface navigation on top of CORBA is straight-forward: interface IUnknown{ IUnknown get_interface(in UUID target); }; interface ISomething:IUnknown{ ... }; This is exactly what DCOM does. > As for being "surprised" or "horrified" that all pointers are chased > when you serialize an object. Hunh? If I declared an object in Corba > or DCE IDL (or MIDL) I would be quite upset if only certain parts of > it ended up being remoted. AFAIK, in DCE IDL, you have have a void* field in an struct, and then you use attributes of the field (like unique, size, etc) to indicate whether this pointer may be shared, and whether the pointer is to a single object or an array of objects, in which case you need somehow specify the size of the array. It seems easy to get wrong. Regards, Martin From rsalz@zolera.com Fri Feb 15 23:13:34 2002 From: rsalz@zolera.com (Rich Salz) Date: Fri, 15 Feb 2002 18:13:34 -0500 Subject: [XML-SIG] WSDL library ? References: <200202140434.g1E4Y1E10259@localhost.localdomain> <3C6BDF50.2070104@zolera.com> <3C6D36DD.2070507@zolera.com> Message-ID: <3C6D961E.3030705@zolera.com> I said Corba's model is simple, not single. :) I thought Corba required every object to have a type, and that com/corba gateways defined a ComObject type. It's good to know RMI and DCOM can be made to fit inside the Corba model. > AFAIK, in DCE IDL, you have have a void* field in an struct, and then > you use attributes of the field (like unique, size, etc) to indicate > whether this pointer may be shared, and whether the pointer is to > a single object or an array of objects, in which case you need somehow > specify the size of the array. It seems easy to get wrong. DCE IDL cannot marshall void*, only typed pointers. Arrays are not supported as a primitive concept, you have to use an attribute to indicate which parameter holds the length. That is because DCE IDL is "close to the wire"; a VisualBasic or Python IDL compiler could omit the length_is(foo) declaration, and have the runtime get it automatically from the language's facilities. (Just like Corba does.) The other attributes, about pointer sharing -- pointer_defalt(unique), etc., are optimization hints the compiler can use when generating stubs. (Remember the short-lived C keyword "noalias"? :) /r$ > > Regards, > Martin > -- Zolera Systems, http://www.zolera.com Information Integrity, XML Security From tpassin@home.com Sat Feb 16 02:54:02 2002 From: tpassin@home.com (Thomas B. Passin) Date: Fri, 15 Feb 2002 21:54:02 -0500 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com><200202151721.g1FHLTv12677@localhost.localdomain><15469.17908.26168.785522@grendel.zope.com><20020215174443.GB17613@dust.mems-exchange.org> <15469.20515.40123.488084@grendel.zope.com> Message-ID: <003c01c1b695$30ae0da0$0bf13044@tbp> [Fred L. Drake, Jr] > > Andrew Kuchling writes: > > As part of the RELAX NG stuff, I've discovered that urlparse() is > > really lenient in its parsing. For example, the fragment value is '' > > if no fragment is supplied, so you can't distinguish between > > http://www.amk.ca and http://www.amk.ca# . Unfortunately this can't > > It's not clear that the distinction is meaningful in the RFC, as best > as I can recall (it's been a couple of months since I looked at it). > But it can make a ***huge*** difference in RDF. Cheers, Tom P From tpassin@home.com Sat Feb 16 02:59:30 2002 From: tpassin@home.com (Thomas B. Passin) Date: Fri, 15 Feb 2002 21:59:30 -0500 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> <15469.20515.40123.488084@grendel.zope.com> <3C6D52BE.4D03A00E@prescod.net> Message-ID: <004501c1b695$f45e7d20$0bf13044@tbp> [Paul Prescod] > "Fred L. Drake, Jr." wrote: > > > >... > > > > > 1) a stricter URL parser, and > > > > You'll have to be more specific about requirements than this! You're > > asking for lexical information about the URL rather than logical > > information; I'm not sure that's even come up before. > > If you send out a request for comments on the Python URL parser you may > get more requirements back. I've heard second and third-hand grumblings > before. e.g. > > http://groups.yahoo.com/group/rest-discuss/message/206 > > This might be what Fred fixed in 2.2, though... > If it's going to be worked on, let's make sure that file: urls on Windows get handled decently. Among other things, that means deciding if the path is opaque or not, and to require trip;e slashes but tolerate single slashes. Cheers, Tom P From tpassin@home.com Sat Feb 16 03:02:56 2002 From: tpassin@home.com (Thomas B. Passin) Date: Fri, 15 Feb 2002 22:02:56 -0500 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> <3C6D555E.9D9AAC57@lemburg.com> Message-ID: <004a01c1b696$6f91f2b0$0bf13044@tbp> [M.-A. Lemburg] > > > > Can anyone think of other things that could be part of this package? > > The usual bunch of HTML tweaking functions, e.g. fast escaping, > unescaping, finding certain parts within the page (in a non-parsing > way, since this often breaks with todays HTML hackery), > link checker, link finder, etc. > Another thing that comes up often enough to be handled is escaping markup delimiters (as opposed to escaping for url encoding), so markup that is intended for display (i.e., show the source xml) can be put into attributes and elements. Would it make sense to include this kind of escape/unescape? Cheers, Tom P From fdrake@acm.org Sat Feb 16 05:54:07 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Sat, 16 Feb 2002 00:54:07 -0500 Subject: [XML-SIG] Ideas for web/ package In-Reply-To: <004a01c1b696$6f91f2b0$0bf13044@tbp> References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> <3C6D555E.9D9AAC57@lemburg.com> <004a01c1b696$6f91f2b0$0bf13044@tbp> Message-ID: <15469.62463.636017.998957@grendel.zope.com> Thomas B. Passin writes: > Another thing that comes up often enough to be handled is escaping markup > delimiters (as opposed to escaping for url encoding), so markup that is > intended for display (i.e., show the source xml) can be put into attributes > and elements. Would it make sense to include this kind of escape/unescape? I think you may be looking for the escape() and quoteattr() functions defined in the xml.sax.saxutils module. These are documented in the Python Library Reference. quoteattr() was introduced in Python 2.2 and PyXML 0.7. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From fdrake@acm.org Sat Feb 16 05:58:51 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Sat, 16 Feb 2002 00:58:51 -0500 Subject: [XML-SIG] Ideas for web/ package In-Reply-To: <003c01c1b695$30ae0da0$0bf13044@tbp> References: <15469.15854.941089.395019@grendel.zope.com> <200202151721.g1FHLTv12677@localhost.localdomain> <15469.17908.26168.785522@grendel.zope.com> <20020215174443.GB17613@dust.mems-exchange.org> <15469.20515.40123.488084@grendel.zope.com> <003c01c1b695$30ae0da0$0bf13044@tbp> Message-ID: <15469.62747.477617.313648@grendel.zope.com> Thomas B. Passin writes: > But it can make a ***huge*** difference in RDF. Argh! You're right -- this gets back to every XML spec treating URLs just a little differently, as someone (PaulP?) recently noted on XML-Dev. As far as the URI specification is concerned, this is still a lexical issue. I think this means we need a URI parser that returns lexical information instead of structural information. So, once more, we need both. Annoying, but I doubt we'll fix the RDF use of URI manipulations from here. (And somehow I don't find myself motivated to try!) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From fdrake@acm.org Sat Feb 16 06:11:30 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Sat, 16 Feb 2002 01:11:30 -0500 Subject: [XML-SIG] Python versions supported by PyXML? Message-ID: <15469.63506.968844.8762@grendel.zope.com> I had been thinking that we still wanted to support Python 2.0, but Martin's most recent changes to pyexpat.c dropped support for Python versions before 2.2 (PyOS_snprintf() was added then, and pyexpat.c now relies on that.) I'll check in a quick hack to make this *slightly* more portable, but we need a better way to deal with this. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From tpassin@home.com Sat Feb 16 06:20:02 2002 From: tpassin@home.com (Thomas B. Passin) Date: Sat, 16 Feb 2002 01:20:02 -0500 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com><200202151721.g1FHLTv12677@localhost.localdomain><15469.17908.26168.785522@grendel.zope.com><20020215174443.GB17613@dust.mems-exchange.org><3C6D555E.9D9AAC57@lemburg.com><004a01c1b696$6f91f2b0$0bf13044@tbp> <15469.62463.636017.998957@grendel.zope.com> Message-ID: <006501c1b6b1$f8202f50$0bf13044@tbp> [Fred L. Drake, Jr] > > Thomas B. Passin writes: > > Another thing that comes up often enough to be handled is escaping markup > > delimiters (as opposed to escaping for url encoding), so markup that is > > intended for display (i.e., show the source xml) can be put into attributes > > and elements. Would it make sense to include this kind of escape/unescape? > > I think you may be looking for the escape() and quoteattr() functions > defined in the xml.sax.saxutils module. These are documented in the > Python Library Reference. quoteattr() was introduced in Python 2.2 > and PyXML 0.7. > > Oh, good I'll take a look. I haven't even peeked at Python 2.2 yet. Tom P From martin@v.loewis.de Sat Feb 16 08:52:20 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 16 Feb 2002 09:52:20 +0100 Subject: [XML-SIG] Python versions supported by PyXML? In-Reply-To: <15469.63506.968844.8762@grendel.zope.com> References: <15469.63506.968844.8762@grendel.zope.com> Message-ID: "Fred L. Drake, Jr." writes: > I had been thinking that we still wanted to support Python 2.0, but > Martin's most recent changes to pyexpat.c dropped support for Python > versions before 2.2 (PyOS_snprintf() was added then, and pyexpat.c now > relies on that.) That is only temporary: The change was already in Python's pyexpat.c, and I merely propagated it to PyXML. It's definitely desirable to port this with older Python versions. I think the best approach is to revert Tim's change and use sprintf again, adding a comment that this cannot possibly overflow, unless you have integers larger than 64 bits, and that many lines and columns in a file. Regards, Martin From mal@lemburg.com Sat Feb 16 10:52:11 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Sat, 16 Feb 2002 11:52:11 +0100 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com><200202151721.g1FHLTv12677@localhost.localdomain><15469.17908.26168.785522@grendel.zope.com><20020215174443.GB17613@dust.mems-exchange.org> <15469.20515.40123.488084@grendel.zope.com> <003c01c1b695$30ae0da0$0bf13044@tbp> Message-ID: <3C6E39DB.66657175@lemburg.com> "Thomas B. Passin" wrote: > > > Andrew Kuchling writes: > > > As part of the RELAX NG stuff, I've discovered that urlparse() is > > > really lenient in its parsing. For example, the fragment value is '' > > > if no fragment is supplied, so you can't distinguish between > > > http://www.amk.ca and http://www.amk.ca# . Unfortunately this can't > > > > It's not clear that the distinction is meaningful in the RFC, as best > > as I can recall (it's been a couple of months since I looked at it). > > > But it can make a ***huge*** difference in RDF. Why is that ? I find it a bit awkward to add semantics to weakly defined corner cases. -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From mal@lemburg.com Sat Feb 16 11:15:43 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Sat, 16 Feb 2002 12:15:43 +0100 Subject: [XML-SIG] Python versions supported by PyXML? References: <15469.63506.968844.8762@grendel.zope.com> Message-ID: <3C6E3F5F.980518CB@lemburg.com> "Martin v. Loewis" wrote: > > "Fred L. Drake, Jr." writes: > > > I had been thinking that we still wanted to support Python 2.0, but > > Martin's most recent changes to pyexpat.c dropped support for Python > > versions before 2.2 (PyOS_snprintf() was added then, and pyexpat.c now > > relies on that.) > > That is only temporary: The change was already in Python's pyexpat.c, > and I merely propagated it to PyXML. It's definitely desirable to port > this with older Python versions. > > I think the best approach is to revert Tim's change and use sprintf > again, adding a comment that this cannot possibly overflow, unless you > have integers larger than 64 bits, and that many lines and columns in > a file. Why not make PyOS_snprintf() a macro pointing to snprintf() or even sprintf() for older Python versions ? -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From Nicolas.Chauvat@logilab.fr Sat Feb 16 11:21:06 2002 From: Nicolas.Chauvat@logilab.fr (Nicolas Chauvat) Date: Sat, 16 Feb 2002 12:21:06 +0100 (CET) Subject: [XML-SIG] Ideas for web/ package In-Reply-To: <3C6D555E.9D9AAC57@lemburg.com> Message-ID: > > Can anyone think of other things that could be part of this package? > > The usual bunch of HTML tweaking functions, e.g. fast escaping, > unescaping, finding certain parts within the page (in a non-parsing > way, since this often breaks with todays HTML hackery), > link checker, link finder, etc. At some point Logilab contributed an HTML{Reader,Builder}? to PyXML/4Suite that would parse an HTML document and build a DOM tree, infering the missing tags when needed (it knew the DTD). You could then use XSLT to extract the kind of information listed above. And XSLT is a very good fit for the task. I am not sure what eventually happened to that piece of code though, as we have not been needing it for some time and I couldn't find it in my current _xmlplus directory... I guess I could dig it out of our CVS if someone is interested. -- Nicolas Chauvat http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France) From webmaster@label.co.kr Sat Feb 16 12:36:56 2002 From: webmaster@label.co.kr (=?ks_c_5601-1987?B?v8DHx726x8G288Da?=) Date: Sat, 16 Feb 2002 21:36:56 +0900 Subject: [XML-SIG] =?ks_c_5601-1987?B?W7GksO1dIERNL1RNLMOivvcsv7W+9yDBpLq4uKYgvsu3wbXluLO0z7TZLg==?= Message-ID: <3c6e526d3c85f067@relay6.kornet.net> (added by relay6.kornet.net) This is a multi-part message in MIME format. ------=_NextPart_000_0217_01C0F36A.93A56C00 Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 tvO6p8D8ua7IuLvnOjo6v8DHx726x8G288DaOjo6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIKjnIFu788ijL773wb7G7V0gOiAgwPyxuSA0MDC4uCC788ijL773wb4gtaXA zMW4ILz2t88NCiCo6CBbwM647cbtXSA6IMD8sbkgMSwyMDC4uCDAzrjtILWlwMzFuCC89rfP IA0KIMf2wOcgwda5rsfPvccgvPYgwNbAuLjnILyxwvi8+CAzMDC60LKytMIgu+fAusewwLsg teW4s7TPtNkuICAgDQogICAgICAgICAgQ0S5+Mijus4yMDAys+LGx7+hILO7wOW1yCDA/LG5 IMHWv+Qgv+zDvLG5v6G8rSAgu/W/7MbtufjIoyDIq7q4v+sNCiDAuLfOIMOkxcPH0SC287qn x8G3zrHXt6XA1LTPtNkuIA0KIL+pseK4piAgxay4r8fPvcO46SDA2ry8x9Egs7u/68C7ILq4 vccgvPYgwNbAuLjnLCC5q7fht84gtNm/7rnewLi9xyC89g0KIMDWvcC0z7TZLiCzr8Kls6og seK0ycGmx9HAzCC++LTCIMGkx7AgZnJlZXdhcmXA1LTPtNkuICAgICAgICAgICAgICAgICAg ICAgIMiruri/6yC+yLO7ua7AuyC89sO1LCC89ri4ILDtsLS60LXpsrIgurizvbTZsO0gu/2w osfYICC6uLy8v+QuIA0KIMDOt8Kw+iC4ucC6IL3DsKPAuyC16b+pILjnxKUgvt+x2cfYILCh uOm8rSDA2773x9IgvcOwo7+hIMG7ILT1IMi/wLINCiDA+8DOIMDPwLsgx8+9w7TCsNQgvu62 s7Huv+Q/IERNwNu+98C6IMD6yPHH0cXXILjDseK9yr3Dv+QuDQogDQogwPq3xcfPsO0gvcW8 08fPsNQgsO2wtL+pt6+60MDHIMGkvLrAuyC0477GvK0gv+zG7bmwILnfvNvAuyDDpcDTwfYN CiCw2r3AtM+02S4gICAgDQogDQogDQogICAgICAgICAgICAgICAgICAgIL/sxu25sLnfvNso RE0pwLsgwKfH0SC067vzILDtsLTAxyDB1rzSt88gtaXAzMW4ICCxuMPgLCDAzrziubC3ziC1 x77uDQogwNa0wiDA2rfhwMcgwNS3wiC068fgLCCx4sG4IMHWvNK3zyC1pcDMxbjAxyC79b/s xu25+MijILqvyK8gwNu+97XuwLsgDQogw9a9xSCx4rz6t84guavA5cfRIMD8ua6/5L/4tenA zCC/qbevutDAuyC1tb/NteW4sSCwzcDUtM+02S4NCiANCiCiuiBXZWItdG8tREIgOiDAzsXN s90gIMClxuTAzMH2u/O/oSC6uMDMtMIgvce9w7CjIMHWvNK1pcDMxbi4piC/ory/DQogxsTA z7fOICC4uLXpvu4gteW4s7TPtNkuIA0KIKK6ILWlwMzFuCDA1LfCIDogxuTAzMbbICDH/MXC t84gsKHB9rDtILDovcUgtaXAzMW4uKYgxMTHu8XNv+sgxsTAz7fOIA0KIMDUt8LH2CAgteW4 s7TPtNkuIA0KIKK6IMHWvNIgtvO6pyDD4rfCOiAgsMu79iC51yDA1LfCx9Egwda80iC1pcDM xbi4piBETbnfvNu/6yC287qnt84gw+K3wg0KIMfYICC15biutMIgvK268b26wNS0z7TZLiAN CiCiuiC79b/sxu25+MijILqvyK8gOiCwocH2sO0gILDovcUgsbi/7MbtufjIo7fOILXHvu7A 1rTCIMHWvNK1pcDMxbi4piANCiC79b/sxu25+Mijt84gILnZsuO15biztM+02S4gICAgICAg ICAgICAgICAgICAgIA0KILHNx8/AxyDAzLjewM8gwda80rTCIGh0dHA6Ly93d3cuNHN1aXRl Lm9yZy9tYWlsaW5nbGlzdC5odG1sIL+hvK0gvPbB/cfPv7TAuLjnIMDMuN7AzyDB1rzSv9y/ obTCIL7utrIgwaS6uLW1ILChwfaw7SDA1sH2IL7KvcC0z7TZLg0KIL7Gt6HAxyC89r3FsMW6 zrimIMWsuK/Hz73DuOkgwNq1v8C4t84gvPa9xbDFus4guK69usauv6Egte63z7XLtM+02S4N CiDBwcC6IMfPt+cgurizu7y8v+QuDQogDQogW7z2vcWwxbrOXSANCiAgICAgICAgICAgICAg ICAgIA0K ------=_NextPart_000_0217_01C0F36A.93A56C00 Content-Type: text/html; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjx0aXRsZT6287qnwPy5rsi4u+c6Ojq/wMfHvbrHwbbzwNo6Ojo8 L3RpdGxlPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9ZXVjLWtyIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQo8IS0t DQoubGlzdDAxIHsgIGZvbnQtZmFtaWx5OiAisby4siIsICKxvLiyw7wiOyBmb250LXNpemU6 IDlwdDsgY29sb3I6ICM0QzRDNEM7ICBsaW5lLWhlaWdodDogMTJwdH0NCi5saXN0MDIgeyAg Zm9udC1mYW1pbHk6ICKxvLiyIiwgIrG8uLLDvCI7IGZvbnQtc2l6ZTogMTBwdDsgY29sb3I6 ICM0QzRDNEM7ICBsaW5lLWhlaWdodDogMTZwdH0NCmE6bGlua3t0ZXh0LWRlY29yYXRpb246 bm9uZTtjb2xvcjojNEM0QzRDO0ZPTlQ6fQ0KYTp2aXNpdGVke3RleHQtZGVjb3JhdGlvbjpu b25lO2NvbG9yOiM0QzRDNEM7Rk9OVDp9DQphOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9u ZTtjb2xvcjojRkYzMzk5O0ZPTlQ6fQ0KYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJs aW5lO2NvbG9yOiNGRjMzOTk7Rk9OVDp9DQotLT4NCjwvc3R5bGU+DQo8L2hlYWQ+DQoNCjxi b2R5IGJnY29sb3I9IiNkMGQwZDAiIHRleHQ9IiMwMDAwMDAiIGxlZnRtYXJnaW49IjAiIHRv cG1hcmdpbj0iMCIgbWFyZ2lud2lkdGg9IjAiIG1hcmdpbmhlaWdodD0iMCI+DQo8ZGl2IGFs aWduPSJjZW50ZXIiPiANCiAgPHRhYmxlIHdpZHRoPSI2MDAiIGJvcmRlcj0iMCIgY2VsbHNw YWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICA8dHIgdmFsaWduPSJ0b3AiPiANCiAg ICAgIDx0ZCBiZ2NvbG9yPSIjOTk5OTk5IiBhbGlnbj0ibGVmdCIgd2lkdGg9IjEiPjxpbWcg c3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL2ltZzFrLmdp ZiIgd2lkdGg9IjEiIGhlaWdodD0iMSI+PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNTk4IiBi Z2NvbG9yPSIjRkZGRkZGIj4gDQogICAgICAgIDx0YWJsZSB3aWR0aD0iNTk4IiBib3JkZXI9 IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgPHRyIHZh bGlnbj0idG9wIj4gDQogICAgICAgICAgICA8dGQ+PGEgaHJlZj0iaHR0cDovL3d3dy5sYWJl bC5jby5rciIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNv LmtyL29mZmljZV9tYWlsL29waW1nL2xvZ28uZ2lmIiB3aWR0aD0iMTcwIiBoZWlnaHQ9Ijcw IiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZG RkYiPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1n L2xvZ29fMDEuZ2lmIiB3aWR0aD0iMjk1IiBoZWlnaHQ9IjcwIj48L3RkPg0KICAgICAgICAg ICAgPHRkPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29w aW1nL2xvZ29fMDIuZ2lmIiB3aWR0aD0iMTMzIiBoZWlnaHQ9IjcwIj48L3RkPg0KICAgICAg ICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDx0YWJsZSB3aWR0aD0iNTk4 IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAg ICAgPHRyPg0KICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaHR0cDov L3d3dy5sYWJlbC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9tYWluX3YuanBnIiB3aWR0aD0i NTk4IiBoZWlnaHQ9IjE3MiI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3Rh YmxlPg0KICAgICAgICA8dGFibGUgd2lkdGg9IjU5OCIgYm9yZGVyPSIwIiBjZWxsc3BhY2lu Zz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0 ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNl X21haWwvb3BpbWcvdHRfYmFyLmdpZiIgd2lkdGg9IjU5OCIgaGVpZ2h0PSIyMCI+PC90ZD4N CiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8dGFibGUgd2lk dGg9IjU5OCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0K ICAgICAgICAgIDx0ciB2YWxpZ249InRvcCI+IA0KICAgICAgICAgICAgPHRkIHdpZHRoPSIx NzAiPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1n L3BpYzExMDEuZ2lmIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjI1Ij48L3RkPg0KICAgICAgICAg ICAgPHRkPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29w aW1nL3BpYzExMDIuZ2lmIiB3aWR0aD0iNDI4IiBoZWlnaHQ9IjI1Ij48L3RkPg0KICAgICAg ICAgIDwvdHI+DQogICAgICAgICAgPHRyIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICA8 dGQgd2lkdGg9IjE3MCI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNl X21haWwvb3BpbWcvcGljMTEwMy5naWYiIHdpZHRoPSIxNzAiIGhlaWdodD0iMTY1Ij48L3Rk Pg0KICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiPiANCiAgICAgICAgICAgICAg PHRhYmxlIHdpZHRoPSI0MjgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRk aW5nPSIwIj4NCiAgICAgICAgICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPiANCiAgICAgICAg ICAgICAgICAgIDx0ZCB3aWR0aD0iMjAiIGNsYXNzPSJsaXN0MDEiPjxpbWcgc3JjPSJodHRw Oi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL2ltZzFrLmdpZiIgd2lkdGg9 IjIwIiBoZWlnaHQ9IjIwIj48L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0 MDgiIGNsYXNzPSJsaXN0MDEiPjxiPqjnIFu788ijL773wb7G7V0gOiA8L2I+DQogICAgICAg ICAgICAgICAgICAgIMD8sbkgNDAwuLggu/PIoy++98G+ILWlwMzFuCC89rfPPGJyPg0KICAg ICAgICAgICAgICAgICAgICA8Yj6o6CBbwM647cbtXSA6PC9iPiDA/LG5IDEsMjAwuLggwM64 7SC1pcDMxbggvPa3zyA8YnI+DQogICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSIj RkY2NjAwIj7H9sDnIMHWua7Hz73HILz2IMDWwLi45yC8scL4vPggMzAwutCysrTCILvnwLrH sMC7ILXluLO0z7TZLjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+DQogICAg ICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAg PHRhYmxlIHdpZHRoPSI0MjgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRk aW5nPSIwIj4NCiAgICAgICAgICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPiANCiAgICAgICAg ICAgICAgICAgIDx0ZCB3aWR0aD0iMTAiPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNv LmtyL29mZmljZV9tYWlsL29waW1nL2ltZzFrLmdpZiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIw Ij48L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI0MDgiPjxpbWcgc3JjPSJo dHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL3BpYzExMDQuZ2lmIiB3 aWR0aD0iNDAwIiBoZWlnaHQ9IjIyIj48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+DQog ICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNDI4 IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAg ICAgICAgICAgPHRyIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICAgICAgICA8dGQgd2lk dGg9IjIwIiBjbGFzcz0ibGlzdDAxIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5r ci9vZmZpY2VfbWFpbC9vcGltZy9pbWcxay5naWYiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+ PC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDA4IiBjbGFzcz0ibGlzdDAx Ij5DRLn4yKO6zjIwMDKz4sbHv6Egs7vA5bXIIMD8sbkgwda/5CC/7MO8sbm/obytIA0KICAg ICAgICAgICAgICAgICAgICC79b/sxu25+MijIMiruri/6zxicj4NCiAgICAgICAgICAgICAg ICAgICAgwLi3ziDDpMXDx9EgtvO6p8fBt86x17elwNS0z7TZLiA8YnI+DQogICAgICAgICAg ICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubGFiZWwuY28ua3IvaHRtbC9wZHMvbmV3 cG9zdC5odG0iIHRhcmdldD0iX2JsYW5rIj48Zm9udCBjb2xvcj0iI0ZGMzMwMCI+v6mx4jwv Zm9udD48L2E+uKYgDQogICAgICAgICAgICAgICAgICAgIMWsuK/Hz73DuOkgwNq8vMfRILO7 v+vAuyC6uL3HILz2IMDWwLi45ywguau34bfOILTZv+653sC4vccgvPY8YnI+DQogICAgICAg ICAgICAgICAgICAgIMDWvcC0z7TZLiCzr8Kls6ogseK0ycGmx9HAzCC++LTCIMGkx7A8Zm9u dCBjb2xvcj0iI0ZGMzMwMCI+IGZyZWV3YXJlPC9mb250PsDUtM+02S48L3RkPg0KICAgICAg ICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAg IDx0YWJsZSB3aWR0aD0iNDI4IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFk ZGluZz0iMCI+DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgPHRk IHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjxhIGhyZWY9Imh0dHA6Ly93d3cubGFiZWwu Y28ua3IvaHRtbC9wcm9kdWN0L3Bob25lY2QuaHRtIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBz cmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvbW9yZS5naWYi IHdpZHRoPSI2OSIgaGVpZ2h0PSIxMSIgYm9yZGVyPSIwIj48L2E+PC90ZD4NCiAgICAgICAg ICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC90 ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8dGFibGUg d2lkdGg9IjU5OCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAi Pg0KICAgICAgICAgIDx0ciB2YWxpZ249InRvcCI+IA0KICAgICAgICAgICAgPHRkIHdpZHRo PSIxNzAiPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29w aW1nL3BpYzEyMDEuZ2lmIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjI2Ij48L3RkPg0KICAgICAg ICAgICAgPHRkPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWls L29waW1nL3BpYzEyMDIuZ2lmIiB3aWR0aD0iNDI4IiBoZWlnaHQ9IjI2Ij48L3RkPg0KICAg ICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAg ICA8dGQgd2lkdGg9IjE3MCI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2Zm aWNlX21haWwvb3BpbWcvcGljMTIwMy5naWYiIHdpZHRoPSIxNzAiIGhlaWdodD0iMTYzIj48 L3RkPg0KICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNGRkZGRkYiPg0KICAgICAgICAgICAg ICA8dGFibGUgd2lkdGg9IjQyOCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBh ZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgIDx0ciB2YWxpZ249InRvcCI+IA0KICAgICAg ICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCIgY2xhc3M9Imxpc3QwMSI+PGltZyBzcmM9Imh0 dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvaW1nMWsuZ2lmIiB3aWR0 aD0iMjAiIGhlaWdodD0iMjAiPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9 IjQwOCIgY2xhc3M9Imxpc3QwMSI+yKu6uL/rIL7Is7u5rsC7ILz2w7UsILz2uLggsO2wtLrQ temysiC6uLO9tNmw7SC7/bCix9ggDQogICAgICAgICAgICAgICAgICAgILq4vLy/5C4gPGJy Pg0KICAgICAgICAgICAgICAgICAgICDAzrfCsPoguLnAuiC9w7CjwLsgtem/qSC458SlIL7f sdnH2CCwobjpvK0gwNu+98fSIL3DsKO/oSDBuyC09SDIv8CyPGJyPg0KICAgICAgICAgICAg ICAgICAgICDA+8DOIMDPwLsgx8+9w7TCsNQgvu62s7Huv+Q/IERNwNu+98C6IMD6yPHH0cXX ILjDseK9yr3Dv+QuPGJyPg0KICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAg ICAgICAgICAgIDxmb250IGNvbG9yPSIjRkY2NjAwIj4gwPq3xcfPsO0gvcW808fPsNQgsO2w tL+pt6+60MDHIMGkvLrAuyC0477GvK0gv+zG7bmwILnfvNvAuyDDpcDTwfY8YnI+DQogICAg ICAgICAgICAgICAgICAgILDavcC0z7TZLiA8L2ZvbnQ+PC90ZD4NCiAgICAgICAgICAgICAg ICA8L3RyPg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICA8YnI+DQog ICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICA8 dGFibGUgd2lkdGg9IjQyOCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRp bmc9IjAiPg0KICAgICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICA8dGQg dmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGEgaHJlZj0iaHR0cDovL3d3dy5sYWJlbC5j by5rci9odG1sL2RtL3Bvc3RpbmcuaHRtIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0 dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvbW9yZS5naWYiIHdpZHRo PSI2OSIgaGVpZ2h0PSIxMSIgYm9yZGVyPSIwIj48L2E+PC90ZD4NCiAgICAgICAgICAgICAg ICA8L3RyPg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC90ZD4NCiAg ICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8dGFibGUgd2lkdGg9 IjU5OCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAg ICAgICAgIDx0ciB2YWxpZ249InRvcCI+IA0KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNzAi PjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL3Bp YzEzMDEuZ2lmIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjI2Ij48L3RkPg0KICAgICAgICAgICAg PHRkPjxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1n L3BpYzEzMDIuZ2lmIiB3aWR0aD0iNDI4IiBoZWlnaHQ9IjI2Ij48L3RkPg0KICAgICAgICAg IDwvdHI+DQogICAgICAgICAgPHRyIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICA8dGQg d2lkdGg9IjE3MCI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21h aWwvb3BpbWcvcGljMTMwMy5naWYiIHdpZHRoPSIxNzAiIGhlaWdodD0iMjA4Ij48L3RkPg0K ICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjQyOCIgYm9y ZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAg ICAgIDx0ciB2YWxpZ249InRvcCI+IA0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIy MCIgY2xhc3M9Imxpc3QwMSI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2Zm aWNlX21haWwvb3BpbWcvaW1nMWsuZ2lmIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjwvdGQ+ DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQwOCIgY2xhc3M9Imxpc3QwMSI+v+zG 7bmwud+82yhETSnAuyDAp8fRILTru/MgsO2wtMDHIMHWvNK3zyC1pcDMxbggDQogICAgICAg ICAgICAgICAgICAgILG4w+AsIMDOvOK5sLfOILXHvu48YnI+DQogICAgICAgICAgICAgICAg ICAgIMDWtMIgwNq34cDHIMDUt8IgtOvH4CwgseLBuCDB1rzSt88gtaXAzMW4wMcgu/W/7Mbt ufjIoyC6r8ivIMDbvve17sC7IDxicj4NCiAgICAgICAgICAgICAgICAgICAgw9a9xSCx4rz6 t84guavA5cfRIMD8ua6/5L/4tenAzCC/qbevutDAuyC1tb/NteW4sSCwzcDUtM+02S48YnI+ DQogICAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICAgPGZvbnQg Y29sb3I9IiNDQzMzMDAiPjxiPqK6IFdlYi10by1EQiA6IDwvYj48L2ZvbnQ+PGEgaHJlZj0i aHR0cDovL3d3dy5sYWJlbC5jby5rci9odG1sL2RiL2RiX21ha2UuaHRtIiB0YXJnZXQ9Il9i bGFuayI+wM7FzbPdIA0KICAgICAgICAgICAgICAgICAgICDApcbkwMzB9rvzv6EgurjAzLTC IL3HvcOwoyDB1rzStaXAzMW4uKYgv6K8vzxicj4NCiAgICAgICAgICAgICAgICAgICAgPGlt ZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvaW1nMWsu Z2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTIiIGJvcmRlcj0iMCI+xsTAz7fOIA0KICAgICAg ICAgICAgICAgICAgICC4uLXpvu4gteW4s7TPtNkuIDwvYT48YnI+DQogICAgICAgICAgICAg ICAgICAgIDxiPjxmb250IGNvbG9yPSIjQ0MzMzAwIj6iuiC1pcDMxbggwNS3wiA6IDwvZm9u dD48L2I+PGEgaHJlZj0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9odG1sL2RiL2RiX3R5cGUu aHRtIiB0YXJnZXQ9Il9ibGFuayI+xuTAzMbbIA0KICAgICAgICAgICAgICAgICAgICDH/MXC t84gsKHB9rDtILDovcUgtaXAzMW4uKYgxMTHu8XNv+sgxsTAz7fOIDxicj4NCiAgICAgICAg ICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21h aWwvb3BpbWcvaW1nMWsuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTIiIGJvcmRlcj0iMCI+ wNS3wsfYIA0KICAgICAgICAgICAgICAgICAgICC15biztM+02S4gPC9hPjxicj4NCiAgICAg ICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IiNDQzMzMDAiPjxiPqK6IMHWvNIgtvO6pyDD 4rfCOjwvYj48L2ZvbnQ+PGEgaHJlZj0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9odG1sL2Rt L2xhYmVsX3BydC5odG0iIHRhcmdldD0iX2JsYW5rIj4gDQogICAgICAgICAgICAgICAgICAg ILDLu/YgudcgwNS3wsfRIMHWvNIgtaXAzMW4uKYgRE2537zbv+sgtvO6p7fOIMPit8I8YnI+ DQogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmty L29mZmljZV9tYWlsL29waW1nL2ltZzFrLmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiBi b3JkZXI9IjAiPsfYIA0KICAgICAgICAgICAgICAgICAgICC15biutMIgvK268b26wNS0z7TZ LiA8L2E+PGJyPg0KICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0iI0NDMzMwMCI+ PGI+orogu/W/7MbtufjIoyC6r8ivIDo8L2I+PC9mb250PiA8YSBocmVmPSJodHRwOi8vd3d3 LmxhYmVsLmNvLmtyL2h0bWwvZGIvemlwY2hhbmdlLmh0bSIgdGFyZ2V0PSJfYmxhbmsiPrCh wfaw7SANCiAgICAgICAgICAgICAgICAgICAgsOi9xSCxuL/sxu25+Mijt84gtce+7sDWtMIg wda80rWlwMzFuLimIDxicj4NCiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6 Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvaW1nMWsuZ2lmIiB3aWR0aD0i MTYiIGhlaWdodD0iMTIiIGJvcmRlcj0iMCI+u/W/7MbtufjIo7fOIA0KICAgICAgICAgICAg ICAgICAgICC52bLjteW4s7TPtNkuIDwvYT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+ DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0i NDI4IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAg ICAgICAgICAgICAgPHRyPiANCiAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIg YWxpZ249InJpZ2h0Ij48YSBocmVmPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL2h0bWwvZGIv ZGJfbWFpbi5odG0iIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJl bC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9tb3JlLmdpZiIgd2lkdGg9IjY5IiBoZWlnaHQ9 IjExIiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+DQogICAg ICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L3RkPg0KICAgICAgICAgIDwvdHI+ DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDx0YWJsZSB3aWR0aD0iNTk4IiBib3JkZXI9 IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgPHRyPg0K ICAgICAgICAgICAgPHRkIGJhY2tncm91bmQ9Im9waW1nL21saW5lX2guZ2lmIiB2YWxpZ249 InRvcCIgaGVpZ2h0PSIxIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9vZmZp Y2VfbWFpbC9vcGltZy9pbWcxay5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvdGQ+DQog ICAgICAgICAgPC90cj4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPHRhYmxlIHdpZHRo PSI1OTgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAg ICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0ibGlz dDAxIiB3aWR0aD0iMTcwIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9vZmZp Y2VfbWFpbC9vcGltZy9pbWcxay5naWYiIHdpZHRoPSIxNzAiIGhlaWdodD0iMjAiPjwvdGQ+ DQogICAgICAgICAgICA8dGQgY2xhc3M9Imxpc3QwMSI+PGZvbnQgY29sb3I9IiNGRjY2NjYi Pjxicj4NCiAgICAgICAgICAgICAgsc3Hz8DHIMDMuN7AzyDB1rzStMIgaHR0cDovL3d3dy40 c3VpdGUub3JnL21haWxpbmdsaXN0Lmh0bWwgv6G8rSC89sH9x8+/tMC4uOcgwMy43sDPIMHW vNK/3L+htMIgvu62siDBpLq4tbUgsKHB9rDtIMDWwfYgvsq9wLTPtNkuPGJyPg0KICAgICAg ICAgICAgICC+xrehwMcgvPa9xbDFus64piDFrLivx8+9w7jpIMDatb/AuLfOILz2vcWwxbrO ILiuvbrGrr+hILXut8+1y7TPtNkuPGJyPg0KICAgICAgICAgICAgICDBwcC6IMfPt+cguriz u7y8v+QuPGJyPg0KICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgIFs8YSBocmVm PSJodHRwOi8vd3d3LmNydXNhZGUuY28ua3IvcmVqZWN0L3JlamVjdC5waHA/aWQ9MjEzNSZh dXRoPTlhNDlhMjVkODQ1YTQ4M2ZhZTRiZTdlMzQxMzY4ZTM2Jm1haWw9eG1sLXNpZ0BweXRo b24ub3JnJm1vZGU9d3JpdGUiPrz2vcWwxbrOPC9hPl0gPGZvbnQgY29sb3I9IiNDQzMzMDAi PiA8YnI+DQogICAgICAgICAgICAgIDwvZm9udD48L2ZvbnQ+PC90ZD4NCiAgICAgICAgICA8 L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8dGFibGUgd2lkdGg9IjU5OCIgYm9y ZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgIDx0 cj4NCiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzk5OTk5OSIgaGVp Z2h0PSIxIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9vZmZpY2VfbWFpbC9v cGltZy9pbWcxay5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvdGQ+DQogICAgICAgICAg PC90cj4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPHRhYmxlIHdpZHRoPSI1OTgiIGJv cmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICA8 dHI+DQogICAgICAgICAgICA8dGQgY2xhc3M9Imxpc3QwMSI+PGltZyBzcmM9Imh0dHA6Ly93 d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvYm90dG9tLmdpZiIgd2lkdGg9IjU5 OCIgaGVpZ2h0PSI2MCI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxl Pg0KICAgICAgICANCiAgICAgIDwvdGQ+DQogICAgICA8dGQgYmdjb2xvcj0iIzk5OTk5OSIg YWxpZ249InJpZ2h0IiB3aWR0aD0iMSI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28u a3Ivb2ZmaWNlX21haWwvb3BpbWcvaW1nMWsuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48 L3RkPg0KICAgIDwvdHI+DQogIDwvdGFibGU+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4N Cg== ------=_NextPart_000_0217_01C0F36A.93A56C00-- From martin@v.loewis.de Sat Feb 16 12:31:21 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 16 Feb 2002 13:31:21 +0100 Subject: [XML-SIG] Python versions supported by PyXML? In-Reply-To: <3C6E3F5F.980518CB@lemburg.com> References: <15469.63506.968844.8762@grendel.zope.com> <3C6E3F5F.980518CB@lemburg.com> Message-ID: "M.-A. Lemburg" writes: > Why not make PyOS_snprintf() a macro pointing to snprintf() > or even sprintf() for older Python versions ? It is a macro for snprintf, but Fred thinks this is a hack, and I agree. Making it a macro for sprintf would be even more of a hack. I don't see the rationale for using snprintf in the single place that uses it, and I think it makes the code clearer if the change to use PyOS_snprintf is reverted. Regards, Martin From mal@lemburg.com Sat Feb 16 13:15:55 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Sat, 16 Feb 2002 14:15:55 +0100 Subject: [XML-SIG] Python versions supported by PyXML? References: <15469.63506.968844.8762@grendel.zope.com> <3C6E3F5F.980518CB@lemburg.com> Message-ID: <3C6E5B8B.DD6B44F6@lemburg.com> "Martin v. Loewis" wrote: > > "M.-A. Lemburg" writes: > > > Why not make PyOS_snprintf() a macro pointing to snprintf() > > or even sprintf() for older Python versions ? > > It is a macro for snprintf, but Fred thinks this is a hack, and I agree. > Making it a macro for sprintf would be even more of a hack. > > I don't see the rationale for using snprintf in the single place that > uses it, and I think it makes the code clearer if the change to use > PyOS_snprintf is reverted. By making it a macro if PyXML you get the upward compatibility for free. In Python 2.2 the code will then use the safe PyOS_snprintf() while in other versions, it'll use snprintf() or sprintf() (note that snprintf() is not available on all platforms). OTOH, since you only have a single occurrence, a simple #ifdef would also do the trick. I thought it was used more than that... -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From martin@v.loewis.de Sat Feb 16 15:24:01 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 16 Feb 2002 16:24:01 +0100 Subject: [XML-SIG] Python versions supported by PyXML? In-Reply-To: <3C6E5B8B.DD6B44F6@lemburg.com> References: <15469.63506.968844.8762@grendel.zope.com> <3C6E3F5F.980518CB@lemburg.com> <3C6E5B8B.DD6B44F6@lemburg.com> Message-ID: "M.-A. Lemburg" writes: > In Python 2.2 the code will then use the safe > PyOS_snprintf() My point is that sprintf is as safe as PyOS_snprintf, so nothing is gained from the complexity. Regards, Martin From tpassin@home.com Sat Feb 16 16:08:31 2002 From: tpassin@home.com (Thomas B. Passin) Date: Sat, 16 Feb 2002 11:08:31 -0500 Subject: [XML-SIG] Ideas for web/ package References: <15469.15854.941089.395019@grendel.zope.com><200202151721.g1FHLTv12677@localhost.localdomain><15469.17908.26168.785522@grendel.zope.com><20020215174443.GB17613@dust.mems-exchange.org> <15469.20515.40123.488084@grendel.zope.com> <003c01c1b695$30ae0da0$0bf13044@tbp> <3C6E39DB.66657175@lemburg.com> Message-ID: <001401c1b704$2df3a920$0bf13044@tbp> [M.-A. Lemburg] > "Thomas B. Passin" wrote: > > > > > Andrew Kuchling writes: > > > > As part of the RELAX NG stuff, I've discovered that urlparse() is > > > > really lenient in its parsing. For example, the fragment value is '' > > > > if no fragment is supplied, so you can't distinguish between > > > > http://www.amk.ca and http://www.amk.ca# . Unfortunately this can't > > > > > > It's not clear that the distinction is meaningful in the RFC, as best > > > as I can recall (it's been a couple of months since I looked at it). > > > > > But it can make a ***huge*** difference in RDF. > > Why is that ? I find it a bit awkward to add semantics to > weakly defined corner cases. > There have been several major threads on this recently in the RDF-interest list. Basically, they don't use uris the way most other people think they were intended to be used, although they probably meet the letter of the law. Actually they use uri references, which can include fragments. The "#" has no real syntactic significance in RDF and also does not indicate an xpointer expression. All classes, resources, and data types (when they finally work them out) are denoted by uri references that generally include the "#" character (but don't have to). In some cases, the "#" character is present with no following characters, but that is still significant because RDF requires a character-by-character match with the ***whole*** string, including any fragments. (I believe that the match occurs after unescaping according to url encoding rules). Note that there is a difference between a "uri" and a "uri reference", and RDF uses the latter. An uri itself does not include any part of the fragment identifier, while a uri reference does. I don't think we should treat RDF as a minor corner case since a large part of the W3C and DAML Semantic Web stuff builds on it. There is some controvery as to whether anything should be retrievable from such a uri reference. If, for example, the uri reference is for an xsd:integer data type, should it be possible to dereference anything (like a definition of the data type)? Currently, of course, you cannot. It may be that no support is needed in any new url parsing package. These uri references appear as attribute values in almost all cases, and they aren't supposed to be parsed for use. However, sometimes it may be convenient to separate out the uri from the fragment identifier so a new identifier can be constructed. So perhaps the only call really needed (if it is in fact needed at all) would be def get_uri_before_fragment(uri_reference,include_fragment_separator=1): # Return the part of the string up to and by default # INCLUDING the FIRST "#" character. For RDF purposes there could still be some ambiguity because you can't be sure that the base upon which a series of related identifiers are built actually includes the "#" or not. But in most actual cases it does. Just to be clear about this, the RDF rules for creating a new identifier do NOT say "take the base uri, construct a unique string for the new resource, and make that a fragment identifier added onto the base uri using the rfc rules for fragment identifiers". Instead, they say in effect "take the string for the base uri reference, construct a unique string for the new resource, and concatenate the two strings." Cheers, Tom P From tpassin@home.com Sat Feb 16 17:26:49 2002 From: tpassin@home.com (Thomas B. Passin) Date: Sat, 16 Feb 2002 12:26:49 -0500 Subject: [XML-SIG] PEPs for PyXML? References: <200202151559.g1FFxcM12530@localhost.localdomain> Message-ID: <00d501c1b70f$1e052290$0bf13044@tbp> This is a multi-part message in MIME format. ------=_NextPart_000_00D2_01C1B6E5.34D058C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit [Uche Ogbuji] > I guess Tom Passim had a point with the PyXML PEP idea. :-) Thanks, Uchi! I'd still like to see them, if only to collect the consensus on key issues. I get completely lost sometimes - I keep my own copy of all the messages and it's still hard to go back and find out what if anything was settled and how. If that information were captured in a PEP or something, everyone could find out, and offer suggestions. To make that a bit easier, I've attached a DTD and css stylesheet for xml PEPs, a slight variation on what I sent in last year. The style sheet does a pretty nice job of displaying the xml file in Mozilla and Opera (less good in IE 5.5, and I don't know about IE6 but suppose it would be better). Those two browsers can even display attribute values, not just element character content, using regular css styles. But the real reason for the css style sheet was so I could experiment with xxe, the new xml editor that lets you do more-or-less wysiwig editing if you have a css style sheet and a dtd. If you don't know it, it's written in java, the beta is free, and when it is commercially released they say the basic version will remain free. It actually works and I recommend trying it. It takes a bit of doing to learn how to insert elements where you want them, and it has a few other quirks, but once you have a decent style sheet it's really quite nice (you can edit without a style sheet or dtd, but you only get a tree view then, not a styled view). This product could make it fairly easy to create and edit PEPs in XML form, especially since it uses xml templates you build. XML Spy can do this too, but costs a lot and is much more complex to set up page display with, I think. Get it at http://www.xmlmind.com/xmleditor/index.html On Windows I had to use their batch file to run it, not their supplied .exe launcher (didn't work), and it may take a bit of tuning to get the batch file to work, but it can be done (Win2000 and WinMe). Sorry about using attachements but I thought it would be handier than putting them in-line. Cheers, Tom P ------=_NextPart_000_00D2_01C1B6E5.34D058C0 Content-Type: text/css; name="pep.css" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="pep.css" xmlpep {display:block} headers,abstract,specification, rationale,referenceImplementation, notes,references,copyright {display:block} pepNumber,pepTitle,pepVersion, cvsVersionString, listOfAuthors,author,status,type, created,history,post,para, referenceImplementation, copyright {display:block;font-weight:normal} para,code {display:block}=20 headers {font-weight:bold;margin-top:1ex;} abstract,specification,rationale, referenceImplementation, copyright {margin-top: 1ex} para {margin-left:1ex;margin-bottom:1ex} code {margin-left:2ex; margin-top:1ex;margin-bottom:1ex} code {font-family:monospace} headers:before{content:"Headers:";font-weight:bold} pepNumber:before {content:"PEP Number: "; font-size:90%; font-weight:bold;margin-left:2ex} pepTitle:before {content:"PEP Title: "; font-size:90%; font-weight:bold;margin-left:2ex} pepVersion:before {content:"PEP Version: "; font-size:90%; font-weight:bold;margin-left:2ex} cvsVersionString:before {content:"CVS Version String: "; font-size:90%; font-weight:bold;margin-left:2ex} listOfAuthors:before {content:"Authors";font-size:90%; font-weight:bold;margin-left:2ex} author {margin-left:4ex;font-weight:normal} author:before {content:attr(name) " (email: "attr(email) = ')';margin-left:4ex} status:before {content:"Status: "; font-size:90%; font-weight:bold;margin-left:2ex} type:before {content:"Type: "; font-size:90%; font-weight:bold;margin-left:2ex} created:before {content:"Created: "; font-size:90%; font-weight:bold;margin-left:2ex} history:before {content:"Version History: "; font-size:90%; font-weight:bold;margin-left:2ex} post {margin-left:4ex;font-weight:normal} post:before {content:attr(date) " ";font-size:90%; font-weight:bold;margin-left:4ex;} abstract:before{font-weight:bold; font-size:90%;content:"Abstract:"} specification:before {font-weight:bold; font-size:90%;content:"Specification:"} rationale:before {font-weight:bold; font-size:90%;content:"Rationale:"} referenceImplementation:before {font-weight:bold; font-size:90%;content:"Reference Implementation:"} notes:before {font-weight:bold; font-size:90%;content:"Notes:"} references:before {font-weight:bold; font-size:90%;content:"References:"} copyright:before {font-weight:bold; font-size:90%;content:"Copyright:"} ------=_NextPart_000_00D2_01C1B6E5.34D058C0 Content-Type: text/xml; name="pep.dtd" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="pep.dtd" ------=_NextPart_000_00D2_01C1B6E5.34D058C0 Content-Type: text/xml; name="pep.xml" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="pep.xml" =0A= =0A= =0A= =0A= xmlpep-1=0A= Values for Null Or Empty Namespace URIs=0A= 0.15=0A= =0A= =0A= =0A= =0A= Draft=0A= Standards Track=0A= 29-Jan-2001=0A= =0A= version 0.15 released with=20 minor changes to DTD and minor content cleanup.=0A= version 0.10 released.=0A= =0A= =0A= =0A= This PEP specifies the proper values of the Namespace URI property =0A= when its value might appear to be either "null", "None", or the =0A= empty string.=0A= =0A= This XMLPEP, when approved, will apply to all namespace-aware software=0A= maintained by the pyxml interest group.=0A= =0A= =0A= =0A= When no namespace has been declared whose scope applies to a=0A= particular element or attribute, the application MUST report the=0A= URI of the namespace of the element or attribute as None.=0A= =0A= When a namespace applies but its URI value is empty or null or None, =0A= the application MUST report the URI of the namespace value as None.=0A= =0A= =0A= This requirement does not apply for applications that are not=0A= namespace-aware.=0A= =0A= =0A= Applies to all XML processing software maintained by the pyxml=0A= interest group.=0A= =0A= =0A= =0A= =0A= This PEP is needed because of continued uncertainty among varous pyxml=0A= developers as to the proper values to use, and because of inconsistency=0A= among various pyxml products. Differences between Python, IDL, and = Java =0A= make it difficult to interpret existing W3C Recommendations =0A= unambiguously in this regard.=0A= =0A= A definitive and consistent treatment is needed so that all the pyxml=0A= software may be brought into agreement.=0A= =0A= =0A= =0A= Most references in the Recommendations to the cases in question=0A= refer to "null" values. Python offers a data object well adapted to=0A= indicate such values. It is the None object. The None object can=0A= be tested for exactly as for an empty string:=0A= =0A= if uri:=0A= doYourThing()=0A= =0A= =0A= Alternatively, None can be tested for explicitly, as in:=0A= =0A= if uri is not None:=0A= doYourThing()=0A= =0A= =0A= Thus, None is flexible enough to be useful in this application.=0A= Should there be some situation in which the use of an empty string =0A= would be logical or advantageous, it would be clearly distinguishable =0A= from the normal case where the value is None.=0A= =0A= Future versions of this PEP should specify clearly in what=0A= situations, if any, an empty string should be used in lieu of=0A= the None object.=0A= =0A= =0A= =0A= [Should there be a reference here to one=0A= particular processor, such as xmlproc?]=0A= =0A= =0A= =0A= This PEP may be used by anyone.=0A= =0A= ------=_NextPart_000_00D2_01C1B6E5.34D058C0-- From fdrake@acm.org Sat Feb 16 17:42:43 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Sat, 16 Feb 2002 12:42:43 -0500 Subject: [XML-SIG] Python versions supported by PyXML? In-Reply-To: References: <15469.63506.968844.8762@grendel.zope.com> <3C6E3F5F.980518CB@lemburg.com> Message-ID: <15470.39443.626407.12380@grendel.zope.com> Martin v. Loewis writes: > It is a macro for snprintf, but Fred thinks this is a hack, and I agree. > Making it a macro for sprintf would be even more of a hack. The reason I think it's a poor hack is that there's no check that snprintf() is available. If there is one, I'm happy to use the macro like I checked in yesterday. I'm not happy about not dealing with platforms that don't provide an snprintf() at all. > I don't see the rationale for using snprintf in the single place that > uses it, and I think it makes the code clearer if the change to use > PyOS_snprintf is reverted. I'm also happy with this. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From rsalz@zolera.com Sat Feb 16 23:00:07 2002 From: rsalz@zolera.com (Rich Salz) Date: Sat, 16 Feb 2002 18:00:07 -0500 Subject: [XML-SIG] PEPs for PyXML? References: <200202151559.g1FFxcM12530@localhost.localdomain> <00d501c1b70f$1e052290$0bf13044@tbp> Message-ID: <3C6EE477.94F7E9E@zolera.com> > To make that a bit easier, I've attached a DTD and css stylesheet for xml > PEPs, a slight variation on what I sent in last year. Check out IETF RFC 2629, which is an XML DTD for RFC's. It includes tools to convert to HTML and plain text ("lpr") format. It's very nice. Some examples can be found at: http://www.zolera.com/resources/opensrc/i-d/ /r$ -- Zolera Systems, Securing web services (XML, SOAP, Signatures, Encryption) http://www.zolera.com From tpassin@home.com Sun Feb 17 00:41:11 2002 From: tpassin@home.com (Thomas B. Passin) Date: Sat, 16 Feb 2002 19:41:11 -0500 Subject: [XML-SIG] PEPs for PyXML? References: <200202151559.g1FFxcM12530@localhost.localdomain> <00d501c1b70f$1e052290$0bf13044@tbp> <3C6EE477.94F7E9E@zolera.com> Message-ID: <00e001c1b74b$cc636220$0bf13044@tbp> [Rich Salz] > > To make that a bit easier, I've attached a DTD and css stylesheet for xml > > PEPs, a slight variation on what I sent in last year. > > Check out IETF RFC 2629, which is an XML DTD for RFC's. It includes > tools to convert to HTML and plain text ("lpr") format. It's very > nice. Some examples can be found at: > http://www.zolera.com/resources/opensrc/i-d/ > This looks nice, too. I got the xml2rfc package and tried it out. Interesting that it fails to convert the rfc itself into text (it works for html) - it stopped after the abstract. The copy of the rfc on the IEFT site also stops at the end of the abstract - someone must have run the same tool and not checked the results! Anyway, it looks good and may have more than we need. I sort of copied Python PEPs (and simplified them) for mine, but I think it needs a few more features. Either way, we've got somehting to start using. Cheers, Tom P From eximlist@icenet.net Mon Feb 18 05:17:23 2002 From: eximlist@icenet.net (Vikram M Gautam) Date: Mon, 18 Feb 2002 10:47:23 +0530 Subject: [XML-SIG] The All New EXIMList.Com Message-ID: <200202180517.KAA29991@popsmtp1.icenet.net> The All New EXIMList.Com - Thanks for the visit

 

From abottoni@quadrante.com Mon Feb 18 14:34:23 2002 From: abottoni@quadrante.com (Alessandro Bottoni) Date: Mon, 18 Feb 2002 15:34:23 +0100 Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? Message-ID: <5.1.0.14.0.20020218151520.00a826f8@veronika.quadrante.com> I'm sure that all of you know "Cocoon", the very nice XML-Java-based web server created by the Apache group (http://xml.apache.org/cocoon). Given that the Python community explicitly proposes Python as "the premier language for XML processing" (see: http://www.python.org/sigs/xml-sig/ ), I would expect to see an XML-based web server, like Cocoon, amongst the downloadables. Hence, I wonder if any Python programmer has ever evaluated the possibility to create an XML-based, dynamic, web server using Python and the 4Suite software (http://4suite.org). If so, could anybody give me instructions for finding that software and/or the related documentation? Thanks in advance Alessandro Bottoni From Nicolas.Chauvat@logilab.fr Mon Feb 18 14:48:39 2002 From: Nicolas.Chauvat@logilab.fr (Nicolas Chauvat) Date: Mon, 18 Feb 2002 15:48:39 +0100 (CET) Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? In-Reply-To: <5.1.0.14.0.20020218151520.00a826f8@veronika.quadrante.com> Message-ID: > Hence, I wonder if any Python programmer has ever evaluated the possibility > to create an XML-based, dynamic, web server using Python and the 4Suite > software (http://4suite.org). If so, could anybody give me instructions for > finding that software and/or the related documentation? You should be interested in reading about 4SuiteServer (see 4Suite.org) and maki.sourceforge.net Neither is a translation of Cocoon in Python, but both are interesting and useful, so I hope that helps. -- Nicolas Chauvat http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France) From abottoni@quadrante.com Tue Feb 19 13:51:39 2002 From: abottoni@quadrante.com (Alessandro Bottoni) Date: Tue, 19 Feb 2002 14:51:39 +0100 Subject: [XML-SIG] Maki: great! Message-ID: <5.1.0.14.0.20020219142315.00ada568@veronika.quadrante.com> I just discovered Maki (http://maki.sourceforge.net/), thanks to Nicolas Chauvat. Please, allow me to congratulate Sam Brauer for this very interesting project and thank him for having donated this high-quality software to the public domain. Now, a few comments: 1) I found interesting the idea to use embedded Python code for creating dinamic XML pages. I think this solution is simpler and probably faster to process than the complicated XSP (XML Server Pages) used by Cocoon (see: http://xml.apache.org/cocoon) but I would like to hear the opinion of the other partecipants of this list regarding this topic. Is an embedded scripting language better than a XML-compliant page format for creating dinamic web pages? How about content/logic separation? How about developer friendliness? 2) On the basis of Maki, it would be a very good idea to develop a "Portal system" like "Cocoon Portal" (see: http://www.need-a-cake.com/stories/2002/02/14/cocoonPortalFirstLook.html). This would make much easier and faster to create Python/XML/Maki-based web sites and would allow for a wider acceptance of these technologies. Anybody is thinking/working on such a system? 3) Does anybody use Maki in a production environment? How about performance and stability? Thanks in advance for your feedback. Alessandro Bottoni From Nicolas.Chauvat@logilab.fr Tue Feb 19 15:06:04 2002 From: Nicolas.Chauvat@logilab.fr (Nicolas Chauvat) Date: Tue, 19 Feb 2002 16:06:04 +0100 (CET) Subject: [XML-SIG] SOAP Skepticism In-Reply-To: <3C6D43DD.16D127CF@prescod.net> Message-ID: > Well said, and I made this poing to Uche several months ago. But I've > since realized that this has nothing to do with web services...i.e. > integrating organizational processes through the web. If it way too > expensive to use a technology optimized for point-to-point, like RPC, > rather than a technology optimized for creating a shared and common > namespace and programmatic interface like HTTP. Paul, Following the links you posted to the list was an interesting read indeed and started a couple nice discussions here at Logilab (ask Alexandre ;-). Instead of all your arguments about caching, I think it would be better to emphasize the fact that, as Uche or you said, you cannot rely on the closed world assumption when dealing with the internet. Providers and users of web services and web resources are losely coupled and that makes the message-passing paradigm perform far better than the procedure/method invocation one. This means that you always know how to pass a message, even if you may not be able to figure out how to deal with it, which is in my view better than "we don't even talk the same language !". And HTTP/FTP/SMTP/NNTP requests/responses that enable the growth of the internet are very much like messages aren't they ? My point is that loosely coupled systems work best with messages, whereas tightly coupled system can benefit from remote invocation mechanisms because they pass pointers/references around. What's good for the inside is not necessarily good for the outside. It's like programming scientific applications that use parallelism, you call functions on the same node and send messages to other nodes. HTTP is a protocol to efficiently pass "messages" around (BTW, wouldn't a MOM relying on HTTP be a nice thing to have ?), but RPC/RMI/SOAP is not, hence HTTP is a better fit for interconnecting systems over the internet. As for the "RPC/RMI/SOAP provides type/call checking much earlier than messages over HTTP do" argument I read in the KnowNow mail archive, I don't think it can be of much appeal to a Python fan like myself :-) Anyway, I didn't want to resume the xml-sig flooding and I'll be happy to take this off-list with other interested parties. -- Nicolas Chauvat http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France) From sj3589@netian.com Tue Feb 19 17:34:41 2002 From: sj3589@netian.com (¹Ú»óÁß) Date: Wed, 20 Feb 2002 02:34:41 +0900 Subject: [XML-SIG] [±¤°í] ´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ°¡ ´ç½ÅÀÇ ÀλýÀ» º¯È­½Ãų°ÍÀÔ´Ï´Ù. Message-ID:

 

±ÍÇÏÀÇ ¸ÞÀÏÁÖ¼Ò´Â À¥ ¼­ÇÎÁß ¾Ë°ÔµÈ °ÍÀ̸ç, E-Mail ÁÖ¼Ò ¿Ü¿¡ ´Ù¸¥ Á¤º¸´Â °®°í ÀÖÁö
¾Ê½À´Ï´Ù. Á¤ÅëºÎ ±Ç°í»çÇ׿¡ ÀÇ°Å Á¦¸ñ¿¡ [±¤°í]¶ó°í Ç¥±âÇÑ ¸ÞÀÏÀÔ´Ï´Ù.
¶ÇÇÑ ¿øÄ¡ ¾Ê´Â ºÐµéÀ» À§ÇØ ¼ö½Å°ÅºÎ ÀåÄ¡¸¦ ÇÊÈ÷ ¸¶·ÃÇÏ°í ÀÖ½À´Ï´Ù.

¡Ú¡Ú¡ÚÃÖ°íÀÇ »ç¾÷, ÃÖ°íÀÇ Å¸À̹Ö, ´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ(¿Â¶óÀÎ ¹«·á°¡ÀÔºÎÅÍ ¼­µÎ¸£¼¼¿ä)¡Ú¡Ú¡Ú

À̱ÛÀ» ³¡±îÁö Àо½Ã°í Àú¿Í°°ÀÌ »ç¾÷¿¡ µ¿ÂüÀ» ÇϽôºеéÀº Çà¿îÀ» ÀâÀ¸¼Ì´Ù°í °ú°¨È÷ ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ȨÆäÀÌÁö

¡ß2¿ù7ÀÏOPEN¡ß¡¼´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ ÃÖ°­¶óÀΡ½-¡Ú¡Ú¡Ú¿Â¶óÀÎ ¹«·á°¡ÀÔºÎÅÍ ¼­µÎ¸£¼¼¿ä¡Ú¡Ú¡Ú

°¡ÀÔ°ú µ¿½Ã¿¡ Àú¿Í °°Àº ÀÚµ¿È«º¸¿ë ȨÆäÀÌÁö¸¦ ¹«·á·Î Á¦°øÇÕ´Ï´Ù.

ȸ¿ø°¡ÀÔÀ» ÇϽöª º»ÀÎÀÌ ¸¸µå½Å ¾ÆÀ̵𸦠°®°í ¹Ù·Î È«º¸°¡ °¡´ÉÇÕ´Ï´Ù.

http://ebiz7.net/myteam/index.php?id=º»ÀξÆÀ̵ð  

À§¿¡°ÍÀÌ º»ÀÎÀÇ È¨ÆäÀÌÁö°¡ µË´Ï´Ù.

¿¹¸¦ µé¸é ȸ¿ø°¡ÀԽà º»ÀÎÀÇ ¾ÆÀ̵𰡠 sj3589 ÀÌ ¾ú´Ù¸é,

º»ÀÎÀÇ È¨ÆäÀÌÁö´Â http://ebiz7.net/myteam/index.php?id=sj3589  ÀÌ µÇ´Â °ÍÀÔ´Ï´Ù.

ÀÌ°ÍÀ» ´­·¯º¸½Ã¸é º»ÀÎÀÇ À̸§ÀÌ È¨ÆäÀÌÁö¿¡ ³ª¿À´Â °ÍÀ» º¸½Ç¼ö ÀÖ½À´Ï´Ù.

ÇÔ²²Çϱ⠶§¹®¿¡ ¸ðµÎ°¡ ¼º°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

³×Æ®¿öÅ© ¸¶ÄÉÆà °ü·Ã µ¿¿µ»óÀ» º¸¼¼¿ä. µ¿¿µ»ó1, µ¿¿µ»ó2, µ¿¿µ»ó3

Áö±Ý ¿Â¶óÀÎ °¡»óȸ¿øÀ¸·Î µî·ÏºÎÅÍ Çϼż­ ´ç½ÅÀÇ ¾Æ·¡¿¡ 1´Ü°è 4¸í, 2´Ü°è 16¸í 3´Ü°è 64¸íÀÇ

¿¹ºñ»ç¾÷ÀÚ°¡ ÀÚµ¿ Çü¼ºµÇ´Â °ÍÀ» Á÷Á¢ È®ÀÎÇϼ¼¿ä.

´«À¸·Î º¸°í ½ÍÀº°¡¿ä ? º»ÀÎÀÇ ¾ÆÀ̵ð·Î °¡ÀÔ ÈÄ À§¿Í °°ÀÌ È¨ÆäÀÌÁö¸¦ »ý¼ºÇÏ¸é ¹Ù·Î º¸ÀÔ´Ï´Ù.

°¡¸¸È÷ À־ ÇÏ·ç¿¡ 200¸íÀÌ»óÀÇ DOWNÀÌ µé¾î ¿É´Ï´Ù.

º¸³Ê½º Ç÷£¿¡¼­ º¸¿©ÁÖµíÀÌ 4´Ü°è ±îÁöÀÇ »ç¾÷ÀÚ¸¸ Çü¼º(340¸í) µÇ¾îµµ »ó´çÇÑ ¼öÀÔÀ»(¸Å¿ù ÃÖ¼Ò 400¸¸¿øÀÌ»ó) º¸Àå ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

ÇöÀç ÇÏ·ç¿¡ 200¸íÀÌ ÈξÀ³Ñ´Â »ç¶÷µéÀÌ °¡ÀÔÀ» ÇÏ°í ÀÖ½À´Ï´Ù. °ÅÁþ¸» °°ÀÌ ´À²¸Áö½Ã³ª¿ä?

Çѹø °¡ÀÔÇغ¸½Ã°í, 12½Ã°£¸¸ ±â´Ù·Áº¸½Ê½Ã¿ä! ÃÖ¼Ò 100¸íÀÌ»óÀÇ »ç¶÷µéÀÌ °¡ÀÔÀ» ÇÒ °ÍÀÌ°í, ÇÏ·ç°¡ Áö³ª¸é 200¸íÀÌ ÈξÀ³Ñ´Â »ç¶÷µéÀÌ

¿©·¯ºÐ ¹ØÀÇ ´Ù¿îÀ¸·Î µé¾î¿Ã °ÍÀÔ´Ï´Ù. ¸¸¾à ´õ ÀǽÉÀÌ µÇ½Ã´Â ºÐÀº Ä£±¸³ª ÁÖÀ§ÀÇ ¾Æ´ÂºÐÀÇ À̸§À¸·Î ´Ù½Ã Çѹø °¡ÀÔÀ» Çغ¸½Ê½Ã¿ä.

±×ºÐÀÌ ¿©·¯ºÐÀÇ ´Ù¿îÀ¸·Î »ý¼ºµÇ´Â°ÍÀ» º¸½Ç¼ö ÀÖÀ»°ÍÀÔ´Ï´Ù.

±×·¯´Ï 4´Ü°è ±îÁöÀÇ ´Ù¿îÀ» Çü¼ºÇÏ´Â °ÍÀº ½Ã°£¹®Á¦ÀÏ°ÍÀÔ´Ï´Ù.

Áö±Ý ¼­µÑ·¯ °¡»óȸ¿øµî·Ï(¹«·á)ºÎÅÍ Çϼż­ ÀÚ½ÅÀÇ À§Ä¡ºÎÅÍ È®º¸ÇØ µÎ¼¼¿ä.

ÀÌ·¸°Ô ÈǸ¢ÇÑ ½Ã½ºÅÛ¿¡ »¡¸® °¡ÀÔÇÏÁö ¾ÊÀ¸¸é Æò»ý ÈÄȸÇÕ´Ï´Ù.

ÃÖ¼Ò ÇÏ·ç¿¡ 200¸íÀÌ»ó¾¿ÀÇ ´Ù¿îÀÌ »ý±ä´Ù°í »ý°¢À» ÇϽðí 3°³¿ùµÚ¸¦ »ý°¢À» º¸½Ê½Ã¿ä.

18000¸íÀÔ´Ï´Ù.±×¶§ÀÇ ¼öÀÔÀº ¸»¾¸µå¸®Áö ¾Ê¾Æµµ ÁüÀÛÀÌ °¡¸®¶ó »ý°¢ÇÕ´Ï´Ù.

Áö±Ý ¼­µÑ·¯¼­ 2,3°³¿ù µÚÀÇ ¸ð½ÀÀ» ±×·Áº¸½Ê½Ã¿ä.

¹Ù·Î ÇൿÀ¸·Î ¿Å°Ü ÀÏ»ýÀÏ´ë ÃÖ´ëÀÇ Çà¿îÀ» ¿òÄÑ ÀâÀ¾½Ã´Ù.

¾Æ·¡ ȨÆäÀÌÁö¿¡¼­ ȸ¿ø°¡ÀÔÀ» ÇϽʽÿä. ±×¸®°í ¿¬¶ôÀ» Áֽʽÿä.

ȨÆäÀÌÁö

¼ö½Å°ÅºÎ´Â ÀÌ°÷À» ´­·¯ÁÖ¼¼¿ä.

From sam@webslingerZ.com Tue Feb 19 18:58:40 2002 From: sam@webslingerZ.com (Sam Brauer) Date: Tue, 19 Feb 2002 13:58:40 -0500 (EST) Subject: [XML-SIG] Re: Maki: great! In-Reply-To: Message-ID: > Date: Tue, 19 Feb 2002 14:51:39 +0100 > To: xml-sig@python.org > From: Alessandro Bottoni > Subject: [XML-SIG] Maki: great! > > I just discovered Maki (http://maki.sourceforge.net/), thanks to Nicolas > Chauvat. Please, allow me to congratulate Sam Brauer for this very > interesting project and thank him for having donated this high-quality > software to the public domain. Thanks for your enthusiastic comments! I'm a little embarrassed (as I feel that the documentation, examples, and packaging of the project are less than adequate). > > Now, a few comments: > 1) I found interesting the idea to use embedded Python code for creating > dinamic XML pages. I think this solution is simpler and probably faster to > process than the complicated XSP (XML Server Pages) used by Cocoon (see: > http://xml.apache.org/cocoon) but I would like to hear the opinion of the > other partecipants of this list regarding this topic. Is an embedded > scripting language better than a XML-compliant page format for creating > dinamic web pages? How about content/logic separation? How about developer > friendliness? I find it to be quite developer friendly. You can make changes and test them very quickly, and you have the full power of Python at your disposal to produce the dynamic content. Regarding content and logic separation, you can make them quite separate by writing logicsheets (or "taglibs") that are specific to your project. For example, on a project I am working on now I have a database abstraction layer that maps Python objects to tables in a SQL database. I have written various methods that allow me to retrieve objects that match certain conditions, and each class has a method toSaxEvents(handler) that writes out a representation of the object via SAX events. (When maki evaluates objects to serialize them into an XML document, it tries to call toSaxEvents() if the object has such a method, otherwise it uses a default method that handles built-in Python types in a sane manner and calls str() on objects without a toSaxEvents method.) In xml documents to be processed by maki, I _could_ directly embed Python code that operates on the objects and adds them to the document by running a process step. Or I can make up a set of tags that declare what objects I want to retrieve (including a list of conditional and/or sort criteria expressed by multiple nested tags, for example). In that case, I would write a logicsheet (xsl stylesheet) that matches those tags and transforms them into maki tags that execute and evaluate the Python code necessary to retrieve those objects. My input XML documents can then contain my custom tags, and I can pass the document through a stylesheet step that replaces those tags with the maki tags, then pass that output into a process step. If you use a logicsheet approach like this, you can achieve a high degree of content/logic separation, since your input xml documents declare what content you want and leave it up to your logicsheet to actually do the work to get the content. maki doesn't force you to do it either way. You have the flexibility to decide what best suits your needs. In general I tried to write maki such that it would be flexible and not force any particular style of usage. > > 2) On the basis of Maki, it would be a very good idea to develop a "Portal > system" like "Cocoon Portal" (see: > http://www.need-a-cake.com/stories/2002/02/14/cocoonPortalFirstLook.html). > This would make much easier and faster to create Python/XML/Maki-based web > sites and would allow for a wider acceptance of these technologies. Anybody > is thinking/working on such a system? That looks pretty neat. I'm sure one could create something similar on top of maki/mod_python. I haven't thought about it myself (and don't really have the time or immediate need to). > > 3) Does anybody use Maki in a production environment? So far I've only used it in a production capacity for intranets, although I'm in the process of creating a rather large scale public site on it. Whenever that goes live (which won't be until late summer or early fall) I'll most likely announce it on the maki homepage. > How about performance > and stability? maki itself seems to be quite stable if the software it depends on (mod_python, Python, and whatever xslt extension(s) you use) are stable and installed correctly. Similar with performance... If your xslt processor is fast and the Python code your pages execute is fast, then your site should perform well. libxslt is the fastest xslt processor I've used under Python so far. Unfortunately at the moment I am having trouble trying to use it with maki. Hopefully this will clear up soon as development on the two Python interfaces to libxslt continues. In the meantime, I'm using Sablotron and it's pretty speedy. Regarding speed of Python code, I'm finding that trying to achieve high performance and at the same time achieve a high separation of content and logic can be tricky. Adding layers of abstraction to your code tends to make it slower. Logicsheets can hide a lot of the complexity, but become rather complex themselves if the code they make calls to is not very abstract. To wrap up, you are taking a risk by using maki (since I haven't even deployed it yet on a large scale public site), but I hope that doesn't prevent people from trying it out. It should only get better over time. - Sam Brauer http://maki.sf.net/ From bates@stat.wisc.edu Tue Feb 19 19:49:41 2002 From: bates@stat.wisc.edu (Douglas Bates) Date: 19 Feb 2002 13:49:41 -0600 Subject: [XML-SIG] Copying an element from one DOM to another Message-ID: <6rzo2545gq.fsf@franz.stat.wisc.edu> I have a series of XML files whose contents I want to collect into a container element in a single file. I plan to use the xml.dom facilities to open up each of the input files, create a dom, determine the part that I want to copy into the output file and somehow copy it. I'm stuck on the "somehow copy it" part. I had hoped to use code like output.documentElement.appendNode(input.elementOfInterest.cloneNode(1)) but that fails telling me xml.dom.WrongDocumentErr: Node is from a different document I could write a function that walked the tree of the source node and created the copy in the target one element at a time but I have the feeling that I must be missing something obvious. Am I? From paul@prescod.net Tue Feb 19 20:10:42 2002 From: paul@prescod.net (Paul Prescod) Date: Tue, 19 Feb 2002 12:10:42 -0800 Subject: [XML-SIG] SOAP Skepticism References: Message-ID: <3C72B142.284BB6AA@prescod.net> I agree with everything you say. Just a little bit more information on one point: Nicolas Chauvat wrote: > >... > > As for the "RPC/RMI/SOAP provides type/call checking much earlier than > messages over HTTP do" argument I read in the KnowNow mail archive, I > don't think it can be of much appeal to a Python fan like myself :-) We have to acknowledge the world as it is and not as we would like it to be. That's why I've started a service description language for services based on XML+HTTP. It is very rough but you can get the idea here: http://www.prescod.net/swsbl.html Paul Prescod From fdrake@acm.org Tue Feb 19 20:15:32 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Tue, 19 Feb 2002 15:15:32 -0500 Subject: [XML-SIG] Copying an element from one DOM to another In-Reply-To: <6rzo2545gq.fsf@franz.stat.wisc.edu> References: <6rzo2545gq.fsf@franz.stat.wisc.edu> Message-ID: <15474.45668.887631.608972@grendel.zope.com> Douglas Bates writes: > it. I'm stuck on the "somehow copy it" part. I had hoped to use > code like > > output.documentElement.appendNode(input.elementOfInterest.cloneNode(1)) > > but that fails telling me > xml.dom.WrongDocumentErr: Node is from a different document > > I could write a function that walked the tree of the source node and > created the copy in the target one element at a time but I have the > feeling that I must be missing something obvious. Am I? The DOM is weak when it comes to cross-document operations, unfortunately. DOM Level 3 helps a bit, but that has not been finallized. cloneNode() creates a copy, but the new node stays within the original document. importNode() is what you really want, and it was defined for the DOM Level 2, but is not implemented in minidom (yet). (minidom is, at the moment, more DOM Level 1 than DOM Level 2; I think of this as a bug). 4DOM includes importNode(). You didn't tell how you were creating your DOM, but you should be able to switch to 4DOM to get the importNode() method. (Or, you may be using 4DOM, in which case you just need to call it.) You probably want something like this: copy = output.importNode(input.elementOfInterest) output.documentElement.appendChild(copy) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From cstrong@arielpartners.com Tue Feb 19 00:53:08 2002 From: cstrong@arielpartners.com (Craeg K. Strong) Date: Mon, 18 Feb 2002 19:53:08 -0500 Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? References: <5.1.0.14.0.20020218151520.00a826f8@veronika.quadrante.com> Message-ID: <3C71A1F4.1010304@arielpartners.com> How about Zope + (one of the many freely downloadable plugins to support XML/XSLT processing) ? check it out at http://www.zope.org There are over 500 plugins available at http://www.zope.org/Products HTH, --Craeg Alessandro Bottoni wrote: > I'm sure that all of you know "Cocoon", the very nice XML-Java-based > web server created by the Apache group (http://xml.apache.org/cocoon). > > Given that the Python community explicitly proposes Python as "the > premier language for XML processing" (see: > http://www.python.org/sigs/xml-sig/ ), I would expect to see an > XML-based web server, like Cocoon, amongst the downloadables. > > Hence, I wonder if any Python programmer has ever evaluated the > possibility to create an XML-based, dynamic, web server using Python > and the 4Suite software (http://4suite.org). If so, could anybody give > me instructions for finding that software and/or the related > documentation? > > Thanks in advance > > Alessandro Bottoni > > > _______________________________________________ > XML-SIG maillist - XML-SIG@python.org > http://mail.python.org/mailman/listinfo/xml-sig > From paul@prescod.net Wed Feb 20 00:57:00 2002 From: paul@prescod.net (Paul Prescod) Date: Tue, 19 Feb 2002 16:57:00 -0800 Subject: [XML-SIG] REST made more concrete still Message-ID: <3C72F45C.3CD5274A@prescod.net> I had a much better idea of how to do static service declarations (as per IDL or WSDL) for REST web services: http://www.prescod.net/wrdl.html It reflects the underlying Web Architecture much more clearly than my old proposal did. It is consequently simpler. It has first-class concepts of "resource", "representation", "method", "input" and "output". Methods are HTTP methods like PUT, GET, DELETE, YOURMETHOD. Inputs are like HTTP method inputs: headers, query params and body (the URI is implied by the resource!). Outputs are like HTTP outputs: status code, headers and body. Resources know what representations they support and you can navigate from resource to resource through hyperlinks without worrying about the XML or HTML syntax of the representation (unless you want to). Following a hyperlink is a type-safe operation. That's about all the concepts in it. A rough proposal for an API (Java-ish syntax to prove it isn't biased towards dynamic languages) is provided. Everything is statically type checked just as with IDL or WSDL. Of course in Python everything would be done at runtime and thus save a build step. When I implement it I think it will be a really cool tool. Until then, I think it is a useful pedagogic tool for those working on REST Zen. If *you* want to implement it before I get around to it, in whatever language, please do. I'll work with you to clear up any fuzzy parts of the spec. Paul Prescod From akuchlin@mems-exchange.org Wed Feb 20 03:38:39 2002 From: akuchlin@mems-exchange.org (akuchlin@mems-exchange.org) Date: Tue, 19 Feb 2002 22:38:39 -0500 Subject: [XML-SIG] REST made more concrete still In-Reply-To: <3C72F45C.3CD5274A@prescod.net>; from paul@prescod.net on Tue, Feb 19, 2002 at 04:57:00PM -0800 References: <3C72F45C.3CD5274A@prescod.net> Message-ID: <20020219223839.A20209@mozart.mems-exchange.org> On Tue, Feb 19, 2002 at 04:57:00PM -0800, Paul Prescod wrote: >http://www.prescod.net/wrdl.html Hmmm... I'm trying to wrap my head around this. * In the example, purchaseOrder has the query string declared as type integer. In the invocation example, at no point is this integer parameter supplied. * I don't understand the match attribute of 'representation'; does it mean that "if the XPath expression returns a non-empty set of nodes, the document is considered to match this representation type. The set of matching nodes is then discarded, having served its purpose." * I also don't understand the sentence about " This is not a problem because representations are only checked in a boolean fashion..." This doesn't clarify what happens if a document matches multiple representation types; is it considered to be all of those matching types, or just one of them? * How do you know when a new resource has been created in response to some request? Is that indicated in the returned document in some way dependent on its schema? (Say, if it has a element in it.) Or is it an HTTP header or something like that? * In the 'po' representation type, what are the approve and cancel references intended to be, semantically? Are they resources that you could POST to in ordr to approve or cancel the order, or something else? (Having them be xsltResources makes it really unclear what they're supposed to be.) * Am I going to have to invent 187 different schemas for an application? Say a resource has a bunch of subresources: an owner, a history, etc. Some of these might use an existing schema -- RDF, HTML, whatever -- but some might return something simple or ad hoc, such as just a string or an integer. Do I have to dress up this return value as: http://newuri/ 35 Or could I declare "treat the body of this action as a string/integer/ new URI"? I have a project currently specified as a set of XML-RPC interfaces; RESTifying it will make an interesting thought experiment. --amk (www.amk.ca) "The future" has arrived but they forgot to update the docs. -- R. David Murray, 9 May 2000 From uche.ogbuji@fourthought.com Wed Feb 20 03:39:18 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Tue, 19 Feb 2002 20:39:18 -0700 Subject: [XML-SIG] Ideas for web/ package In-Reply-To: Message from Paul Prescod of "Fri, 15 Feb 2002 10:26:06 PST." <3C6D52BE.4D03A00E@prescod.net> Message-ID: <200202200339.g1K3dI917690@localhost.localdomain> > "Fred L. Drake, Jr." wrote: > > > >... > > > > > 1) a stricter URL parser, and > > > > You'll have to be more specific about requirements than this! You're > > asking for lexical information about the URL rather than logical > > information; I'm not sure that's even come up before. > > If you send out a request for comments on the Python URL parser you may > get more requirements back. I've heard second and third-hand grumblings > before. e.g. > > http://groups.yahoo.com/group/rest-discuss/message/206 > > This might be what Fred fixed in 2.2, though... Could you lot have a look at the significant work Mike Brown has put into 4Suite's UriResolver class? See http://cvs.4suite.org/cgi-bin/viewcvs.cgi/~checkout~/4Suite/Ft/Lib/Uri.py?rev=1 .12&content-type=text/plain I even badgered him until he caught up on the many past URI threads on this list. I agree that Python probably needs something in C, eventually, but at least this is a start for something scrupulous in Python. -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From mdierken@hotmail.com Wed Feb 20 04:21:03 2002 From: mdierken@hotmail.com (S. Mike Dierken) Date: Tue, 19 Feb 2002 20:21:03 -0800 Subject: [XML-SIG] Re: [rest-discuss] REST made more concrete still References: <3C72F45C.3CD5274A@prescod.net> Message-ID: I really like the idea of this - especially hashing things out via code... ----- Original Message ----- From: Paul Prescod To: ; ; xml-sig Sent: Tuesday, February 19, 2002 4:57 PM Subject: [rest-discuss] REST made more concrete still > I had a much better idea of how to do static service declarations (as > per IDL or WSDL) for REST web services: > > http://www.prescod.net/wrdl.html > > It reflects the underlying Web Architecture much more clearly than my > old proposal did. It is consequently simpler. > > It has first-class concepts of "resource", "representation", "method", > "input" and "output". Methods are HTTP methods like PUT, GET, DELETE, > YOURMETHOD. Inputs are like HTTP method inputs: headers, query params > and body (the URI is implied by the resource!). Outputs are like HTTP > outputs: status code, headers and body. Resources know what > representations they support and you can navigate from resource to > resource through hyperlinks without worrying about the XML or HTML > syntax of the representation (unless you want to). Following a hyperlink > is a type-safe operation. > > That's about all the concepts in it. > > A rough proposal for an API (Java-ish syntax to prove it isn't biased > towards dynamic languages) is provided. Everything is statically type > checked just as with IDL or WSDL. Of course in Python everything would > be done at runtime and thus save a build step. > > When I implement it I think it will be a really cool tool. Until then, I > think it is a useful pedagogic tool for those working on REST Zen. If > *you* want to implement it before I get around to it, in whatever > language, please do. I'll work with you to clear up any fuzzy parts of > the spec. > > Paul Prescod > > ------------------------ Yahoo! Groups Sponsor ---------------------~--> > Sponsored by VeriSign - The Value of Trust > Pinpoint the right security solution for your company - FREE > Guide from industry leader VeriSign gives you all the facts. > http://us.click.yahoo.com/lWSNbC/WdiDAA/yigFAA/W6uqlB/TM > ---------------------------------------------------------------------~-> > > To unsubscribe from this group, send an email to: > rest-discuss-unsubscribe@yahoogroups.com > > > > Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ > > > From uche.ogbuji@fourthought.com Wed Feb 20 04:15:29 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Tue, 19 Feb 2002 21:15:29 -0700 Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? In-Reply-To: Message from Alessandro Bottoni of "Mon, 18 Feb 2002 15:34:23 +0100." <5.1.0.14.0.20020218151520.00a826f8@veronika.quadrante.com> Message-ID: <200202200415.g1K4FTm17758@localhost.localdomain> > I'm sure that all of you know "Cocoon", the very nice XML-Java-based web > server created by the Apache group (http://xml.apache.org/cocoon). > > Given that the Python community explicitly proposes Python as "the premier > language for XML processing" (see: http://www.python.org/sigs/xml-sig/ ), I > would expect to see an XML-based web server, like Cocoon, amongst the > downloadables. > > Hence, I wonder if any Python programmer has ever evaluated the possibility > to create an XML-based, dynamic, web server using Python and the 4Suite > software (http://4suite.org). If so, could anybody give me instructions for > finding that software and/or the related documentation? Actually, 4Suite includes all this: a Web server (plus FTP server) that provides XML, XSLT, XPath, RDF, Xlink, XPointer, XUpdate, etc. processing built-in, all available from an XSLT or Python API. Start with 4Suite 0.12.0a1 ftp://ftp.4suite.org/pub/4Suite/4Suite-0.12.0a1.tar.gz Or if you don't mind working the bleeding edge (for a lot of advantages), grab the latest CVS. At any rate, see http://cvs.4suite.org/cgi-bin/viewcvs.cgi/4Suite/docs/src/HowTos/UNIX.txt?rev=1 .3&content-type=text/vnd.viewcvs-markup or http://cvs.4suite.org/cgi-bin/viewcvs.cgi/4Suite/docs/src/HowTos/Windows.txt?re v=1.3&content-type=text/vnd.viewcvs-markup depending on platform, then on to http://cvs.4suite.org/cgi-bin/viewcvs.cgi/4Suite/docs/src/HowTos/QuickStart.txt ?rev=1.5&content-type=text/vnd.viewcvs-markup -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Wed Feb 20 04:18:37 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Tue, 19 Feb 2002 21:18:37 -0700 Subject: [XML-SIG] PEPs for PyXML? In-Reply-To: Message from "Thomas B. Passin" of "Sat, 16 Feb 2002 19:41:11 EST." <00e001c1b74b$cc636220$0bf13044@tbp> Message-ID: <200202200418.g1K4Ib817771@localhost.localdomain> > [Rich Salz] > > > > To make that a bit easier, I've attached a DTD and css stylesheet for > xml > > > PEPs, a slight variation on what I sent in last year. > > > > Check out IETF RFC 2629, which is an XML DTD for RFC's. It includes > > tools to convert to HTML and plain text ("lpr") format. It's very > > nice. Some examples can be found at: > > http://www.zolera.com/resources/opensrc/i-d/ > > > This looks nice, too. I got the xml2rfc package and tried it out. > Interesting that it fails to convert the rfc itself into text (it works for > html) - it stopped after the abstract. The copy of the rfc on the IEFT site > also stops at the end of the abstract - someone must have run the same tool > and not checked the results! > > Anyway, it looks good and may have more than we need. I sort of copied > Python PEPs (and simplified them) for mine, but I think it needs a few more > features. Either way, we've got somehting to start using. OK, but I have a proposal to write, and I don't have time to write it in both formats. Let's decide on one format. I must say I like the fit of Thomas's solution better, but it's hard to argue with the prestige of an IETF-blessed format. What say you lot? -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From fdrake@acm.org Wed Feb 20 04:43:11 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Tue, 19 Feb 2002 23:43:11 -0500 Subject: [XML-SIG] PEPs for PyXML? In-Reply-To: <200202200418.g1K4Ib817771@localhost.localdomain> References: <00e001c1b74b$cc636220$0bf13044@tbp> <200202200418.g1K4Ib817771@localhost.localdomain> Message-ID: <15475.10591.450124.287569@grendel.zope.com> Uche Ogbuji writes: > OK, but I have a proposal to write, and I don't have time to write > it in both formats. Let's decide on one format. I've not had time to look at either in detail. I'll use whichever gets checked into the CVS tree. ;-) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From rsalz@zolera.com Wed Feb 20 04:56:08 2002 From: rsalz@zolera.com (Rich Salz) Date: Tue, 19 Feb 2002 23:56:08 -0500 Subject: [XML-SIG] PEPs for PyXML? References: <200202200418.g1K4Ib817771@localhost.localdomain> Message-ID: <3C732C68.74497F6C@zolera.com> > What say you lot? The rabble over here is calling IETF IETF, sire. It'd be a neat hack (and useful) if someone wrote pyxml tools to Marshall's XML into html text etc. Hmm.. it'd even make a (dare I say it) useful web service. /r$ -- Zolera Systems, Securing web services (XML, SOAP, Signatures, Encryption) http://www.zolera.com From akuchlin@mems-exchange.org Wed Feb 20 05:00:17 2002 From: akuchlin@mems-exchange.org (akuchlin@mems-exchange.org) Date: Wed, 20 Feb 2002 00:00:17 -0500 Subject: [XML-SIG] REST made more concrete still In-Reply-To: <20020219223839.A20209@mozart.mems-exchange.org>; from akuchlin@mems-exchange.org on Tue, Feb 19, 2002 at 10:38:39PM -0500 References: <3C72F45C.3CD5274A@prescod.net> <20020219223839.A20209@mozart.mems-exchange.org> Message-ID: <20020220000017.A21065@mozart.mems-exchange.org> On Tue, Feb 19, 2002 at 10:38:39PM -0500, akuchlin@mems-exchange.org wrote: >I have a project currently specified as a set of XML-RPC interfaces; >RESTifying it will make an interesting thought experiment. Notes on a vague REST interface are now at http://www.amk.ca/conceit/rest-version.html. The text follows. Any thoughts? REST-ifying the Matisse Interfaces _________________________________________________________________ Introduction I wrote up a set of still-unimplemented XML-RPC interfaces for a project; see [4]the original spec for the full details. This page is an attempt at creating a strawman REST version of the spec, in an effort to figure out how REST should be applied. It will go through each of the interfaces, and compare the XML-RPC and REST version. In the XML-RPC version, users and services are identified by IDs such as "akuchlin" or "snf-scope". In the REST version, they're identified by URIs. The root URL for the REST version is called written here as master; it would eventually be a real URL such as http://services.mems-exchange.org. Interface: Directory \begin{methoddesc}{list_services}{\optional{application}} Returns all the existing services as a list of structs. The contents of the structs are explained below. \var{application} is a string containing an application ID; if it's provided, then only services for that application will be returned. \end{methoddesc} REST version: GET master/list_services Returns a list of services as the body. XXX should the optional 'application argument be a URL parameter? Then you'd do "GET master/list_services;scope" to get all the microscope services. Or should it be the query string? XXX how should the returned result, which are (service ID, application ID, host, port) 3-tuples, be encoded? As an XML-RPC array of structs? As a little custom XML schema? \begin{methoddesc}{get_service}{service} Returns a struct (= a Python dictionary or a Java \class{Vector} instance) with information about the given service. The contents of the struct are explained below. \var{service} is a string containing a service ID. \end{methoddesc} REST version: GET master/service;service ID. Returns an HTTP body, encoded using the same schema/form as list_services(). Interface: Login \begin{methoddesc}{get_service_ticket}{user_id, password, service_id} If the user ID and password are correct, returns a string containing a ticket for the given service. If they're wrong, it will raise a fault with the fault code 1 and fault string ``IncorrectPassword''. \var{user_id}, \var{password}, \var{service_id} are all strings. \end{methoddesc} REST version: POST master/get_service_ticket. This must be HTTP authenticated with the username (meaning a human-friendly ID as opposed to a URI?) and password. The body is the service ID. Returns an authorization ticket as the body. XXX should the service ID be specified as a query string? XXX or should this be a subset of the service's URI, so you'd access master/(service ID)/get_ticket, instead? Interface: Authorization \begin{methoddesc}{check}{user_id, service_id} Returns a Boolean value. Returns true if the user \var{user_id} is permitted to access the service identified by \var{service_id}. \end{methoddesc} REST version: POST master/check_auth XXX how should the two parameters be passed? (XML-RPC again?) Interface: MetadataStore \begin{methoddesc}{get_cache_location}{ticket, metadata} \var{ticket} and \var{metadata} are both strings. Returns a string containing an FTP URL; the data should be stored to this URL. (Rationale for choosing FTP: it's standard, it seems hard to improve on it for shipping data at high speed, and the DPSS code supports it.) \end{methoddesc} REST version: POST master/get_cache_location. The body is your authorization ticket. The returned body is the new URI for the data time. HTTP PUT the content to the URI to store the data; HTTP PUT the metadata to URI/metadata to store it. XXX what if you crash after getting the new URI? You now have an empty resource. Can this all be done in one HTTP operation? Interface: MetadataSearch \begin{methoddesc}{search}{ticket, condition1, condition2, ...} Returns a list of metadata IDs that match all of the given conditions. ... full description deleted ... \end{methoddesc} REST version: No equivalent is attempted. You could let Google crawl the URIs for your data, build RDF or topic maps or whatever you like. This interface goes away and is replaced by the panoply of search technologies available for the Web. Interface: Preferences \begin{methoddesc}{get_preferences}{ticket, service/application} Retrieve a string containing preferences information. \end{methoddesc} \begin{methoddesc}{set_preferences}{ticket, service/application, prefdata} Store the string \var{prefdata} containing preferences information. \end{methoddesc} REST version: easy! To get preferences, POST user-URI/prefs/applicationID, passing an authorization ticket as the body. To set preferences, PUT to the same URI, passing the preference data in the body. References 4. http://www.mems-exchange.org/projects/matisse/ideas/ 5. http://www.mems-exchange.org/feedback/?akuchlin,www.amk.ca/conceit/rest-version.html --amk (www.amk.ca) I say, what a wonderful butler; he's so violent! -- The Doctor, in "City of Death" From fdrake@acm.org Wed Feb 20 05:02:03 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Wed, 20 Feb 2002 00:02:03 -0500 Subject: [XML-SIG] PEPs for PyXML? In-Reply-To: <3C732C68.74497F6C@zolera.com> References: <200202200418.g1K4Ib817771@localhost.localdomain> <3C732C68.74497F6C@zolera.com> Message-ID: <15475.11723.518957.627508@grendel.zope.com> Rich Salz writes: > It'd be a neat hack (and useful) if someone wrote pyxml tools to > Marshall's XML into html text etc. Hmm.. it'd even make a (dare I say > it) useful web service. I've heard (and used!) the term "web service" so many times over the last couple of weeks that I'm convinced using a Makefile and a handful of scripts/stylesheets would be a better solution. Just about anything is a better solution than applying a buzzword! ;-) (No, I'm not hostile to web services; this just doesn't seem a particularly reasonable application. And I really don't care right now how we go from XML-SIG-PEP-ML to HTML/whatever. Though I might tomorrow.) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From paul@prescod.net Wed Feb 20 05:21:00 2002 From: paul@prescod.net (Paul Prescod) Date: Tue, 19 Feb 2002 21:21:00 -0800 Subject: [XML-SIG] REST made more concrete still References: <3C72F45C.3CD5274A@prescod.net> <20020219223839.A20209@mozart.mems-exchange.org> Message-ID: <3C73323C.73618DEE@prescod.net> I'll respond to Andrew in rest-discuss because this stuff isn't Python specific. http://groups.yahoo.com/group/rest-discuss/message/757 rest-discuss is very low-bandwidth and easy to follow through the web if you don't want to subscribe. Paul Prescod From mike@skew.org Wed Feb 20 08:17:20 2002 From: mike@skew.org (Mike Brown) Date: Wed, 20 Feb 2002 01:17:20 -0700 (MST) Subject: [XML-SIG] Re: Ideas for web/ package Message-ID: <200202200817.g1K8HK378813@skew.org> I really wish pipermail would put message IDs in the archives. I could've properly threaded this. OK, I have, as Uche mentioned, reviewed the discussion from last year on this list (links to it are in Uri.py). I also have been following the URI related discussion currently happening on xml-dev. This alerted me to the existence of the JDK 1.4 URI class, which is *very* well documented. However, the notion of creating an object for every URI is typical Java overkill, IMO, and not a desirable option for us in 4Suite. I also reviewed the last several months' worth of archives of the W3C's URI list (formerly the IETF URI WG list), where there were some interesting threads. http://lists.w3.org/Archives/Public/uri/ The reason I am posting is because Uche's post inviting people to scrutinize 4Suite's (Base)UriResolver class at http://cvs.fourthought.com/cgi-bin/viewcvs.cgi/4Suite/Ft/Lib/Uri.py?rev=1.12&content-type=text/vnd.viewcvs-markup was somewhat premature. What has happened is this: 1. I have recently enhanced 4Suite's Ft.Lib.Uri module to include functions and Python regular-expressions [1] for performing strict validation on strings purporting to be URIs or URI references. Feel free to look over this and offer feedback. 2. I have also added a function for parsing a URI reference into its components. This is based on the regex in appendix B of RFC 2396, but I took the liberty of disambiguating the very poorly named 'path' component. Feel free to look over this, as well. 3. On a private mailing list, I floated a proposal for rewriting Uche's UriResolver class, which is in that Ft.Lib.Uri module, so that it would be much more useful and subclassable. However, I have not yet undertaken the work on this. It's next on my to-do list. So, if you're looking at the Uri.py link that Uche posted, kindly ignore the BaseUriResolver class in it, as it is going to become completely unrecognizable here in the next day or two. What precipitated this review of our Uri module is the unfortunate situation with 'file:' URI references, which often masquerade as baseless, invalid opaque strings that are nearly impossible to resolve with any confidence. I'm not certain I can address all the issues, but I'm taking a stab at at least fleshing out a resolver API that will allow subclassing in the manner that I expect people will want to be able to subclass it. - Mike ____________________________________________________________________________ mike j. brown, fourthought.com | xml/xslt: http://skew.org/xml/ denver/boulder, colorado, usa | personal: http://hyperreal.org/~mike/ [1] Why do Python docs hyphenate 'regular-expression'? From veillard@redhat.com Wed Feb 20 08:38:11 2002 From: veillard@redhat.com (Daniel Veillard) Date: Wed, 20 Feb 2002 03:38:11 -0500 Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? In-Reply-To: <200202200415.g1K4FTm17758@localhost.localdomain>; from uche.ogbuji@fourthought.com on Tue, Feb 19, 2002 at 09:15:29PM -0700 References: <200202200415.g1K4FTm17758@localhost.localdomain> Message-ID: <20020220033811.D25311@redhat.com> On Tue, Feb 19, 2002 at 09:15:29PM -0700, Uche Ogbuji wrote: > Actually, 4Suite includes all this: a Web server (plus FTP server) that > provides XML, XSLT, XPath, RDF, Xlink, XPointer, XUpdate, etc. processing > built-in, all available from an XSLT or Python API. BTW, what's the current state of your XPointer implementation, do you support ranges and the xmlns() scheme ? Daniel -- Daniel Veillard | Red Hat Network https://rhn.redhat.com/ veillard@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ From uche.ogbuji@fourthought.com Wed Feb 20 10:54:14 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 20 Feb 2002 03:54:14 -0700 Subject: [XML-SIG] Re: Ideas for web/ package In-Reply-To: Message from Mike Brown of "Wed, 20 Feb 2002 01:17:20 MST." <200202200817.g1K8HK378813@skew.org> Message-ID: <200202201054.g1KAsEU18667@localhost.localdomain> > The reason I am posting is because Uche's post inviting people to scrutinize > 4Suite's (Base)UriResolver class at > http://cvs.fourthought.com/cgi-bin/viewcvs.cgi/4Suite/Ft/Lib/Uri.py?rev=1.12&content-type=text/vnd.viewcvs-markup > was somewhat premature. > > What has happened is this: > > 1. I have recently enhanced 4Suite's Ft.Lib.Uri module to include functions > and Python regular-expressions [1] for performing strict validation on strings > purporting to be URIs or URI references. Feel free to look over this and offer > feedback. I've already replied to Mike privately that this part was exactly the interesting bit for the discussion. The resolver mechanics are a matter of separate interest: Mike Olson and I are moving to re-factor that completely into a DOM/SAX-style InputSource object that can be shared across Python/XML tools (this is the PEP I plan to write as soon as I figure out what format to use). -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From uche.ogbuji@fourthought.com Wed Feb 20 10:58:49 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 20 Feb 2002 03:58:49 -0700 Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? In-Reply-To: Message from Daniel Veillard of "Wed, 20 Feb 2002 03:38:11 EST." <20020220033811.D25311@redhat.com> Message-ID: <200202201058.g1KAwnh18688@localhost.localdomain> > On Tue, Feb 19, 2002 at 09:15:29PM -0700, Uche Ogbuji wrote: > > Actually, 4Suite includes all this: a Web server (plus FTP server) that > > provides XML, XSLT, XPath, RDF, Xlink, XPointer, XUpdate, etc. processing > > built-in, all available from an XSLT or Python API. > > BTW, what's the current state of your XPointer implementation, > do you support ranges and the xmlns() scheme ? We're never likely to support ranges. In fact, in general, I'm part way on an effort to make 4XPointer more aptly named 4FIXPtr. As for namespace initialization, I think that is indeed supported, though it's been a while since I've checked (the extant code isn't my sandbox). -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From mal@lemburg.com Wed Feb 20 11:19:26 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 20 Feb 2002 12:19:26 +0100 Subject: [XML-SIG] Re: Ideas for web/ package References: <200202201054.g1KAsEU18667@localhost.localdomain> Message-ID: <3C73863E.95465B37@lemburg.com> Just thought I'd drop a note: You may be interested in the mxURL package for dealing with URL, URIs or whatever you call them ;-): http://www.egenix.com/files/python/mxURL.html -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From uche.ogbuji@fourthought.com Wed Feb 20 11:13:38 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 20 Feb 2002 04:13:38 -0700 Subject: [XML-SIG] Re: Ideas for web/ package In-Reply-To: Message from "M.-A. Lemburg" of "Wed, 20 Feb 2002 12:19:26 +0100." <3C73863E.95465B37@lemburg.com> Message-ID: <200202201113.g1KBDcP19174@localhost.localdomain> > Just thought I'd drop a note: > > You may be interested in the mxURL package for dealing with URL, > URIs or whatever you call them ;-): I hadn't been aware of this until you mentioned it earlier in the thread. Indeed, I think URL versus URI is the crux of the problem. We do need a UriResolver to be easily extensible to non-URL schemes, in particular URNs (most often UUID-based URNs). It looks as if mxURL has some extensibility built in, but I don't see in the API how to plug in URN catalogs. I suppose one could write a more general URI resolver and delegate URL-based schemes to mxURL... -- Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From paul@prescod.net Wed Feb 20 13:01:43 2002 From: paul@prescod.net (Paul Prescod) Date: Wed, 20 Feb 2002 05:01:43 -0800 Subject: [XML-SIG] REST made more concrete still References: <3C72F45C.3CD5274A@prescod.net> <20020219223839.A20209@mozart.mems-exchange.org> <20020220000017.A21065@mozart.mems-exchange.org> Message-ID: <3C739E37.EE87D712@prescod.net> Andrew: Bravo! Good stuff. If I could give you another award I would. ;) I'll review it in rest-discuss: http://groups.yahoo.com/group/rest-discuss/message/758 Paul Prescod From abottoni@quadrante.com Wed Feb 20 15:44:26 2002 From: abottoni@quadrante.com (Alessandro Bottoni) Date: Wed, 20 Feb 2002 16:44:26 +0100 Subject: [XML-SIG] Re: Maki: great! Message-ID: <001401c1ba25$7bbf3790$7d00a8c0@intranet.quadrante.com> Messaggio in formato MIME composto da più parti. ------=_NextPart_000_0011_01C1BA2D.DBB7B930 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable See my comments below... > Date: Tue, 19 Feb 2002 14:51:39 +0100 > To: xml-sig@python.org > From: Alessandro Bottoni > Subject: [XML-SIG] Maki: great! > > I just discovered Maki (http://maki.sourceforge.net/), thanks to = Nicolas > Chauvat. Please, allow me to congratulate Sam Brauer for this very > interesting project and thank him for having donated this high-quality > software to the public domain. Thanks for your enthusiastic comments! I'm a little embarrassed (as I feel that the documentation, examples, = and packaging of the project are less than adequate). [Alessandro Bottoni] Everything can be improved but I think you did a wonderful work so far = :-) > > Now, a few comments: > 1) I found interesting the idea to use embedded Python code for = creating > dinamic XML pages. I think this solution is simpler and probably = faster to > process than the complicated XSP (XML Server Pages) used by Cocoon = (see: > http://xml.apache.org/cocoon) but I would like to hear the opinion of = the > other partecipants of this list regarding this topic. Is an embedded > scripting language better than a XML-compliant page format for = creating > dinamic web pages? How about content/logic separation? How about = developer > friendliness? I find it to be quite developer friendly. You can make changes and test them very quickly, and you have the full power of Python at your = disposal to produce the dynamic content. [Alessandro Bottoni] I agree completely. In particular, having the full power of Python at = your fingertips makes Maki much more flexible and powerful than most = PHP-based systems. Regarding content and logic separation, you can make them quite separate by writing logicsheets (or "taglibs") that are specific to your project. [Alessandro Bottoni] Great! That is exactly what I hoped to hear from you! For example, on a project I am working on now I have a database abstraction layer that maps Python objects to tables in a SQL database. = I have written various methods that allow me to retrieve objects that = match certain conditions, and each class has a method toSaxEvents(handler) = that writes out a representation of the object via SAX events. (When maki evaluates objects to serialize them into an XML document, it tries to = call toSaxEvents() if the object has such a method, otherwise it uses a default method that handles built-in Python types in a sane manner and calls str() on objects without a toSaxEvents method.) [Alessandro Bottoni] Quite interesting... Do you plan to make this module avalaible as open = source software, as well? In xml documents to be processed by maki, I _could_ directly embed = Python code that operates on the objects and adds them to the document by = running a process step. Or I can make up a set of tags that declare what objects I want to retrieve (including a list of conditional and/or sort criteria expressed by multiple nested tags, for example). In that case, I would write a logicsheet (xsl stylesheet) that matches those tags and transforms them into maki tags that execute and evaluate the Python code necessary to retrieve those objects. My input XML documents can then contain my = custom tags, and I can pass the document through a stylesheet step that = replaces those tags with the maki tags, then pass that output into a process = step. If you use a logicsheet approach like this, you can achieve a high = degree of content/logic separation, since your input xml documents declare what content you want and leave it up to your logicsheet to actually do the work to get the content. [Alessandro Bottoni] Maki could became the core of a future, full-blown "portal system", like = PHPNuke or ezPublish. This depends strongly on the possibility to = develop add-ons, plug-ins, modules and extensions in a easy and fast = way. For this reason, I think that the adoption of this = stylesheet/taglib-oriented approach is crucial for the future of Maki. = Can I suggest you to develop a small example of such a solution? This = would help us a lot in understanding the implementation details and in = keeping ourselves coherent with the existing architecture. maki doesn't force you to do it either way. You have the flexibility to decide what best suits your needs. In general I tried to write maki such that it would be flexible and not force any particular style of usage. > > 2) On the basis of Maki, it would be a very good idea to develop a = "Portal > system" like "Cocoon Portal" (see: > = http://www.need-a-cake.com/stories/2002/02/14/cocoonPortalFirstLook.html)= . > This would make much easier and faster to create Python/XML/Maki-based = web > sites and would allow for a wider acceptance of these technologies. = Anybody > is thinking/working on such a system? That looks pretty neat. I'm sure one could create something similar on top of maki/mod_python. I haven't thought about it myself (and don't really have the time or immediate need to). [Alessandro Bottoni] I think that a system like "Cocoon portal" is what the real-world web = developers really need (python-based, of course...). They do not have = time to study a complex XML-based system, like Cocoon, and develop a = web application from scratch. They need a full-blown, empty portal that = they can easily install and adapt to their specific needs. That is = exactly what PHPNuke and ezPublish give them at the moment. I will try = to develop such a system, using Maki as a basis, as soon as I will have = some more freetime (currently, I'm involved in a very demanding, = security-related project. I have no time for anything else). I will keep = you (and the other, possibly interested, people in the list) up-to-date = about this project. If someone else is fascinated by this idea, please = do not wait for me: I could be blocked for months... > > 3) Does anybody use Maki in a production environment? So far I've only used it in a production capacity for intranets, = although I'm in the process of creating a rather large scale public site on it. Whenever that goes live (which won't be until late summer or early fall) I'll most likely announce it on the maki homepage. > How about performance > and stability? maki itself seems to be quite stable if the software it depends on (mod_python, Python, and whatever xslt extension(s) you use) are stable and installed correctly. Similar with performance... If your xslt processor is fast and the = Python code your pages execute is fast, then your site should perform well. libxslt is the fastest xslt processor I've used under Python so far. Unfortunately at the moment I am having trouble trying to use it with maki. Hopefully this will clear up soon as development on the two = Python interfaces to libxslt continues. In the meantime, I'm using Sablotron = and it's pretty speedy. Regarding speed of Python code, I'm finding that trying to achieve high performance and at the same time achieve a high separation of content = and logic can be tricky. Adding layers of abstraction to your code tends to make it slower. Logicsheets can hide a lot of the complexity, but = become rather complex themselves if the code they make calls to is not very abstract. [Alessandro Bottoni] I expected it: Content/Style/Logic separation came at a cost. In any = case, Python-based systems seems to be faster than java-based ones, like = Cocoon. To wrap up, you are taking a risk by using maki (since I haven't even deployed it yet on a large scale public site), but I hope that doesn't prevent people from trying it out. It should only get better over time. - Sam Brauer http://maki.sf.net/ [Alessandro Bottoni] I can just speak for myself but I think that Maki is already giving us = what we actually need: a robust, elegant, modular system that we can use = as a skeleton for developing a full-blown portal system like "Cocoon = portal", PHPNuke, ezPublish and so on. If we can leave most of the = "general purpose" tasks (XML/XSLT management, session management, DB = abstraction layer, etc...) to Maki, we can focus on creating = task-specific "modules" (article publishing, poll management, calendar, = etc...) that will eventually sum up to a real, full-featured portal = system. That would be a really great achievement, in my opinion. Thanks again for this gift. Alessandro Bottoni ------=_NextPart_000_0011_01C1BA2D.DBB7B930 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
See my comments below...
 
> Date: Tue, 19 Feb 2002 14:51:39 = +0100
> To: xml-sig@python.org
> = From:=20 Alessandro Bottoni <abottoni@quadrante.com>
=
>=20 Subject: [XML-SIG] Maki: great!
>
> I just = discovered=20 Maki (http://maki.sourceforge.net/), = thanks to Nicolas
> Chauvat. Please, allow me to = congratulate Sam=20 Brauer for this very
> interesting project and thank him = for having=20 donated this high-quality
> software to the public=20 domain.

Thanks for your enthusiastic comments!
I'm a = little=20 embarrassed (as I feel that the documentation, examples, = and
packaging of the=20 project are less than adequate).
 
[Alessandro = Bottoni]
Everything can be improved but I think = you did a=20 wonderful work so far :-)

>
> Now, a few=20 comments:
> 1) I found interesting the idea to use embedded = Python=20 code for creating
> dinamic XML pages. I think this = solution is=20 simpler and probably faster to
> process than the = complicated XSP=20 (XML Server Pages) used by Cocoon (see:
> http://xml.apache.org/cocoon) = but I=20 would like to hear the opinion of the
> other partecipants = of this=20 list regarding this topic. Is an embedded
> scripting = language=20 better than a XML-compliant page format for creating
> = dinamic web=20 pages? How about content/logic separation? How about = developer
>=20 friendliness?

I find it to be quite developer friendly.  = You can=20 make changes and test
them very quickly, and you have the full power = of=20 Python at your disposal
to produce the dynamic content.
 
[Alessandro Bottoni]
I agree completely. In particular, = having the full=20 power of Python at your fingertips makes Maki much more flexible and = powerful=20 than most PHP-based systems.

Regarding content and logic = separation, you=20 can make them quite separate
by writing logicsheets (or "taglibs") = that are=20 specific to your project.
 
[Alessandro = Bottoni]
Great! That is exactly what I hoped to = hear from=20 you!

For example, on a project I am working on now I have a=20 database
abstraction layer that maps Python objects to tables in a = SQL=20 database.  I
have written various methods that allow me to = retrieve=20 objects that match
certain conditions, and each class has a method=20 toSaxEvents(handler) that
writes out a representation of the object = via SAX=20 events.  (When maki
evaluates objects to serialize them into an = XML=20 document, it tries to call
toSaxEvents() if the object has such a = method,=20 otherwise it uses a
default method that handles built-in Python types = in a=20 sane manner and
calls str() on objects without a toSaxEvents=20 method.)
 
[Alessandro = Bottoni]
Quite interesting... Do you plan to = make this=20 module avalaible as open source software, as well?

In xml = documents to be=20 processed by maki, I _could_ directly embed Python
code that operates = on the=20 objects and adds them to the document by running
a process = step.

Or I=20 can make up a set of tags that declare what objects I want = to
retrieve=20 (including a list of conditional and/or sort criteria expressed
by = multiple=20 nested tags, for example).  In that case, I would write = a
logicsheet=20 (xsl stylesheet) that matches those tags and transforms them
into = maki tags=20 that execute and evaluate the Python code necessary to
retrieve those = objects.  My input XML documents can then contain my = custom
tags, and I=20 can pass the document through a stylesheet step that replaces
those = tags with=20 the maki tags, then pass that output into a process step.

If you = use a=20 logicsheet approach like this, you can achieve a high degree
of = content/logic=20 separation, since your input xml documents declare what
content you = want and=20 leave it up to your logicsheet to actually do the
work to get the=20 content.
 
[Alessandro = Bottoni]
Maki could became the core of a future, = full-blown=20 "portal system", like PHPNuke or ezPublish. This depends strongly on the = possibility to develop add-ons, plug-ins, modules and extensions in a = easy and=20 fast way. For this reason, I think that the adoption of this=20 stylesheet/taglib-oriented approach is crucial for the future of Maki. = Can I=20 suggest you to develop a small example of such a solution? This would = help us a=20 lot in understanding the implementation details and in keeping ourselves = coherent with the existing architecture.

maki doesn't force you = to do it=20 either way.  You have the flexibility to
decide what best suits = your=20 needs.

In general I tried to write maki such that it would be = flexible=20 and not
force any particular style of = usage.

>
> 2)=20 On the basis of Maki, it would be a very good idea to develop a=20 "Portal
> system" like "Cocoon Portal" (see:
> = http://www.need-a-cake.com/stories/2002/02/14/cocoonPortalFirstL= ook.html).
>=20 This would make much easier and faster to create Python/XML/Maki-based=20 web
> sites and would allow for a wider acceptance of these = technologies. Anybody
> is thinking/working on such a=20 system?

That looks pretty neat.  I'm sure one could = create=20 something similar on
top of maki/mod_python.  I haven't thought = about it=20 myself (and don't
really have the time or immediate need = to).
 
[Alessandro = Bottoni]
I think that a system like "Cocoon = portal" is what=20 the real-world web developers really need (python-based, of course...). = They do=20 not have time to study a complex XML-based system, like Cocoon, and = develop a=20 web application from scratch. They need a full-blown, empty portal that = they can=20 easily install and adapt to their specific needs. That is exactly what = PHPNuke=20 and ezPublish give them at the moment. I will try=20 to develop such a system, using Maki as a basis, as soon as I will = have=20 some more freetime (currently, I'm involved in a very demanding,=20 security-related project. I have no time for anything else). I will keep = you=20 (and the other, possibly interested, people in the list) up-to-date = about this=20 project. If someone else is fascinated by this idea, please do not wait = for me:=20 I could be blocked for months...

>
> 3) Does = anybody=20 use Maki in a production environment?

So far I've only used = it in a=20 production capacity for intranets, although
I'm in the process of = creating a=20 rather large scale public site on it.
Whenever that goes live (which = won't be=20 until late summer or early fall)
I'll most likely announce it on the = maki=20 homepage.

> How about performance
> and=20 stability?

maki itself seems to be quite stable if the = software it=20 depends on
(mod_python, Python, and whatever xslt extension(s) you = use) are=20 stable
and installed correctly.
Similar with performance...  = If your=20 xslt processor is fast and the Python
code your pages execute is = fast, then=20 your site should perform well.

libxslt is the fastest xslt = processor I've=20 used under Python so far.
Unfortunately at the moment I am having = trouble=20 trying to use it with
maki.  Hopefully this will clear up soon = as=20 development on the two Python
interfaces to libxslt continues.  = In the=20 meantime, I'm using Sablotron and
it's pretty = speedy.

Regarding speed=20 of Python code, I'm finding that trying to achieve high
performance = and at=20 the same time achieve a high separation of content and
logic can be=20 tricky.  Adding layers of abstraction to your code tends to
make = it=20 slower.  Logicsheets can hide a lot of the complexity, but = become
rather=20 complex themselves if the code they make calls to is not=20 very
abstract.
 
[Alessandro = Bottoni]
I expected it: Content/Style/Logic = separation came=20 at a cost. In any case, Python-based systems seems to be faster than = java-based=20 ones, like Cocoon.

To wrap up, you are taking a risk by using = maki (since=20 I haven't even
deployed it yet on a large scale public site), but I = hope that=20 doesn't
prevent people from trying it out.  It should only get = better=20 over time.

- Sam Brauer
http://maki.sf.net/
 
[Alessandro = Bottoni]
I can just speak for myself but I think = that Maki=20 is already giving us what we actually need: a robust, elegant, modular = system=20 that we can use as a skeleton for developing a full-blown portal system = like=20 "Cocoon portal", PHPNuke, ezPublish and so on. If we can leave most of = the=20 "general purpose" tasks (XML/XSLT management, session management, DB = abstraction=20 layer, etc...) to Maki, we can focus on creating task-specific "modules" = (article publishing, poll management, calendar, etc...) that will = eventually sum=20 up to a real, full-featured portal system. That would be a really great=20 achievement, in my opinion.
 
Thanks again for this = gift.
 
Alessandro=20 Bottoni
------=_NextPart_000_0011_01C1BA2D.DBB7B930-- From abottoni@quadrante.com Wed Feb 20 15:52:33 2002 From: abottoni@quadrante.com (Alessandro Bottoni) Date: Wed, 20 Feb 2002 16:52:33 +0100 Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? Message-ID: <001d01c1ba26$9d24e910$7d00a8c0@intranet.quadrante.com> Messaggio in formato MIME composto da più parti. ------=_NextPart_000_001A_01C1BA2E.FDE882E0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > I'm sure that all of you know "Cocoon", the very nice XML-Java-based = web=20 > server created by the Apache group (http://xml.apache.org/cocoon). >=20 > Given that the Python community explicitly proposes Python as "the = premier=20 > language for XML processing" (see: http://www.python.org/sigs/xml-sig/ = ), I=20 > would expect to see an XML-based web server, like Cocoon, amongst the=20 > downloadables. >=20 > Hence, I wonder if any Python programmer has ever evaluated the = possibility=20 > to create an XML-based, dynamic, web server using Python and the = 4Suite=20 > software (http://4suite.org). If so, could anybody give me = instructions for=20 > finding that software and/or the related documentation? Actually, 4Suite includes all this: a Web server (plus FTP server) that=20 provides XML, XSLT, XPath, RDF, Xlink, XPointer, XUpdate, etc. = processing=20 built-in, all available from an XSLT or Python API. [Alessandro Bottoni] Mmmhhh.. interesting. I knew 4Suite already but I did not worked with it = for a real project. I was convinced that it just supplied a set of = XML-oriented tools. I will study it better. It could be a good starting = point for my needs. Thanks Alessandro Bottoni ------=_NextPart_000_001A_01C1BA2E.FDE882E0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
> I'm sure that all of you know = "Cocoon", the=20 very nice XML-Java-based web
> server created by the = Apache group=20 (http://xml.apache.org/cocoon).<= BR>>=20
> Given that the Python community explicitly proposes = Python as=20 "the premier
> language for XML processing" (see: http://www.python.org/sigs/x= ml-sig/=20 ), I
> would expect to see an XML-based web server, like = Cocoon,=20 amongst the
> downloadables.
> =
> Hence,=20 I wonder if any Python programmer has ever evaluated the possibility=20
> to create an XML-based, = dynamic, web=20 server using Python and the 4Suite
> software (http://4suite.org). If so, could anybody = give me=20 instructions for
> finding that software and/or the = related=20 documentation?

Actually, 4Suite includes all this: a Web = server (plus=20 FTP server) that
provides XML, XSLT, XPath, RDF, Xlink, XPointer, = XUpdate,=20 etc. processing
built-in, all available from an XSLT or Python=20 API.
 
[Alessandro Bottoni]
Mmmhhh.. interesting. I knew 4Suite = already but I=20 did not worked with it for a real project. I was convinced that it just = supplied=20 a set of XML-oriented tools. I will study it better. It could be a = good=20 starting point for my needs.
 
Thanks
 
Alessandro=20 Bottoni

------=_NextPart_000_001A_01C1BA2E.FDE882E0-- From mal@lemburg.com Wed Feb 20 15:49:23 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 20 Feb 2002 16:49:23 +0100 Subject: [XML-SIG] Re: Ideas for web/ package References: <200202201113.g1KBDcP19174@localhost.localdomain> Message-ID: <3C73C583.7A143C58@lemburg.com> Uche Ogbuji wrote: > > > Just thought I'd drop a note: > > > > You may be interested in the mxURL package for dealing with URL, > > URIs or whatever you call them ;-): > > I hadn't been aware of this until you mentioned it earlier in the thread. > > Indeed, I think URL versus URI is the crux of the problem. We do need a > UriResolver to be easily extensible to non-URL schemes, in particular URNs > (most often UUID-based URNs). > > It looks as if mxURL has some extensibility built in, but I don't see in the > API how to plug in URN catalogs. It's basically a reimplementation of urlparse in C. You can register new schemes which then define how to parse the string, but not introduce new parts to be parsed (without hacking the C code). > I suppose one could write a more general URI resolver and delegate URL-based > schemes to mxURL... Probably. I mostly use it for URLs hence the name. -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From Nicolas.Chauvat@logilab.fr Wed Feb 20 16:01:26 2002 From: Nicolas.Chauvat@logilab.fr (Nicolas Chauvat) Date: Wed, 20 Feb 2002 17:01:26 +0100 (CET) Subject: [XML-SIG] Re: Maki: great! In-Reply-To: <001401c1ba25$7bbf3790$7d00a8c0@intranet.quadrante.com> Message-ID: > [Alessandro Bottoni] I can just speak for myself but I think that Maki > is already giving us what we actually need: a robust, elegant, modular > system that we can use as a skeleton for developing a full-blown > portal system like "Cocoon portal", PHPNuke, ezPublish and so on. If > we can leave most of the "general purpose" tasks (XML/XSLT management, > session management, DB abstraction layer, etc...) to Maki, we can > focus on creating task-specific "modules" (article publishing, poll > management, calendar, etc...) that will eventually sum up to a real, > full-featured portal system. That would be a really great achievement, > in my opinion. Others have been there already. Look at Zope (Portal, components, etc.) and 4SuiteServer. Setting up a portal, integrating services, metadata, databases, etc. everything is there. -- Nicolas Chauvat http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France) From Nicolas.Chauvat@logilab.fr Wed Feb 20 16:26:53 2002 From: Nicolas.Chauvat@logilab.fr (Nicolas Chauvat) Date: Wed, 20 Feb 2002 17:26:53 +0100 (CET) Subject: [XML-SIG] SOAP Skepticism In-Reply-To: <3C72B142.284BB6AA@prescod.net> Message-ID: > We have to acknowledge the world as it is and not as we would like it to > be. That's why I've started a service description language for services > based on XML+HTTP. IMHO, static descriptions of message formats (i.e. services schemas) are good. I always liked programming by contract, which, if you are to do checking, doesn't stop halfway as types and method signatures do. I'll go read it. -- Nicolas Chauvat http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France) From uche.ogbuji@fourthought.com Wed Feb 20 18:17:51 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Wed, 20 Feb 2002 11:17:51 -0700 Subject: [XML-SIG] SOAP Skepticism In-Reply-To: Message from Nicolas Chauvat of "Wed, 20 Feb 2002 17:26:53 +0100." Message-ID: <200202201817.g1KIHp723149@localhost.localdomain> > > We have to acknowledge the world as it is and not as we would like it= to > > be. That's why I've started a service description language for servic= es > > based on XML+HTTP. > = > IMHO, static descriptions of message formats (i.e. services schemas) ar= e > good. I always liked programming by contract, which, if you are to do > checking, doesn't stop halfway as types and method signatures do. I'll = go > read it. Absolutely. Types as used in most languages, databases, etc, are just = apalling hacks in place of proper programming by contract. And it's not = as if = it hasn't been proven that PBC can work practically (you don't really nee= d a = mathematical proof of correctness for each function: just the primitives = to = meet the 80/20 rule). -- = Uche Ogbuji Principal Consultant uche.ogbuji@fourthought.com +1 303 583 9900 x 101 Fourthought, Inc. http://Fourthought.com = 4735 East Walnut St, Boulder, CO 80301-2537, USA XML strategy, XML tools (http://4Suite.org), knowledge management From sam@webslingerZ.com Wed Feb 20 18:45:21 2002 From: sam@webslingerZ.com (Sam Brauer) Date: Wed, 20 Feb 2002 13:45:21 -0500 (EST) Subject: [XML-SIG] Re: Re: Maki: great! In-Reply-To: Message-ID: > From: "Alessandro Bottoni" > To: > Subject: [XML-SIG] Re: Maki: great! > Date: Wed, 20 Feb 2002 16:44:26 +0100 > > Messaggio in formato MIME composto da pi=F9 parti. > > ------=3D_NextPart_000_0011_01C1BA2D.DBB7B930 > Content-Type: text/plain; > =09charset=3D"iso-8859-1" > Content-Transfer-Encoding: quoted-printable > > See my comments below... > > > Date: Tue, 19 Feb 2002 14:51:39 +0100 > > To: xml-sig@python.org > > From: Alessandro Bottoni > > Subject: [XML-SIG] Maki: great! > > > > I just discovered Maki (http://maki.sourceforge.net/), thanks to =3D > Nicolas > > Chauvat. Please, allow me to congratulate Sam Brauer for this very > > interesting project and thank him for having donated this high-quality > > software to the public domain. > > Thanks for your enthusiastic comments! > I'm a little embarrassed (as I feel that the documentation, examples, =3D > and > packaging of the project are less than adequate). > > [Alessandro Bottoni] > Everything can be improved but I think you did a wonderful work so far = =3D > :-) > > > > > Now, a few comments: > > 1) I found interesting the idea to use embedded Python code for =3D > creating > > dinamic XML pages. I think this solution is simpler and probably =3D > faster to > > process than the complicated XSP (XML Server Pages) used by Cocoon =3D > (see: > > http://xml.apache.org/cocoon) but I would like to hear the opinion of = =3D > the > > other partecipants of this list regarding this topic. Is an embedded > > scripting language better than a XML-compliant page format for =3D > creating > > dinamic web pages? How about content/logic separation? How about =3D > developer > > friendliness? > > I find it to be quite developer friendly. You can make changes and test > them very quickly, and you have the full power of Python at your =3D > disposal > to produce the dynamic content. > > [Alessandro Bottoni] > I agree completely. In particular, having the full power of Python at =3D > your fingertips makes Maki much more flexible and powerful than most =3D > PHP-based systems. > > Regarding content and logic separation, you can make them quite separate > by writing logicsheets (or "taglibs") that are specific to your project. > > [Alessandro Bottoni] > Great! That is exactly what I hoped to hear from you! > > For example, on a project I am working on now I have a database > abstraction layer that maps Python objects to tables in a SQL database. = =3D > I > have written various methods that allow me to retrieve objects that =3D > match > certain conditions, and each class has a method toSaxEvents(handler) =3D > that > writes out a representation of the object via SAX events. (When maki > evaluates objects to serialize them into an XML document, it tries to =3D > call > toSaxEvents() if the object has such a method, otherwise it uses a > default method that handles built-in Python types in a sane manner and > calls str() on objects without a toSaxEvents method.) > > [Alessandro Bottoni] > Quite interesting... Do you plan to make this module avalaible as open = =3D > source software, as well? It's a bit too quirky. I don't think it's generic enough that other people could easily use it. I wrote my own only because I never found a database abstraction layer that really suited me. If you look around, there are a lot of database abstraction api's. If you find one that you like, you can write a wrapper around it or subclass it such that the storable objects have a toSaxEvents() method. Then write a logicsheet that uses that api, and you're set to use it with maki. > > In xml documents to be processed by maki, I _could_ directly embed =3D > Python > code that operates on the objects and adds them to the document by =3D > running > a process step. > > Or I can make up a set of tags that declare what objects I want to > retrieve (including a list of conditional and/or sort criteria expressed > by multiple nested tags, for example). In that case, I would write a > logicsheet (xsl stylesheet) that matches those tags and transforms them > into maki tags that execute and evaluate the Python code necessary to > retrieve those objects. My input XML documents can then contain my =3D > custom > tags, and I can pass the document through a stylesheet step that =3D > replaces > those tags with the maki tags, then pass that output into a process =3D > step. > > If you use a logicsheet approach like this, you can achieve a high =3D > degree > of content/logic separation, since your input xml documents declare what > content you want and leave it up to your logicsheet to actually do the > work to get the content. > > [Alessandro Bottoni] > Maki could became the core of a future, full-blown "portal system", like = =3D > PHPNuke or ezPublish. This depends strongly on the possibility to =3D > develop add-ons, plug-ins, modules and extensions in a easy and fast =3D > way. For this reason, I think that the adoption of this =3D > stylesheet/taglib-oriented approach is crucial for the future of Maki. = =3D > Can I suggest you to develop a small example of such a solution? This =3D > would help us a lot in understanding the implementation details and in = =3D > keeping ourselves coherent with the existing architecture. maki comes with some example logicsheets. One provides a set of tags that allows you to embed SQL queries in your pages and inserts the results as several nested elements in the page. Another provides a tag set for obtaining data from an HTTP request. Example pages that use both of these are installed with maki. I would like to include more examples, but nothing so elaborate as a portal. > > maki doesn't force you to do it either way. You have the flexibility to > decide what best suits your needs. > > In general I tried to write maki such that it would be flexible and not > force any particular style of usage. > > > > > 2) On the basis of Maki, it would be a very good idea to develop a =3D > "Portal > > system" like "Cocoon Portal" (see: > > =3D > http://www.need-a-cake.com/stories/2002/02/14/cocoonPortalFirstLook.html)= =3D > . > > This would make much easier and faster to create Python/XML/Maki-based = =3D > web > > sites and would allow for a wider acceptance of these technologies. =3D > Anybody > > is thinking/working on such a system? > > That looks pretty neat. I'm sure one could create something similar on > top of maki/mod_python. I haven't thought about it myself (and don't > really have the time or immediate need to). > > [Alessandro Bottoni] > I think that a system like "Cocoon portal" is what the real-world web =3D > developers really need (python-based, of course...). They do not have =3D > time to study a complex XML-based system, like Cocoon, and develop a =3D > web application from scratch. They need a full-blown, empty portal that = =3D > they can easily install and adapt to their specific needs. That is =3D > exactly what PHPNuke and ezPublish give them at the moment. I will try = =3D > to develop such a system, using Maki as a basis, as soon as I will have = =3D > some more freetime (currently, I'm involved in a very demanding, =3D > security-related project. I have no time for anything else). I will keep = =3D > you (and the other, possibly interested, people in the list) up-to-date = =3D > about this project. If someone else is fascinated by this idea, please = =3D > do not wait for me: I could be blocked for months... As other people have pointed out on this list, there are already Python-based portal systems you could use. To write a maki-based one that's comparable would not be a trivial undertaking. I'm sure it could be done, but I'm not going to do it unless I need to create a portal site for a client and find that the existing systems don't suit my needs. If you write one, I would definitely check it out :) > > > > > 3) Does anybody use Maki in a production environment? > > So far I've only used it in a production capacity for intranets, =3D > although > I'm in the process of creating a rather large scale public site on it. > Whenever that goes live (which won't be until late summer or early fall) > I'll most likely announce it on the maki homepage. > > > How about performance > > and stability? > > maki itself seems to be quite stable if the software it depends on > (mod_python, Python, and whatever xslt extension(s) you use) are stable > and installed correctly. > Similar with performance... If your xslt processor is fast and the =3D > Python > code your pages execute is fast, then your site should perform well. > > libxslt is the fastest xslt processor I've used under Python so far. > Unfortunately at the moment I am having trouble trying to use it with > maki. Hopefully this will clear up soon as development on the two =3D > Python > interfaces to libxslt continues. In the meantime, I'm using Sablotron = =3D > and > it's pretty speedy. > > Regarding speed of Python code, I'm finding that trying to achieve high > performance and at the same time achieve a high separation of content =3D > and > logic can be tricky. Adding layers of abstraction to your code tends to > make it slower. Logicsheets can hide a lot of the complexity, but =3D > become > rather complex themselves if the code they make calls to is not very > abstract. > > [Alessandro Bottoni] > I expected it: Content/Style/Logic separation came at a cost. In any =3D > case, Python-based systems seems to be faster than java-based ones, like = =3D > Cocoon. > > To wrap up, you are taking a risk by using maki (since I haven't even > deployed it yet on a large scale public site), but I hope that doesn't > prevent people from trying it out. It should only get better over time. > > - Sam Brauer > http://maki.sf.net/ > > [Alessandro Bottoni] > I can just speak for myself but I think that Maki is already giving us = =3D > what we actually need: a robust, elegant, modular system that we can use = =3D > as a skeleton for developing a full-blown portal system like "Cocoon =3D > portal", PHPNuke, ezPublish and so on. If we can leave most of the =3D > "general purpose" tasks (XML/XSLT management, session management, DB =3D > abstraction layer, etc...) to Maki, we can focus on creating =3D > task-specific "modules" (article publishing, poll management, calendar, = =3D > etc...) that will eventually sum up to a real, full-featured portal =3D > system. That would be a really great achievement, in my opinion. > maki does handle running the XSL transformers for you, and allows you to run your XML through SAX-based processors (either custom ones that you write or the included one that evaluates embedded Python code), and provides a rule-based system that allows you to configure the steps to apply to a given file, and does all of the I/O to handle the HTTP transaction and read the XML/XSL files, and cache output. Any other functionality (such as session management) is outside of the scope that I want for maki. The example SQL logicsheet can be used as a simple read-only database abstraction layer, but isn't intended to be _the_ way to interact with SQL databases from maki. I'm using maki right now to do a site that has all the tasks you listed (article publishing, poll management, calendar, etc). What I like about maki is that it provides a great framework on which to build these things, and it's generic enough that one could build almost any type of webapp on it. But writing webapps that are generally reusable for many websites is hard. The next time I have a need for an article publishing system, I'll probably use the one I'm writing now as a starting point. But I'm sure I'll have to make modifications so that it suits the needs of the next project. Though both sites have a concept of articles and a need to publish them, each site may have very different concepts of what constitutes an article, or how articles should be categorized, or how articles can be related to other articles, etc. Gee... I'm getting depressed now. On the positive side, at least there's job security in knowing that there's always more custom work to do ;) - Sam From fdrake@acm.org Wed Feb 20 19:21:27 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Wed, 20 Feb 2002 14:21:27 -0500 Subject: [XML-SIG] minidom enhancements progress Message-ID: <15475.63287.127242.796510@grendel.zope.com> Well, I made the mistake of making sure I was using the latest Load/Save draft before starting to check in my changes to minidom... Needless to say, the world had changed on my a bit. ;-) I've updated my code to support some of the changes, but not all of them. This shouldn't be an issue for the actual DOM implementation itself. There are a few issues I'm going to bring up on the www-dom list, hopefully I'll get that email off today. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From fdrake@acm.org Wed Feb 20 20:38:18 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Wed, 20 Feb 2002 15:38:18 -0500 Subject: [XML-SIG] DOM Level 3 Load/Save comments Message-ID: <15476.2362.375593.900479@grendel.zope.com> I've sent my list of comments on the Load/Save draft to the appropriate W3C list: http://lists.w3.org/Archives/Public/www-dom/2002JanMar/0193.html -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From pyxml@xhaus.com Wed Feb 20 17:14:28 2002 From: pyxml@xhaus.com (Alan Kennedy) Date: Wed, 20 Feb 2002 17:14:28 EST5EDT Subject: [XML-SIG] Re: Ideas for web/ package Message-ID: <200202202225.RAA137368@spool6.valueweb.net> > You may be interested in the mxURL package for dealing > with URL, URIs or whatever you call them ;-): > > http://www.egenix.com/files/python/mxURL.html Marc-André, Just a quick question: Is the "normalize" that is mentioned in the mxURL documentation the same "normalization" as mentioned in section 6: "URI Normalization and Equivalence" of rfc2396? Regards, Alan. --------------------------------------------- This message was sent using WebMail by CyberGate. http://www.gate.net/webmail From fdrake@acm.org Wed Feb 20 22:33:37 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Wed, 20 Feb 2002 17:33:37 -0500 Subject: [XML-SIG] a package for minidom Message-ID: <15476.9281.956694.714542@grendel.zope.com> As the support code for minidom grows (because additional DOM features are implemented), it becomes increasingly valuable to allow the implementation to be placed in more than one module simply to make the code easier to manage. As additional minidom implementation modules are created, it will be easier to maintain if the modules are separated from the 4DOM implemtation by a package bondary. I propose creating a new package, xml.dom.mini, which contains the following modules to start with: xml.dom.mini.corexml # the current/enhanced xml.dom.minidom xml.dom.mini.traversal # the current xml.dom.minitraversal xml.dom.mini.loadsave # the basic interface for Load/Save xml.dom.mini.expatbuilder # very tedious Expat-specific code xml.dom.mini.compat # Python-version compatibility code The following modules would become wrappers around the new package for backward compatibility: xml.dom.minidom # from xml.dom.mini.corexml import * xml.dom.minitraversal # from xml.dom.mini.traversal import * Comments? -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From martin@v.loewis.de Wed Feb 20 22:52:30 2002 From: martin@v.loewis.de (Martin v. Loewis) Date: 20 Feb 2002 23:52:30 +0100 Subject: [XML-SIG] a package for minidom In-Reply-To: <15476.9281.956694.714542@grendel.zope.com> References: <15476.9281.956694.714542@grendel.zope.com> Message-ID: "Fred L. Drake, Jr." writes: > As the support code for minidom grows (because additional DOM features > are implemented), it becomes increasingly valuable to allow the > implementation to be placed in more than one module simply to make the > code easier to manage. Is that the only rationale? I fear overstructuring, and I'd like to avoid increasing the number of package names that users need to be aware of. > I propose creating a new package, xml.dom.mini, which contains the > following modules to start with: > > xml.dom.mini.corexml # the current/enhanced xml.dom.minidom This could continue to live in xml.dom.minidom, and needs to anyway, for compatibility. > xml.dom.mini.traversal # the current xml.dom.minitraversal This also needs to live in minitraversal, for compatibility. > xml.dom.mini.loadsave # the basic interface for Load/Save > xml.dom.mini.expatbuilder # very tedious Expat-specific code I'd put those in xml.dom.expatreader, or some such, parallel to xml.sax.expatreader. I certainly hope that the expatbuilder goes into Python proper eventually, and I see no point in draining xml.dom to a single mini subpackage in Python core. Having thirty some modules in xml.dom does not scare me; Python's Lib directory has roughly 170 modules in a single directly, yet nobody is scared. Regards, Martin From fdrake@acm.org Wed Feb 20 23:13:18 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Wed, 20 Feb 2002 18:13:18 -0500 Subject: [XML-SIG] a package for minidom In-Reply-To: References: <15476.9281.956694.714542@grendel.zope.com> Message-ID: <15476.11662.17477.749432@grendel.zope.com> Martin v. Loewis writes: > Is that the only rationale? I fear overstructuring, and I'd like to > avoid increasing the number of package names that users need to be > aware of. Actually, I'd expect users to continue using one of the getDOMImplementation() functions, or just xml.dom.minidom.parse*(). > I'd put those in xml.dom.expatreader, or some such, parallel to > xml.sax.expatreader. I certainly hope that the expatbuilder goes into > Python proper eventually, This is my hope and intention. > and I see no point in draining xml.dom to a > single mini subpackage in Python core. I consider this a minor detail; it doesn't bother me. > Having thirty some modules in xml.dom does not scare me; Python's Lib > directory has roughly 170 modules in a single directly, yet nobody is > scared. Er, actually, an ever-increasing number of people seem to dislike the current situation, and would like to see the standard library "packagized". I certainly find it annoying to have so much stuff in the global module namespace, including many modules which are simply implementation details. In the interest of getting on with it, I'll concede. In the long run, There Can Be Only One, so it's OK if it takes a while. ;-) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From Mike.Olson@fourthought.com Thu Feb 21 00:38:43 2002 From: Mike.Olson@fourthought.com (Mike Olson) Date: 20 Feb 2002 17:38:43 -0700 Subject: [XML-SIG] Cocoon-like, XML-Python-based web server? In-Reply-To: <200202201058.g1KAwnh18688@localhost.localdomain> References: <200202201058.g1KAwnh18688@localhost.localdomain> Message-ID: <1014251924.3330.49.camel@penny.fourthought.com> On Wed, 2002-02-20 at 03:58, Uche Ogbuji wrote: > > On Tue, Feb 19, 2002 at 09:15:29PM -0700, Uche Ogbuji wrote: > > > Actually, 4Suite includes all this: a Web server (plus FTP server) that > > > provides XML, XSLT, XPath, RDF, Xlink, XPointer, XUpdate, etc. processing > > > built-in, all available from an XSLT or Python API. > > > > BTW, what's the current state of your XPointer implementation, > > do you support ranges and the xmlns() scheme ? > > We're never likely to support ranges. In fact, in general, I'm part way on an > effort to make 4XPointer more aptly named 4FIXPtr. > > As for namespace initialization, I think that is indeed supported, though it's > been a while since I've checked (the extant code isn't my sandbox). We did, however, note sure how recently anyone has exercised the code. Mike > > > -- > Uche Ogbuji Principal Consultant > uche.ogbuji@fourthought.com +1 303 583 9900 x 101 > Fourthought, Inc. http://Fourthought.com > 4735 East Walnut St, Boulder, CO 80301-2537, USA > XML strategy, XML tools (http://4Suite.org), knowledge management > > > > _______________________________________________ > XML-SIG maillist - XML-SIG@python.org > http://mail.python.org/mailman/listinfo/xml-sig -- Mike Olson Principal Consultant mike.olson@fourthought.com +1 303 583 9900 x 102 Fourthought, Inc. http://Fourthought.com 4735 East Walnut St, http://4Suite.org Boulder, CO 80301-2537, USA XML strategy, XML tools, knowledge management From mal@lemburg.com Thu Feb 21 08:20:21 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Thu, 21 Feb 2002 09:20:21 +0100 Subject: [XML-SIG] Re: Ideas for web/ package References: <200202202225.RAA137368@spool6.valueweb.net> Message-ID: <3C74ADC5.7D99F866@lemburg.com> Alan Kennedy wrote: >=20 > > You may be interested in the mxURL package for dealing > > with URL, URIs or whatever you call them ;-): > > > > http://www.egenix.com/files/python/mxURL.html >=20 > Marc-Andr=E9, >=20 > Just a quick question: Is the "normalize" that is mentioned > in the mxURL documentation the same "normalization" as > mentioned in section 6: "URI Normalization and Equivalence" > of rfc2396? I guess so, but keep in mind that mxURL was crafted after=20 urlparse() and common sense :-) Seriously, mxURL will slowly move towards RFC 2396 and so the answer is "yes, but...". --=20 Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From abottoni@quadrante.com Thu Feb 21 10:14:30 2002 From: abottoni@quadrante.com (Alessandro Bottoni) Date: Thu, 21 Feb 2002 11:14:30 +0100 Subject: [XML-SIG] Re: Maki: great! References: Message-ID: <001e01c1bac0$8d29ab50$7d00a8c0@intranet.quadrante.com> See below... ----- Original Message ----- From: "Nicolas Chauvat" To: "Alessandro Bottoni" Cc: Sent: Wednesday, February 20, 2002 5:01 PM Subject: Re: [XML-SIG] Re: Maki: great! > > [Alessandro Bottoni] I can just speak for myself but I think that Maki > > is already giving us what we actually need: a robust, elegant, modular > > system that we can use as a skeleton for developing a full-blown > > portal system like "Cocoon portal", PHPNuke, ezPublish and so on. If > > we can leave most of the "general purpose" tasks (XML/XSLT management, > > session management, DB abstraction layer, etc...) to Maki, we can > > focus on creating task-specific "modules" (article publishing, poll > > management, calendar, etc...) that will eventually sum up to a real, > > full-featured portal system. That would be a really great achievement, > > in my opinion. > > Others have been there already. Look at Zope (Portal, components, etc.) > and 4SuiteServer. Setting up a portal, integrating services, metadata, > databases, etc. everything is there. [Alessandro Bottoni] Mmmmhhh..... interesting but.... Zope: I tried it a year or two ago. I abandoned it for these reasons: 1) The existing documentation was scarce and not very clear. I had to figure out how to use, configure and extend the system by trial and error. I had a hard time trying to understand the whole architecture of Zope and its "nuts and bolts". For sure, the current situation is much better. 2) You have to use its UI to create a site, configure and manage it. I was unable to find a way for creating pages, configuring the system and manage it with external programs/scripts or with external tools. In my production environment, it is not very realistic that every single operation on the system has to be performed by hand. 3) The OODB behind Zope is quite an obscure object and I found impossible to access it in any other way than using the supplied Zope GUI. That is quite limitating. Think to a massive "import" from an external data source. 4) The Zope architecture is quite monolithic. I was unable to understand how to extend it and how to create task-specific modules, probably and partially because of the scarce documentation. I'm sure the situation is much better now (You mentioned "components"...). Frankly, I will not give a second glance to Zope after this experience. There is better stuff out there, IMHO. 4SuiteServer 1) 4SuiteServer is a commercial application. When possible, I (we) avoid to use commercial application, even if the cost is very, very low. The reason of this (arguable) behavior is that is becoming a nightmare to manage the huge amount of license documents/criteria and the continuos stream of licence expiration/payment events in our (already chaotic) production environment. For what regards me, I abandoned M$ for the same reasons a long time ago. What I really need, is an open source, modular, easily configurable, easily extendable, pre-built portal. Something I can install in a couple of hour, prepare it for the customer in a couple of days and manage from script and external tools at my wish. Something that makes easy to create task-specific modules and that can accept new modules in a easy way. That is exactly what ezPublih gives me in the HTML field. That is what "Cocoon portal" promises in the XML arena. As long as I can see, nothing like that is available in the Python world, at the moment. In any case, thanks for the information. > > -- > Nicolas Chauvat > > http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France) > > From abottoni@quadrante.com Thu Feb 21 10:46:00 2002 From: abottoni@quadrante.com (Alessandro Bottoni) Date: Thu, 21 Feb 2002 11:46:00 +0100 Subject: [XML-SIG] Re: Re: Maki: great! References: Message-ID: <002b01c1bac4$f36fc7b0$7d00a8c0@intranet.quadrante.com> ----- Original Message ----- From: "Sam Brauer" To: Sent: Wednesday, February 20, 2002 7:45 PM Subject: [XML-SIG] Re: Re: Maki: great! [Sam Brauer] maki comes with some example logicsheets. One provides a set of tags that allows you to embed SQL queries in your pages and inserts the results as several nested elements in the page. Another provides a tag set for obtaining data from an HTTP request. Example pages that use both of these are installed with maki. I would like to include more examples, but nothing so elaborate as a portal. [Alessandro Bottoni] Of course! The existing examples will be enough (even if I did not study them yet...). [Sam Brauer] As other people have pointed out on this list, there are already Python-based portal systems you could use. To write a maki-based one that's comparable would not be a trivial undertaking. I'm sure it could be done, but I'm not going to do it unless I need to create a portal site for a client and find that the existing systems don't suit my needs. If you write one, I would definitely check it out :) [Alessandro Bottoni] I cannot agree. I looked for something like ezPublish (or even the less sophisticated PHPNuke) in the Python world for a while. There is nothing like that. WebWare is more an application server than a framework. You have to develop the whole web app from scratch and this is not what solves my problems. Zope is too "rigid" and complex. You have to study it in depth and this require time, the time we do not have. Moreover, it is quite hard to change or extend it. No, sorry, there is any real alternative to ezPublish or PHPNuke in the Python world, at the moment. Deeveloping a Maki based system is a hard task, for sure, but it is the kind of task we are payed for. I will largely prefer to develop a "archetypic portal" like ezPublish once rather than re-write it several times, with just small differencers. If you use ezPublish for a while you realize this: a good system like that can meet the needs of the customer quite often and change it is not very difficult. It is worth to show it to the customer and search a meeting point between what it can do (with small changes) and what the customer wants (normally, small UI toys and a gorgeous graphic). This saves a lot of time and efforts. [Sam Brauer] I'm using maki right now to do a site that has all the tasks you listed (article publishing, poll management, calendar, etc). What I like about maki is that it provides a great framework on which to build these things, and it's generic enough that one could build almost any type of webapp on it. But writing webapps that are generally reusable for many websites is hard. The next time I have a need for an article publishing system, I'll probably use the one I'm writing now as a starting point. But I'm sure I'll have to make modifications so that it suits the needs of the next project. Though both sites have a concept of articles and a need to publish them, each site may have very different concepts of what constitutes an article, or how articles should be categorized, or how articles can be related to other articles, etc. Gee... I'm getting depressed now. On the positive side, at least there's job security in knowing that there's always more custom work to do ;) [Alessandro Bottoni] I cannot agree, again :-) Making a "standard" web app is not so hard and ezPublish is a good demonstration of this concept. Most customers want the same features with just small differences. If your company has a skilled salesman, he/she can easily show a standard portal like ezPublish to the customer, discuss it with the customer and bring you a customer request that is 80-90% identical to ezPublish. Quite often, the most important change is the site graphics. Most features are already presents and you just have to configure them. Real code chenges are quite rare and, in any case, can be easily be implmented in a resuable way. That is a good care for depression, IMHO. See you Alessandro Bottoni From Nicolas.Chauvat@logilab.fr Thu Feb 21 12:23:06 2002 From: Nicolas.Chauvat@logilab.fr (Nicolas Chauvat) Date: Thu, 21 Feb 2002 13:23:06 +0100 (CET) Subject: [XML-SIG] Re: Maki: great! In-Reply-To: <001e01c1bac0$8d29ab50$7d00a8c0@intranet.quadrante.com> Message-ID: > Zope: > I tried it a year or two ago. I abandoned it for these reasons: > 1) The existing documentation was scarce and not very clear. I had to figure > out how to use, configure and extend the system by trial and error. I had a > hard time trying to understand the whole architecture of Zope and its "nuts > and bolts". For sure, the current situation is much better. Yes, Zope documentation is getting better, but I agree with you that it is really not good to have to spend so much time to get the "Zope Zen". I wrote Products for Zope and I'm not Zen about it... > 2) You have to use its UI to create a site, configure and manage it. I was > unable to find a way for creating pages, configuring the system and manage > it with external programs/scripts or with external tools. In my production > environment, it is not very realistic that every single operation on the > system has to be performed by hand. I agree with this too. > 3) The OODB behind Zope is quite an obscure object and I found impossible to > access it in any other way than using the supplied Zope GUI. That is quite > limitating. Think to a massive "import" from an external data source. Same impression here. But ZODB was recently spun-off as a stand-alone project and that may improve things. > 4) The Zope architecture is quite monolithic. I was unable to understand how > to extend it and how to create task-specific modules, probably and partially > because of the scarce documentation. I'm sure the situation is much better > now (You mentioned "components"...). Zope components (called Products in Zope talk) are a reality. They are far too difficult to build, IMHO, but I don't now of other Pyhon-based web framework that provide such reusability. I haven't used that many different ones, tho. As a conclusion, I think Zope needs much improvement indeed, but it's there and it works. Is it worth it to start completely from scratch ? > 4SuiteServer > 1) 4SuiteServer is a commercial application. When possible, I (we) avoid to > use commercial application, even if the cost is very, very low. The reason > of this (arguable) behavior is that is becoming a nightmare to manage the > huge amount of license documents/criteria and the continuos stream of > licence expiration/payment events in our (already chaotic) production > environment. For what regards me, I abandoned M$ for the same reasons a long > time ago. Beep [wrong answer]. 4SuiteServer is open source software ! Nothing there can be compared to M$ !!! > What I really need, is an open source, modular, easily configurable, easily > extendable, pre-built portal. Something I can install in a couple of hour, > prepare it for the customer in a couple of days and manage from script and > external tools at my wish. Something that makes easy to create task-specific > modules and that can accept new modules in a easy way. That is exactly what > ezPublih gives me in the HTML field. That is what "Cocoon portal" promises > in the XML arena. As long as I can see, nothing like that is available in > the Python world, at the moment. "Build it and they will come." :-) -- Nicolas Chauvat http://www.logilab.com - "Mais où est donc Ornicar ?" - LOGILAB, Paris (France) From veillard@redhat.com Thu Feb 21 12:38:20 2002 From: veillard@redhat.com (Daniel Veillard) Date: Thu, 21 Feb 2002 07:38:20 -0500 Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings Message-ID: <20020221073820.T25311@redhat.com> I don't know how this could fit in the xml-sig framework, but they are now available as part of the libxml2 and libxslt releases. More informations and small tutorial/examples at: http://xmlsoft.org/python.html and http://xmlsoft.org/XSLT/python.html You will notice how XPath and XSLT engines can be extended with functions written in Python. Of course the Python bindings inherit from the speed and strict adherence to the associated standard which are the key points of the underlying C libraries. The libxml2 conformance against the OASIS XML test suite is actually written as a Python script using the libxml2 module. Daniel -- Daniel Veillard | Red Hat Network https://rhn.redhat.com/ veillard@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ From walter@livinglogic.de Thu Feb 21 13:15:13 2002 From: walter@livinglogic.de (Walter =?ISO-8859-1?Q?D=F6rwald?=) Date: Thu, 21 Feb 2002 14:15:13 +0100 Subject: [XML-SIG] Re: Ideas for web/ package References: <200202202225.RAA137368@spool6.valueweb.net> <3C74ADC5.7D99F866@lemburg.com> Message-ID: <3C74F2E1.1010703@livinglogic.de> M.-A. Lemburg wrote: > Alan Kennedy wrote: > >>>You may be interested in the mxURL package for dealing >>>with URL, URIs or whatever you call them ;-): >>> >>> http://www.egenix.com/files/python/mxURL.html >>> >>Marc-André, >> >>Just a quick question: Is the "normalize" that is mentioned >>in the mxURL documentation the same "normalization" as >>mentioned in section 6: "URI Normalization and Equivalence" >>of rfc2396? >> > > I guess so, but keep in mind that mxURL was crafted after > urlparse() and common sense :-) > > Seriously, mxURL will slowly move towards RFC 2396 and > so the answer is "yes, but...". What I'd like to have is an RFC2396 compliant URL class, that has all the url components as assignable properties, i.e. something that can be used like: >>> u = URL("http://www.foo.com:81/foo;bar/bar;foo/baz?what#frag") >>> u.scheme 'http' >>> u.server 'www.foo.com:81' >>> u.host 'www.foo.com' >>> u.port 81 >>> u.path '/foo;bar/bar;foo/baz' >>> u.path_segments [['foo', 'bar'], ['bar', 'foo'], ['baz']] >>> u.query 'what' >>> u.fragment 'frag' >>> u.url 'http://www.foo.com:81/foo;bar/bar;foo/baz?what#frag' >>> u.path = "/gurk/hurz/" >>> u.path_segments [['gurk'], ['hurz'], ['']] >>> u.url 'http://www.foo.com:81/gurk/hurz/?what#frag' >>> del u.query >>> del u.fragment >>> u.scheme = "ftp" >>> u.server = "user@ftp.foo.org:2121" >>> u.url 'ftp://user@ftp.foo.org:2121/gurk/hurz/' >>> u.userinfo 'user' >>> u.host 'ftp.foo.org' >>> u.port 2121 >>> u.userinfo = "user2" >>> u.server 'user2@ftp.foo.org:2121' i.e. whenever a property for a non-terminal symbol from the RFC2396 BNF is set it will be split into its components and whenever one is accessed it will be reassembled from the components. This means that to get the functionality of urlparse.urlsplit() you simple set the property "url" and access the parts you need: "scheme", "userinfo", "host", "port", "path" etc. For the functionality of urlparse.urlunsplit() you set the simple properties and then use the value of the property "url". A quick hack that implements something like this can be found at ftp://ftp.livinglogic.de/pub/url.py Bye, Walter Dörwald -- Walter Dörwald · LivingLogic AG, Bayreuth/Germany · www.livinglogic.de From mal@lemburg.com Thu Feb 21 13:26:49 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Thu, 21 Feb 2002 14:26:49 +0100 Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings References: <20020221073820.T25311@redhat.com> Message-ID: <3C74F599.7CBFFD10@lemburg.com> Daniel Veillard wrote: > > I don't know how this could fit in the xml-sig framework, but they are now > available as part of the libxml2 and libxslt releases. More informations > and small tutorial/examples at: > http://xmlsoft.org/python.html > and > http://xmlsoft.org/XSLT/python.html > > You will notice how XPath and XSLT engines can be extended with functions > written in Python. > Of course the Python bindings inherit from the speed and strict adherence > to the associated standard which are the key points of the underlying C > libraries. The libxml2 conformance against the OASIS XML test suite is > actually written as a Python script using the libxml2 module. I've downloaded both the libxml2 and libxslt libs, but it's not clear to me where to find the Python extensions (there's some mention of them in libxslt, but nothing in libxml2). Ideal would be to have them as distutils setup.py style packages, so that it is possible to install them without having to compile the libs themselves. Also, I'm a little unsure how the David Kuhlman Python extensions fit into the picture: are they no longer needed or do they provide extra functionality ? Thanks, -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From mal@lemburg.com Thu Feb 21 13:33:40 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Thu, 21 Feb 2002 14:33:40 +0100 Subject: [XML-SIG] Re: Ideas for web/ package References: <200202202225.RAA137368@spool6.valueweb.net> <3C74ADC5.7D99F866@lemburg.com> <3C74F2E1.1010703@livinglogic.de> Message-ID: <3C74F734.17F3BB93@lemburg.com> Walter D=F6rwald wrote: >=20 > M.-A. Lemburg wrote: > > Seriously, mxURL will slowly move towards RFC 2396 and > > so the answer is "yes, but...". >=20 > What I'd like to have is an RFC2396 compliant URL class, > that has all the url components as assignable properties, > ... mxURL provides an immutable type, so assigment to attributes is not possible. However, you can use an existing URL object to construct a new one out of it: the .rebuild() method allows to do this. Something I might add in the future is support for what you've called path_segments (with the possibility to assign parameters to all path segments, not just the last one as is currently implemented in mxURL). I've never actually seen=20 it in use on web-pages and didn't even know about this possibility when I wrote mxURL. --=20 Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From veillard@redhat.com Thu Feb 21 13:47:05 2002 From: veillard@redhat.com (Daniel Veillard) Date: Thu, 21 Feb 2002 08:47:05 -0500 Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings In-Reply-To: <3C74F599.7CBFFD10@lemburg.com>; from mal@lemburg.com on Thu, Feb 21, 2002 at 02:26:49PM +0100 References: <20020221073820.T25311@redhat.com> <3C74F599.7CBFFD10@lemburg.com> Message-ID: <20020221084705.U25311@redhat.com> On Thu, Feb 21, 2002 at 02:26:49PM +0100, M.-A. Lemburg wrote: > I've downloaded both the libxml2 and libxslt libs, but it's > not clear to me where to find the Python extensions (there's > some mention of them in libxslt, but nothing in libxml2). In the python subdir in the source tree > Ideal would be to have them as distutils setup.py style > packages, so that it is possible to install them without > having to compile the libs themselves. Hum, a lot of them are actually generated, and then need some preprocessing, the stubs for example are not part of the archives (but build with a python script). This would basically amount to rewrite the python/Makefile.am with a different facility. The key point is that I'm not used to setup.py, it must have some knowledge of the C compiler flags for shared libs, the path to python binaries and associated paths, etc... Can you share a pointer describing this ? > Also, I'm a little unsure how the David Kuhlman Python > extensions fit into the picture: are they no longer needed > or do they provide extra functionality ? They are not needed, I learned from David's binding but the bindings are very different. Mine are automatically generated from a strict definition of the libraries APIs (with a bit of glue of course). Daniel -- Daniel Veillard | Red Hat Network https://rhn.redhat.com/ veillard@redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ From tpassin@comcast.net Thu Feb 21 13:55:42 2002 From: tpassin@comcast.net (Thomas B. Passin) Date: Thu, 21 Feb 2002 08:55:42 -0500 Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings References: <20020221073820.T25311@redhat.com> Message-ID: <000c01c1badf$741f0d70$0bf13044@tbp> [Daniel Veillard] Love the work but hate the web site: 1) Pages with code like http://xmlsoft.org/python.html do not wrap, making them extremely annoying to read. They don't wrap because the code is in
 tags to prevent line breaks, which works for the code but makes the
rest of the page nearly unusable.  This is made worse by:

2) The fonts are too large and are fixed in size by the css.  So I can't
make them display smaller (well, I can with Opera but that's the only
browser that can demagnify).  I urge you to change the font specification to
use relative sizes (e.g., {font-size:110%}), and use smaller font sizes in
the 
 elements (say 80%).  This way the user will be able to change the
size of the display.   The way it is probably looks fine on a 21 in monitor
using 1280 resolution, but everyone doesn't have one.

Cheers,

Tom P



From mal@lemburg.com  Thu Feb 21 14:29:51 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Thu, 21 Feb 2002 15:29:51 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References: <20020221073820.T25311@redhat.com> <3C74F599.7CBFFD10@lemburg.com> <20020221084705.U25311@redhat.com>
Message-ID: <3C75045F.1B0702E6@lemburg.com>

Daniel Veillard wrote:
> 
> On Thu, Feb 21, 2002 at 02:26:49PM +0100, M.-A. Lemburg wrote:
> > I've downloaded both the libxml2 and libxslt libs, but it's
> > not clear to me where to find the Python extensions (there's
> > some mention of them in libxslt, but nothing in libxml2).
> 
>   In the python subdir in the source tree

I found that only in libxslt... not in libxml2. Am I missing
something, or is this intended ?
 
> > Ideal would be to have them as distutils setup.py style
> > packages, so that it is possible to install them without
> > having to compile the libs themselves.
> 
>   Hum, a lot of them are actually generated, and then need
> some preprocessing, the stubs for example are not part of the
> archives (but build with a python script). This would basically
> amount to rewrite the python/Makefile.am with a different facility.
> The key point is that I'm not used to setup.py, it must have
> some knowledge of the C compiler flags for shared libs, the path
> to python binaries and associated paths, etc... Can you share a
> pointer describing this ?

It's all here:

	http://www.python.org/sigs/distutils-sig/doc/

Note that distutils has its own way of finding the Python
paths.

Providing paths to various files needed from libxml2/xslt
can be done by either automatic lookup or customizing 
the build_ext command.

If you can provide the readily built .c and .h files,
it should be no problem creating a setup.py files which
then does the rest.

If you need help, just ask (preferrably on the 
distutils-sig or me directly).

> > Also, I'm a little unsure how the David Kuhlman Python
> > extensions fit into the picture: are they no longer needed
> > or do they provide extra functionality ?
> 
>    They are not needed, I learned from David's binding but
> the bindings are very different. Mine are automatically generated
> from a strict definition of the libraries APIs (with a bit of glue
> of course).

Ok.

One other thing which I couldn't find on the web-site:
what licenses are imposed on libxml2/xslt and the Python
bindings.

The .tar.gz files contain the GPL COPYING file and
the LGPL COPYING.LIB file but the various other
(source) files don't mention any license at all
and the README also points to a W3C license... a bit
confusing :-)

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From walter@livinglogic.de  Thu Feb 21 14:32:29 2002
From: walter@livinglogic.de (Walter =?ISO-8859-1?Q?D=F6rwald?=)
Date: Thu, 21 Feb 2002 15:32:29 +0100
Subject: [XML-SIG] Re: Ideas for web/ package
References: <200202202225.RAA137368@spool6.valueweb.net> <3C74ADC5.7D99F866@lemburg.com> <3C74F2E1.1010703@livinglogic.de> <3C74F734.17F3BB93@lemburg.com>
Message-ID: <3C7504FD.4080202@livinglogic.de>

M.-A. Lemburg wrote:

> Walter Dörwald wrote:
> 
>>M.-A. Lemburg wrote:
>> > Seriously, mxURL will slowly move towards RFC 2396 and
>> > so the answer is "yes, but...".
>>
>>What I'd like to have is an RFC2396 compliant URL class,
>>that has all the url components as assignable properties,
>>...
>>
> 
> mxURL provides an immutable type, so assigment to attributes
> is not possible. However, you can use an existing URL object
> to construct a new one out of it: the .rebuild() method
> allows to do this.

Yes, but instead of extracting the components I want to keep from
the old URL and stuff them back into a new URL, I find it simpler
to simple change the URL object in place, especially when it's
possible to change the object on any level.

> Something I might add in the future is support for what
> you've called path_segments (with the possibility to assign
> parameters to all path segments, not just the last one as
> is currently implemented in mxURL). I've never actually seen 
> it in use on web-pages and didn't even know about this
> possibility when I wrote mxURL.

It's part of RFC2396.

The terminology has slightly changed too: e.g. netloc has
changed to authority etc.

Bye,
    Walter Dörwald

-- 
Walter Dörwald · LivingLogic AG, Bayreuth/Germany · www.livinglogic.de



From veillard@redhat.com  Thu Feb 21 14:35:07 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 09:35:07 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <000c01c1badf$741f0d70$0bf13044@tbp>; from tpassin@comcast.net on Thu, Feb 21, 2002 at 08:55:42AM -0500
References: <20020221073820.T25311@redhat.com> <000c01c1badf$741f0d70$0bf13044@tbp>
Message-ID: <20020221093507.V25311@redhat.com>

On Thu, Feb 21, 2002 at 08:55:42AM -0500, Thomas B. Passin wrote:
> [Daniel Veillard]
> 
> Love the work

  thanks,

> but hate the web site:

  Arghh, sorry if we get off-topic there :-\

> 1) Pages with code like http://xmlsoft.org/python.html do not wrap, making
> them extremely annoying to read.  They don't wrap because the code is in
> 
 tags to prevent line breaks, which works for the code but makes the
> rest of the page nearly unusable.  This is made worse by:

  Any alternative to pre ? Code doesn't do it, width on pre seems
to get ignore and code with "white-space: pre" gives the same result for me.

> 2) The fonts are too large and are fixed in size by the css.  So I can't
> make them display smaller (well, I can with Opera but that's the only
> browser that can demagnify).

   Galeon provides that too.

> I urge you to change the font specification to
> use relative sizes (e.g., {font-size:110%}), and use smaller font sizes in
> the 
 elements (say 80%).  This way the user will be able to change the
> size of the display.   The way it is probably looks fine on a 21 in monitor
> using 1280 resolution, but everyone doesn't have one.

   Hum, each time I touch those CSS settings somemeone complains I 
should fix them in a different way... the good point is that I just need
to change them in the XSLT to fix the whole site:

------------------------
TD {font-size: 14pt; font-family: Verdana,Arial,Helvetica}
BODY {font-size: 14pt; font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-size: 20pt; font-family: Verdana,Arial,Helvetica}
H2 {font-size: 18pt; font-family: Verdana,Arial,Helvetica}
H3 {font-size: 16pt; font-family: Verdana,Arial,Helvetica}
------------------------

  Is removing all the font-size properties sufficient ?
I tried and it looks acceptable to me in term of size. But doesn't fix
the fact that 
 extends too much.
  What do you suggest ?

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From veillard@redhat.com  Thu Feb 21 14:40:42 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 09:40:42 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <3C75045F.1B0702E6@lemburg.com>; from mal@lemburg.com on Thu, Feb 21, 2002 at 03:29:51PM +0100
References: <20020221073820.T25311@redhat.com> <3C74F599.7CBFFD10@lemburg.com> <20020221084705.U25311@redhat.com> <3C75045F.1B0702E6@lemburg.com>
Message-ID: <20020221094042.W25311@redhat.com>

On Thu, Feb 21, 2002 at 03:29:51PM +0100, M.-A. Lemburg wrote:
> Daniel Veillard wrote:
> > 
> > On Thu, Feb 21, 2002 at 02:26:49PM +0100, M.-A. Lemburg wrote:
> > > I've downloaded both the libxml2 and libxslt libs, but it's
> > > not clear to me where to find the Python extensions (there's
> > > some mention of them in libxslt, but nothing in libxml2).
> > 
> >   In the python subdir in the source tree
> 
> I found that only in libxslt... not in libxml2. Am I missing
> something, or is this intended ?

  Seems you need to get a recent libxml2 release. 2.4.16 for example
ftp://xmlsoft.org/

> It's all here:
> 
> 	http://www.python.org/sigs/distutils-sig/doc/
> 
> Note that distutils has its own way of finding the Python
> paths.
> 
> Providing paths to various files needed from libxml2/xslt
> can be done by either automatic lookup or customizing 
> the build_ext command.
> 
> If you can provide the readily built .c and .h files,
> it should be no problem creating a setup.py files which
> then does the rest.
> 
> If you need help, just ask (preferrably on the 
> distutils-sig or me directly).

  Okay I will look at it and contact off-line of needed.

> One other thing which I couldn't find on the web-site:
> what licenses are imposed on libxml2/xslt and the Python
> bindings.
> 
> The .tar.gz files contain the GPL COPYING file and
> the LGPL COPYING.LIB file but the various other
> (source) files don't mention any license at all
> and the README also points to a W3C license... a bit
> confusing :-)

  Fixed.
  Look at the recent releases, and the web pages. Everything has
be switched under the MIT Licence in 2.4.14/1.0.11
    http://xmlsoft.org/news.html
    http://xmlsoft.org/XSLT/news.html

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From mal@lemburg.com  Thu Feb 21 14:45:30 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Thu, 21 Feb 2002 15:45:30 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References: <20020221073820.T25311@redhat.com> <3C74F599.7CBFFD10@lemburg.com> <20020221084705.U25311@redhat.com> <3C75045F.1B0702E6@lemburg.com> <20020221094042.W25311@redhat.com>
Message-ID: <3C75080A.20BB591D@lemburg.com>

Daniel Veillard wrote:
> 
> > I found that only in libxslt... not in libxml2. Am I missing
> > something, or is this intended ?
> 
>   Seems you need to get a recent libxml2 release. 2.4.16 for example
> ftp://xmlsoft.org/

Ah, thanks... I had 2.4.9.
 
> > It's all here:
> >
> >       http://www.python.org/sigs/distutils-sig/doc/
> >
> > Note that distutils has its own way of finding the Python
> > paths.
> >
> > Providing paths to various files needed from libxml2/xslt
> > can be done by either automatic lookup or customizing
> > the build_ext command.
> >
> > If you can provide the readily built .c and .h files,
> > it should be no problem creating a setup.py files which
> > then does the rest.
> >
> > If you need help, just ask (preferrably on the
> > distutils-sig or me directly).
> 
>   Okay I will look at it and contact off-line of needed.
> 
> > One other thing which I couldn't find on the web-site:
> > what licenses are imposed on libxml2/xslt and the Python
> > bindings.
> >
> > The .tar.gz files contain the GPL COPYING file and
> > the LGPL COPYING.LIB file but the various other
> > (source) files don't mention any license at all
> > and the README also points to a W3C license... a bit
> > confusing :-)
> 
>   Fixed.
>   Look at the recent releases, and the web pages. Everything has
> be switched under the MIT Licence in 2.4.14/1.0.11
>     http://xmlsoft.org/news.html
>     http://xmlsoft.org/XSLT/news.html

That'll make things a lot easier. Thanks !

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From tpassin@comcast.net  Thu Feb 21 15:02:13 2002
From: tpassin@comcast.net (Thomas B. Passin)
Date: Thu, 21 Feb 2002 10:02:13 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References: <20020221073820.T25311@redhat.com>
 <000c01c1badf$741f0d70$0bf13044@tbp> <20020221093507.V25311@redhat.com>
Message-ID: <005801c1bae8$bef74660$0bf13044@tbp>

[Daniel Veillard]

>    Hum, each time I touch those CSS settings somemeone complains I
> should fix them in a different way... the good point is that I just need
> to change them in the XSLT to fix the whole site:
>
> ------------------------
> TD {font-size: 14pt; font-family: Verdana,Arial,Helvetica}
> BODY {font-size: 14pt; font-family: Verdana,Arial,Helvetica; margin-top:
2em; margin-left: 0em; margin-right: 0em}
> H1 {font-size: 20pt; font-family: Verdana,Arial,Helvetica}
> H2 {font-size: 18pt; font-family: Verdana,Arial,Helvetica}
> H3 {font-size: 16pt; font-family: Verdana,Arial,Helvetica}
> ------------------------
>
>   Is removing all the font-size properties sufficient ?
> I tried and it looks acceptable to me in term of size. But doesn't fix
> the fact that 
 extends too much.
>   What do you suggest ?
>

Well, it **is** hard with 
 code lines.  I'd try to

1) edit the code by hand to insert line breaks where possible (as in line
continuations possible with some languages),

2) not use 
 but use arial, sans-serif,  or some other non-monospaced
font, because more characters will fit on a line and still be readable
(non-traditional but often helpful),

3) Use font-size:80% for code, especially if you stick with 
 after all.
If it's too small for some, they can increase the font viewing size or copy
and paste it into an editor, but the rest of the page will be usable.  I
have generally found that 80% is a good compromise between readability of
code and length of line.  The rest of the page could be 90% or 100%.

 70% often displays badly and is hard to read, and that might be worse on a
unix system without font smoothing (compared to Windows, I mean).

Bear in mind, too, that Courier font usually looks larger for the same point
size than most other fonts on the system, so it's more feasible to specify a
smaller size for it.

Another reason to use relative font sizes is to allow people with visual
impairments to be able to adjust the display so they can read it.

Your site isn't the only one. The Zope site, for example, has a lot of pages
with this problem too.

Thanks for being willing to tackle this.

Cheers,

Tom P



From uche.ogbuji@fourthought.com  Thu Feb 21 15:02:46 2002
From: uche.ogbuji@fourthought.com (Uche Ogbuji)
Date: Thu, 21 Feb 2002 08:02:46 -0700
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: Message from Daniel Veillard 
 of "Thu, 21 Feb 2002 07:38:20 EST." <20020221073820.T25311@redhat.com>
Message-ID: <200202211502.g1LF2kD03794@localhost.localdomain>

> I don't know how this could fit in the xml-sig framework, but they are now
> available as part of the libxml2 and libxslt releases. More informations
> and small tutorial/examples at:
>    http://xmlsoft.org/python.html
>    and
>    http://xmlsoft.org/XSLT/python.html
> 
> You will notice how XPath and XSLT engines can be extended with functions
> written in Python.
> Of course the Python bindings inherit from the speed and strict adherence
> to the associated standard which are the key points of the underlying C
> libraries. The libxml2 conformance against the OASIS XML test suite is 
> actually written as a Python script using the libxml2 module.

I think we should have as many tools as makes sense in PyXML.  My main 
question would be: what else do people need to have besides what is bundled in 
PyXML?  I assume libxml and the like, which is probably too much.

Either way, I'd be happy to update the XML-SIG XML topic to mention it.

Thanks a bunch for this.


-- 
Uche Ogbuji                               Principal Consultant
uche.ogbuji@fourthought.com               +1 303 583 9900 x 101
Fourthought, Inc.                         http://Fourthought.com 
4735 East Walnut St, Boulder, CO 80301-2537, USA
XML strategy, XML tools (http://4Suite.org), knowledge management




From veillard@redhat.com  Thu Feb 21 15:17:39 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 10:17:39 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <200202211502.g1LF2kD03794@localhost.localdomain>; from uche.ogbuji@fourthought.com on Thu, Feb 21, 2002 at 08:02:46AM -0700
References:  <200202211502.g1LF2kD03794@localhost.localdomain>
Message-ID: <20020221101738.X25311@redhat.com>

On Thu, Feb 21, 2002 at 08:02:46AM -0700, Uche Ogbuji wrote:
> I think we should have as many tools as makes sense in PyXML.  My main 
> question would be: what else do people need to have besides what is bundled in 
> PyXML?  I assume libxml and the like, which is probably too much.

  yup. I have been (mostly silently) following that list for the last month
and it is clear that libxml2/libxslt is in a large part redundant. On the
other hand I needed good Python bindings which would work with python 1.5
even if ancient. My set of APIs is huge (800+ functions) and covers
quite a bit more than just XML, half of them are available at the Python
level (not all types have wrappers), it was built as an independant subsystem
hence the relatively large scope.

> Either way, I'd be happy to update the XML-SIG XML topic to mention it.

  thanks, if you think it's on-topic.

> Thanks a bunch for this.

  You're welcome,

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From fdrake@acm.org  Thu Feb 21 15:25:44 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 10:25:44 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <005801c1bae8$bef74660$0bf13044@tbp>
References: <20020221073820.T25311@redhat.com>
 <000c01c1badf$741f0d70$0bf13044@tbp>
 <20020221093507.V25311@redhat.com>
 <005801c1bae8$bef74660$0bf13044@tbp>
Message-ID: <15477.4472.183877.847307@grendel.zope.com>

[Daniel Veillard]
 >    Hum, each time I touch those CSS settings somemeone complains I
 > should fix them in a different way... the good point is that I just need

That's what users are for!  ;-)

Thomas B. Passin writes:
 > 1) edit the code by hand to insert line breaks where possible (as in line
 > continuations possible with some languages),

I only see one long code line on the page, and I wouldn't use a
continuation line to change it.  I'd use something like:

reference = ("startDocument:startElement foo {'url': 'tst'}:"
             "characters: bar:endElement foo:endDocument:")

 > 2) not use 
 but use arial, sans-serif,  or some other non-monospaced
 > font, because more characters will fit on a line and still be readable
 > (non-traditional but often helpful),

We tried this for the Python documentation, and the reaction was very
mixed.  If all instances of the selected element/class are purely code
examples, you'll probably be OK.  (For the Python docs, what
definately killed the idea was that we use the same element/class to
display interactive sessions, and changing that would be a *lot* of
tedious work, just to end up with inconsistent displays.)

 > Your site isn't the only one. The Zope site, for example, has a lot of pages
 > with this problem too.

I'd say something here, but then I'd get tasked with fixing it.  ;-(
Many of us are aware of the problem, but generally not those of us who
write the stylesheets.


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From veillard@redhat.com  Thu Feb 21 16:06:28 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 11:06:28 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <15477.4472.183877.847307@grendel.zope.com>; from fdrake@acm.org on Thu, Feb 21, 2002 at 10:25:44AM -0500
References: <20020221073820.T25311@redhat.com> <000c01c1badf$741f0d70$0bf13044@tbp> <20020221093507.V25311@redhat.com> <005801c1bae8$bef74660$0bf13044@tbp> <15477.4472.183877.847307@grendel.zope.com>
Message-ID: <20020221110628.Z25311@redhat.com>

On Thu, Feb 21, 2002 at 10:25:44AM -0500, Fred L. Drake, Jr. wrote:
> 
> [Daniel Veillard]
>  >    Hum, each time I touch those CSS settings somemeone complains I
>  > should fix them in a different way... the good point is that I just need
> 
> That's what users are for!  ;-)

  hehe

> I only see one long code line on the page, and I wouldn't use a
> continuation line to change it.  I'd use something like:
> 
> reference = ("startDocument:startElement foo {'url': 'tst'}:"
>              "characters: bar:endElement foo:endDocument:")

  Bingoooo !

  http://xmlsoft.org/XSLT/python.html 
  should be fixed too now :-)

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From fdrake@acm.org  Thu Feb 21 16:15:23 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 11:15:23 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <20020221110628.Z25311@redhat.com>
References: <20020221073820.T25311@redhat.com>
 <000c01c1badf$741f0d70$0bf13044@tbp>
 <20020221093507.V25311@redhat.com>
 <005801c1bae8$bef74660$0bf13044@tbp>
 <15477.4472.183877.847307@grendel.zope.com>
 <20020221110628.Z25311@redhat.com>
Message-ID: <15477.7451.907137.148448@grendel.zope.com>

I suggested:
 > reference = ("startDocument:startElement foo {'url': 'tst'}:"
 >              "characters: bar:endElement foo:endDocument:")

Daniel Veillard writes:
 >   Bingoooo !

It appears that the parentheses and indentation on the second line of
the expression got lost:

reference = "startDocument:startElement foo {'url': 'tst'}:"
"characters: bar:endElement foo:endDocument:"

is legal Python, but probably not what you intended.  ;)

 >   http://xmlsoft.org/XSLT/python.html 
 >   should be fixed too now :-)

These are looking much better; thanks!  (When the horizontal scrollbar
appears on Mozilla, and the window is maximized on a 1400x1050 screen,
something is definately wrong!  The scrollbar is gone now.)


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From fdrake@acm.org  Thu Feb 21 16:36:14 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 11:36:14 -0500
Subject: [XML-SIG] regression testing framework
Message-ID: <15477.8702.115184.918167@grendel.zope.com>

Is anyone working on updating the regression testing framework based
on what's currently in Python?  For output-based tests, we'd gain
ndiff-style comparison of the actual and expected output, which would
be a huge improvement.

If no one is currently working on this (or at least considering it),
does anyone have any objections?


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From zeroone@worldonline.co.za  Thu Feb 21 17:06:59 2002
From: zeroone@worldonline.co.za (Sean Allen)
Date: 21 Feb 2002 09:06:59 -0800
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <000c01c1badf$741f0d70$0bf13044@tbp>
References: <20020221073820.T25311@redhat.com>
 <000c01c1badf$741f0d70$0bf13044@tbp>
Message-ID: <1014311220.2321.44.camel@linux.zeroone.nowhere>

--=-34xmgJs/W+48f/YMjq9v
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Thu, 2002-02-21 at 05:55, Thomas B. Passin wrote:
> [Daniel Veillard]
>=20
> Love the work but hate the web site:
>=20
> 1) Pages with code like http://xmlsoft.org/python.html do not wrap,=20
They do with Galeon 1.0.3 (i.e. Gecko) on Linux
>=20
> 2) The fonts are too large and are fixed in size by the css.  So I can't
> make them display smaller (well, I can with Opera but that's the only
> browser that can demagnify).=20
Galeon 1.0.3 (i.e. Gecko) on Linux.

I have no problems viewing this site straight out of the box so to
speak.

Sean Allen.

--=-34xmgJs/W+48f/YMjq9v
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQA8dSkzoo+D8xwsOTIRAvs7AJ9KsSSjc6bAaG3YFNHmKIPVmFJI+QCbBHRc
ibHlGFeuiANaMDFR8BApaws=
=EeWK
-----END PGP SIGNATURE-----

--=-34xmgJs/W+48f/YMjq9v--



From martin@v.loewis.de  Thu Feb 21 17:15:04 2002
From: martin@v.loewis.de (Martin v. Loewis)
Date: 21 Feb 2002 18:15:04 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <200202211502.g1LF2kD03794@localhost.localdomain>
References: <200202211502.g1LF2kD03794@localhost.localdomain>
Message-ID: 

Uche Ogbuji  writes:

> Either way, I'd be happy to update the XML-SIG XML topic to mention it.

XML-SIG and PyXML aren't as closely tied together as some people seem
to think (or atleast, they shouldn't be); any discussion of XML and
Python is welcome.

In fact, anybody who wants to get write access to the XML-SIG web
pages to expand their contents, just let me know.

> I think we should have as many tools as makes sense in PyXML.  My
> main question would be: what else do people need to have besides
> what is bundled in PyXML?  I assume libxml and the like, which is
> probably too much.

Provided there is proper setup.py magic to detect the prerequisites, I
think adding wrappers around existing libraries is a good thing to do.
As a result, different PyXML installation would offer different
parsers, but they do so, anyway, and there is (or should be) enough
framework to deal with installation variations.

Regards,
Martin


From uche.ogbuji@fourthought.com  Thu Feb 21 17:17:25 2002
From: uche.ogbuji@fourthought.com (Uche Ogbuji)
Date: 21 Feb 2002 10:17:25 -0700
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: 
References: <200202211502.g1LF2kD03794@localhost.localdomain>
 
Message-ID: <1014311845.1726.1982.camel@localhost.localdomain>

On Thu, 2002-02-21 at 10:15, Martin v. Loewis wrote:
> Uche Ogbuji  writes:
> 
> > Either way, I'd be happy to update the XML-SIG XML topic to mention it.
> 
> XML-SIG and PyXML aren't as closely tied together as some people seem
> to think (or atleast, they shouldn't be); any discussion of XML and
> Python is welcome.

Exactly.  Which is why I said I was happy to cover libxml in the XML
topic, even though it might not be a candidate for bundling in PyXML.


-- 
Uche Ogbuji                               Principal Consultant
uche.ogbuji@fourthought.com               +1 303 583 9900 x 101
Fourthought, Inc.                         http://Fourthought.com 
4735 East Walnut St, Boulder, CO 80301-2537, USA
XML strategy, XML tools (http://4Suite.org), knowledge management



From hannu@tm.ee  Thu Feb 21 17:31:28 2002
From: hannu@tm.ee (Hannu Krosing)
Date: 21 Feb 2002 19:31:28 +0200
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <20020221101738.X25311@redhat.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
Message-ID: <1014312693.15078.4.camel@taru.tm.ee>

On Thu, 2002-02-21 at 17:17, Daniel Veillard wrote:
> On Thu, Feb 21, 2002 at 08:02:46AM -0700, Uche Ogbuji wrote:
> > I think we should have as many tools as makes sense in PyXML.  My main=20
> > question would be: what else do people need to have besides what is bun=
dled in=20
> > PyXML?  I assume libxml and the like, which is probably too much.
>=20
>   yup. I have been (mostly silently) following that list for the last mon=
th
> and it is clear that libxml2/libxslt is in a large part redundant. On the
> other hand I needed good Python bindings which would work with python 1.5
> even if ancient.

Should it work with python 2.2 ?

I'm able to import libxml2 fine but import libxslt gives

[GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-85)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libxml2mod
>>> import libxsltmod
Traceback (most recent call last):
  File "", line 1, in ?
ImportError: h=938=B5x@/libz.sow: shared object not open

Or should I just recompile without zlib ?

-----------------
Hannu




From veillard@redhat.com  Thu Feb 21 17:46:48 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 12:46:48 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <1014312693.15078.4.camel@taru.tm.ee>; from hannu@tm.ee on Thu, Feb 21, 2002 at 07:31:28PM +0200
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee>
Message-ID: <20020221124648.B25311@redhat.com>

On Thu, Feb 21, 2002 at 07:31:28PM +0200, Hannu Krosing wrote:
> Should it work with python 2.2 ?

  In theory, yes. I think I tested it so far on Red Hat builds with
1.5, 2.1 and 2.2 for architectures i386, ia64 and alpha.

> I'm able to import libxml2 fine but import libxslt gives
>=20
> [GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-85)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import libxml2mod
> >>> import libxsltmod
> Traceback (most recent call last):
>   File "", line 1, in ?
> ImportError: h=938=B5x@/libz.sow: shared object not open
>=20
> Or should I just recompile without zlib ?

  No, that's something I'm puzzled at, it had been reported
already and we could not find the problem yet:
  http://mail.gnome.org/archives/xml-bindings/2002-February/msg00014.html

 This seems related to something like:
   module A need shared lib l1
   module B need module A and shared lib l2
   shared lib l2 depends on a symbol from l1

and at that point the behaviour becomes unstable.=20
It could be that there is one explicit dependancy missing in the shared
object which makes the process unreliable. And there must be some memory
corruption going on (look at the string) but where !

Daniel

--=20
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From mal@lemburg.com  Thu Feb 21 18:02:20 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Thu, 21 Feb 2002 19:02:20 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com>
Message-ID: <3C75362C.B194EDFB@lemburg.com>

Daniel Veillard wrote:
>=20
> On Thu, Feb 21, 2002 at 07:31:28PM +0200, Hannu Krosing wrote:
> > Should it work with python 2.2 ?
>=20
>   In theory, yes. I think I tested it so far on Red Hat builds with
> 1.5, 2.1 and 2.2 for architectures i386, ia64 and alpha.
>=20
> > I'm able to import libxml2 fine but import libxslt gives
> >
> > [GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-85)] on linux2
> > Type "help", "copyright", "credits" or "license" for more information.
> > >>> import libxml2mod
> > >>> import libxsltmod
> > Traceback (most recent call last):
> >   File "", line 1, in ?
> > ImportError: h=938=B5x@/libz.sow: shared object not open
> >
> > Or should I just recompile without zlib ?
>=20
>   No, that's something I'm puzzled at, it had been reported
> already and we could not find the problem yet:
>   http://mail.gnome.org/archives/xml-bindings/2002-February/msg00014.ht=
ml
>=20
>  This seems related to something like:
>    module A need shared lib l1
>    module B need module A and shared lib l2
>    shared lib l2 depends on a symbol from l1

This is a bad thing for portability. You should never have
shared libs depend on each other -- dynamic linking will simply
screw up completely...=20
=20
> and at that point the behaviour becomes unstable.
> It could be that there is one explicit dependancy missing in the shared
> object which makes the process unreliable. And there must be some memor=
y
> corruption going on (look at the string) but where !

Probably in the dynamic linker of the OS. Also, on some
platforms each DLL uses it's own heap for memory=20
allocation.

Why not simply make l1 and l2 a single shared lib ?

--=20
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From mal@lemburg.com  Thu Feb 21 18:14:30 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Thu, 21 Feb 2002 19:14:30 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com>
Message-ID: <3C753906.9B8B84A9@lemburg.com>

"M.-A. Lemburg" wrote:
> 
> Daniel Veillard wrote:
> >
> >  This seems related to something like:
> >    module A need shared lib l1
> >    module B need module A and shared lib l2
> >    shared lib l2 depends on a symbol from l1

One other thing you could try is to have module A load
both l1 and l2, or if the dependencies are just l2 -> l1,
to assure that l1 is loaded prior to l2.

Still, I'd recommend choosing a different shared lib setup...
 
> This is a bad thing for portability. You should never have
> shared libs depend on each other -- dynamic linking will simply
> screw up completely...

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From fdrake@acm.org  Thu Feb 21 18:25:29 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 13:25:29 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <3C753906.9B8B84A9@lemburg.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
 <3C75362C.B194EDFB@lemburg.com>
 <3C753906.9B8B84A9@lemburg.com>
Message-ID: <15477.15257.751979.892048@grendel.zope.com>

M.-A. Lemburg writes:
 > One other thing you could try is to have module A load
 > both l1 and l2, or if the dependencies are just l2 -> l1,
 > to assure that l1 is loaded prior to l2.

One possible issue is that, by default, Python does not load the
symbols from libraries loaded for dynamic modules.  Daniel, to test
this easily, try this before importing A or B:

------------------------------------------------
import dl
import sys

sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL)
------------------------------------------------

(From the docstring for sys.setdlopenflags().)


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From hannu@tm.ee  Thu Feb 21 18:35:48 2002
From: hannu@tm.ee (Hannu Krosing)
Date: 21 Feb 2002 20:35:48 +0200
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <20020221124648.B25311@redhat.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
Message-ID: <1014316554.1391.1.camel@taru.tm.ee>

On Thu, 2002-02-21 at 19:46, Daniel Veillard wrote:
> On Thu, Feb 21, 2002 at 07:31:28PM +0200, Hannu Krosing wrote:
> > Should it work with python 2.2 ?
>=20
>   In theory, yes. I think I tested it so far on Red Hat builds with
> 1.5, 2.1 and 2.2 for architectures i386, ia64 and alpha.
>=20
> > I'm able to import libxml2 fine but import libxslt gives
> >=20
> > [GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-85)] on linux2
> > Type "help", "copyright", "credits" or "license" for more information.
> > >>> import libxml2mod
> > >>> import libxsltmod
> > Traceback (most recent call last):
> >   File "", line 1, in ?
> > ImportError: h=938=B5x@/libz.sow: shared object not open
> >=20
> > Or should I just recompile without zlib ?
>=20
>   No, that's something I'm puzzled at, it had been reported
> already and we could not find the problem yet:
>   http://mail.gnome.org/archives/xml-bindings/2002-February/msg00014.html

The strange thing is that when I installed the RPM's it seems to work.

Could the RPMs be made for python2.1 and python2.2 as well ?

---------------
Hannu




From hannu@tm.ee  Thu Feb 21 18:40:04 2002
From: hannu@tm.ee (Hannu Krosing)
Date: 21 Feb 2002 20:40:04 +0200
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <15477.15257.751979.892048@grendel.zope.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com>
 <3C753906.9B8B84A9@lemburg.com>
 <15477.15257.751979.892048@grendel.zope.com>
Message-ID: <1014316809.1781.4.camel@taru.tm.ee>

On Thu, 2002-02-21 at 20:25, Fred L. Drake, Jr. wrote:
> 
> M.-A. Lemburg writes:
>  > One other thing you could try is to have module A load
>  > both l1 and l2, or if the dependencies are just l2 -> l1,
>  > to assure that l1 is loaded prior to l2.
> 
> One possible issue is that, by default, Python does not load the
> symbols from libraries loaded for dynamic modules.  Daniel, to test
> this easily, try this before importing A or B:
> 
> ------------------------------------------------
> import dl

>>> import dl
Traceback (most recent call last):
  File "", line 1, in ?
ImportError: No module named dl

This is on RH linux 7.1 with Python 2.2

-------------
Hannu




From fdrake@acm.org  Thu Feb 21 18:47:19 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 13:47:19 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <1014316809.1781.4.camel@taru.tm.ee>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
 <3C75362C.B194EDFB@lemburg.com>
 <3C753906.9B8B84A9@lemburg.com>
 <15477.15257.751979.892048@grendel.zope.com>
 <1014316809.1781.4.camel@taru.tm.ee>
Message-ID: <15477.16567.392503.678563@grendel.zope.com>

Hannu Krosing writes:
 > >>> import dl
 > Traceback (most recent call last):
 >   File "", line 1, in ?
 > ImportError: No module named dl
 > 
 > This is on RH linux 7.1 with Python 2.2

That's annoying.  Did you install from the RPMs or build from source?
It looks like Python's default build will attempt to build it if it
can find the dlfcn.h header file, so either that wasn't found on the
machine it was built on, or that module was specifically not included
(which wouldn't be unreasonable, I suppose).


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From hannu@tm.ee  Thu Feb 21 18:55:18 2002
From: hannu@tm.ee (Hannu Krosing)
Date: 21 Feb 2002 20:55:18 +0200
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <15477.16567.392503.678563@grendel.zope.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com>
 <3C753906.9B8B84A9@lemburg.com>
 <15477.15257.751979.892048@grendel.zope.com>
 <1014316809.1781.4.camel@taru.tm.ee>
 <15477.16567.392503.678563@grendel.zope.com>
Message-ID: <1014317723.1391.9.camel@taru.tm.ee>

On Thu, 2002-02-21 at 20:47, Fred L. Drake, Jr. wrote:
> 
> Hannu Krosing writes:
>  > >>> import dl
>  > Traceback (most recent call last):
>  >   File "", line 1, in ?
>  > ImportError: No module named dl
>  > 
>  > This is on RH linux 7.1 with Python 2.2
> 
> That's annoying.  Did you install from the RPMs or build from source?

This is 2.2c1 installed from RPMs

> It looks like Python's default build will attempt to build it if it
> can find the dlfcn.h header file, so either that wasn't found on the
> machine it was built on, or that module was specifically not included
> (which wouldn't be unreasonable, I suppose).

I looked them up in /usr/include/bits/dlfcn.h and wirth this it works

>>> sys.setdlopenflags(0x00002|0x00100)   
>>> import libxslt
>>>

So will this be the standard way to work with python 2.2 and libxslt ;)

--------------
Hannu



From veillard@redhat.com  Thu Feb 21 18:53:58 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 13:53:58 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <1014316554.1391.1.camel@taru.tm.ee>; from hannu@tm.ee on Thu, Feb 21, 2002 at 08:35:48PM +0200
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <1014316554.1391.1.camel@taru.tm.ee>
Message-ID: <20020221135358.C19758@redhat.com>

On Thu, Feb 21, 2002 at 08:35:48PM +0200, Hannu Krosing wrote:
> The strange thing is that when I installed the RPM's it seems to work.

  Hum, there is something fishy ...

> Could the RPMs be made for python2.1 and python2.2 as well ?

  The RPMs I ship should include 1.5 and 2.1 since I have those installed
on my build box (the RPMs specs detects the installed Python versions
and builds the modules for each of them):
backup:~ -> rpm -qilp /usr/src/redhat/RPMS/i386/libxslt-python-1.0.12-1.i386.rpm | grep .so
URL         : http://xmlsoft.org/XSLT/
/usr/lib/python1.5/site-packages/libxsltmod.so
/usr/lib/python2.1/site-packages/libxsltmod.so
backup:~ -> 

  I will rebuild and install the 2.2 RPM from RawHide so next release will
have all 3. I'm still puzzled by the whole issue.

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From veillard@redhat.com  Thu Feb 21 18:35:12 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 13:35:12 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <3C75362C.B194EDFB@lemburg.com>; from mal@lemburg.com on Thu, Feb 21, 2002 at 07:02:20PM +0100
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com>
Message-ID: <20020221133512.A19758@redhat.com>

On Thu, Feb 21, 2002 at 07:02:20PM +0100, M.-A. Lemburg wrote:
> Daniel Veillard wrote:
> >  This seems related to something like:
> >    module A need shared lib l1
> >    module B need module A and shared lib l2
> >    shared lib l2 depends on a symbol from l1
> 
> This is a bad thing for portability. You should never have
> shared libs depend on each other -- dynamic linking will simply
> screw up completely... 

  Come'on zlib is shared and used for example by libpng. And if your
graphic library need it you would have to have a special version
of libpng statically compiled against zlib, nahhh you cannot impose
this, on any platform !

> Probably in the dynamic linker of the OS. Also, on some
> platforms each DLL uses it's own heap for memory 
> allocation.
> 
> Why not simply make l1 and l2 a single shared lib ?

  No I'm not gonna ship with library statically linked inside my
shared library. The linker should be fixed instead.

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From pyxml@xhaus.com  Thu Feb 21 14:06:32 2002
From: pyxml@xhaus.com (Alan Kennedy)
Date: Thu, 21 Feb 2002 14:06:32 EST5EDT
Subject: [XML-SIG] What belongs in pyXML?
Message-ID: <200202211917.OAA369444@spool8.valueweb.net>

Greetings All,

I just wanted to pose a question, to which everyone will 
probably have a different answer :-)

What belongs in pyXML?

I wasn't around when the python XML-SIG was formed (I've 
only been pythoneering for about 12 months now), but I've 
been watching XML since May 1997, and using it and XSLT 
since Summer 1998, and well remember the heady early days
when everything was new and exciting. I can imagine that 
the original remit for the python XML-SIG was to provide
good XML support in python.

How things have changed! Nowadays, XML really is 
everywhere, and there isn't a language in existence that 
doesn't have XML support. 

And Python has an embarrassment of riches in relation to 
XML. There is SAX and DOM support built into the standard 
distribution, including validating and non-validating 
parsers, pure python and native code parsers, SAX level 1 
and 2 support, etc, etc.

There are multiple independent libraries for DOM and XSLT, 
including 4Suite, Pirxx/Pyana and now libxml/libxslt, all 
of which are high-quality, standards-compliant and 
production-quality implementations.

And then there is the "exotic" support, such as RDF (4RDF, 
Redfoot), Schema, etc (pytrex, xsv).

And then there is the buzzing world of web services, where 
is at least half a dozen SOAP/XML-RPC implementations, and 
doubtless several WS?L implementations in the pipeline.

It appears (to me at least :-) that python really is *the* 
premier language for XML support.

So, against that background, I'd like to pose this question.

What is the *current* purpose of pyXML? 

I fairly sure I know what the purpose used to be. Has the 
purpose changed? Should it change?

Regards,

Alan.



---------------------------------------------
This message was sent using WebMail by CyberGate.
http://www.gate.net/webmail




From veillard@redhat.com  Thu Feb 21 18:47:23 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 13:47:23 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <15477.15257.751979.892048@grendel.zope.com>; from fdrake@acm.org on Thu, Feb 21, 2002 at 01:25:29PM -0500
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <3C753906.9B8B84A9@lemburg.com> <15477.15257.751979.892048@grendel.zope.com>
Message-ID: <20020221134723.B19758@redhat.com>

On Thu, Feb 21, 2002 at 01:25:29PM -0500, Fred L. Drake, Jr. wrote:
> 
> M.-A. Lemburg writes:
>  > One other thing you could try is to have module A load
>  > both l1 and l2, or if the dependencies are just l2 -> l1,
>  > to assure that l1 is loaded prior to l2.
> 
> One possible issue is that, by default, Python does not load the
> symbols from libraries loaded for dynamic modules.  Daniel, to test
> this easily, try this before importing A or B:
> 
> ------------------------------------------------
> import dl
> import sys
> 
> sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL)
> ------------------------------------------------
> 
> (From the docstring for sys.setdlopenflags().)


  Hum, it sounds like the problem, dl doesn't seems present
on my system (1.5 though there is /usr/lib/python1.5/test/test_dl.py ???)

  Hannu, since I can't reproduce the linker problems myself, could
you try to see if changing libxsl.py to 
------------
try:
    import dl
    import sys
    sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL)
except:
    pass
import libxml2mod
import libxsltmod
import libxml2

#
# Everything below this point is automatically generated
#
------------
  rebuilding in the python dir (the libxslt.py should be updated
accordingly) does indeed fix the problem ?

  thanks in advance,

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From fdrake@acm.org  Thu Feb 21 19:19:22 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 14:19:22 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <1014317723.1391.9.camel@taru.tm.ee>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
 <3C75362C.B194EDFB@lemburg.com>
 <3C753906.9B8B84A9@lemburg.com>
 <15477.15257.751979.892048@grendel.zope.com>
 <1014316809.1781.4.camel@taru.tm.ee>
 <15477.16567.392503.678563@grendel.zope.com>
 <1014317723.1391.9.camel@taru.tm.ee>
Message-ID: <15477.18490.929083.210424@grendel.zope.com>

Hannu Krosing writes:
 > I looked them up in /usr/include/bits/dlfcn.h and wirth this it works
 > 
 > >>> sys.setdlopenflags(0x00002|0x00100)   
 > >>> import libxslt

That's not just annoying, that's down right ugly!  I don't know how
portable the constants are, either.  If this ends up being the only
way to deal with this problem, I'd hope the libxml2/libxslt modules
end up "wrapped" by modules written in Python that do something like
this:

------------------------------------------------
import sys

try:
    from dl import RTLD_GLOBAL, RTLD_NOW
except ImportError:
    # hopefully something better is available...
    RTLD_GLOBAL = 0x00100
    RTLD_NOW = 0x00002

flags = sys.getdlopenflags()
sys.setdlopenflags(RTLD_GLOBAL | RTLD_NOW)
try:
    import libxml2
    import libxslt
finally:
    sys.setdlopenflags(flags)
------------------------------------------------

 > So will this be the standard way to work with python 2.2 and libxslt ;)

Aaarrgghhh!

Actually, I think there is another option, but it really wonderful
either.  It might be better than this.  Both C extension modules can
be implemented by a single .so this way:

1. Implement two internal functions that do what the current
   init functions do; let's call these _init_1 and _init_2.

2. Write *two* init functions (initA and initB), each of which
   calls both _init_1 and _init_2.

3. Install the .so as A.so *and* B.so, so it doesn't matter which gets
   imported first.  When imported, both modules are initialized and
   inserted in sys.modules, so subsequent imports will pick up the
   cached module.

Somewhat painful, but it should avoid these library dependence
problems, at least in this case.


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From fdrake@acm.org  Thu Feb 21 19:28:38 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 14:28:38 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <20020221133512.A19758@redhat.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
 <3C75362C.B194EDFB@lemburg.com>
 <20020221133512.A19758@redhat.com>
Message-ID: <15477.19046.219108.249147@grendel.zope.com>

Daniel Veillard writes:
 >   Come'on zlib is shared and used for example by libpng. And if your
 > graphic library need it you would have to have a special version
 > of libpng statically compiled against zlib, nahhh you cannot impose
 > this, on any platform !

For modules which are loaded into the global symbol space, this isn't
a problem.  "Normal" linking of an application to it's libraries works
fine because of this, as does a dynamic object's use of libraries
loaded by the main application.  When different dynamic objects need
to share a library and RTLD_GLOBAL is not set, we have a very
different situation.  Hannu showed that sharing the symbol space makes
this problem go away.

I remember playing with this once, and I ended up linking the
dependent dynamic object to the other.  It worked, but it can be
fragile (due to the search for the first if the dependent object is
loaded first).  Basically, you'd need to add A.so to the link command
for B.so; I forget if there were any other magical parameters to
give.  This might be worth playing with.

 >   No I'm not gonna ship with library statically linked inside my
 > shared library. The linker should be fixed instead.

That's another option, even if you don't like it.  It helps avoid API
version dependence of the compiled module.


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From fdrake@acm.org  Thu Feb 21 19:34:19 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 14:34:19 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <20020221134723.B19758@redhat.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
 <3C75362C.B194EDFB@lemburg.com>
 <3C753906.9B8B84A9@lemburg.com>
 <15477.15257.751979.892048@grendel.zope.com>
 <20020221134723.B19758@redhat.com>
Message-ID: <15477.19387.663020.915762@grendel.zope.com>

Daniel Veillard writes:
 >   Hum, it sounds like the problem, dl doesn't seems present
 > on my system (1.5 though there is /usr/lib/python1.5/test/test_dl.py ???)

The dl module was never built by default using the old Modules/Setup
only build system.  RedHat should enable it specifically to allow
access to these constants, though!  The problem for Python is that
there is no winning combination of RTLD_* flags that works for
everyone.


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From fdrake@acm.org  Thu Feb 21 20:05:24 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 15:05:24 -0500
Subject: [XML-SIG] minidom enhancements, 1st installment
Message-ID: <15477.21252.295147.650371@grendel.zope.com>

I've just checked in what I have so far into the minidom-enhancements
branch in CVS.  The perfomance checker script reports the following on
a RedHat 7.2 box with fairly current updates:


Python 2.0.1:
    using xml.dom.minidom.parseString(): 17.4418720007
    using xml.dom.expatbuilder.parseString(): 7.06486296654

Python 2.1.2:
    using xml.dom.minidom.parseString(): 16.3245279789
    using xml.dom.expatbuilder.parseString(): 6.71447992325

Python 2.2 + (maintenance branch from Python CVS):
    using xml.dom.minidom.parseString(): 13.8505721092
    using xml.dom.expatbuilder.parseString(): 6.86473989487

Python 2.3a0 (Python CVS trunk):
    using xml.dom.minidom.parseString(): 13.673410058
    using xml.dom.expatbuilder.parseString(): 6.74867010117


Times are in seconds, yada yada yada.  Read perf_expatbuilder.py to
see if you think it means anything.


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From akuchlin@mems-exchange.org  Thu Feb 21 20:11:26 2002
From: akuchlin@mems-exchange.org (Andrew Kuchling)
Date: Thu, 21 Feb 2002 15:11:26 -0500
Subject: [XML-SIG] What belongs in pyXML?
In-Reply-To: <200202211917.OAA369444@spool8.valueweb.net>
References: <200202211917.OAA369444@spool8.valueweb.net>
Message-ID: <20020221201125.GA4550@crystal.mems-exchange.org>

On Thu, Feb 21, 2002 at 02:06:32PM +0000, Alan Kennedy wrote:
>What is the *current* purpose of pyXML? 

I don't think the PyXML package is really finished yet.  When I try to
use it for an application, I invariably find that there isn't quite
enough there -- I often have to write little snippets of code to
bridge Yet there's too much obsolete code still present in the
package, too many alternative readers with no clear indication of
which one to use, and no very friendly documentation (though I haven't
read the O'Reilly XML book yet).  In other words, it needs polishing.

I'd also like it if more people used the PyXML.cvs.sourceforge.net CVS
tree for their projects, even if they aren't destined for inclusion in
PyXML.  One irritating thing with SourceForge is that users mostly
create an entire new project for each separate thing, instead of
consolidating into a few larger projects.  For example, things like
Xerces/Xalan bindings would happily fit into the PyXML CVS, and more
of the Python XML-using community would then be aware of them.

--amk                                                  (www.amk.ca)
Oh, I know how many beans make five, Doctor. You don't have to be a
Time Lord to cope with A-level maths.
    -- The Brigadier, in "Mawdryn Undead"


From veillard@redhat.com  Thu Feb 21 20:41:57 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Thu, 21 Feb 2002 15:41:57 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <15477.19046.219108.249147@grendel.zope.com>; from fdrake@acm.org on Thu, Feb 21, 2002 at 02:28:38PM -0500
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <20020221133512.A19758@redhat.com> <15477.19046.219108.249147@grendel.zope.com>
Message-ID: <20020221154157.A31477@redhat.com>

On Thu, Feb 21, 2002 at 02:28:38PM -0500, Fred L. Drake, Jr. wrote:
> I remember playing with this once, and I ended up linking the
> dependent dynamic object to the other.  It worked, but it can be
> fragile (due to the search for the first if the dependent object is
> loaded first).  Basically, you'd need to add A.so to the link command
> for B.so; I forget if there were any other magical parameters to
> give.  This might be worth playing with.

  hum, actually both reports came from people who had recompiled 
the library themselves. I start suspecting some divergences in the
libtool processing. My version of libtool does the shared lib lookup

/bin/sh ../libtool --mode=link gcc  -Wall -g  -o libxsltmod.so -o libxsltmod.so libxslt.lo types.lo libxslt-py.lo ../libxslt/libxslt.la ../libexslt/libexslt.la  -shared -Wl,-soname,libxsltmod.so

launch 

gcc -Wall -g -o libxsltmod.so -o libxsltmod.so libxslt.o types.o libxslt-py.o -shared -Wl,-soname -Wl,libxsltmod.so  ../libxslt/.libs/libxslt.a -lm ../libexslt/.libs/libexslt.a -L/usr/lib /usr/lib/libxslt.so /usr/lib/libxml2.so -lm -lm -lm -lz -lm

But some other version might not do it, or may not activate it due
to prefix differences.
I will try to explictely add the references to libxml2, libz and libm,
but still they should use the same shared library instance, so the LD_GLOBAL
flag should be activated (when possible).

Daniel


-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From fdrake@acm.org  Thu Feb 21 20:49:04 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Thu, 21 Feb 2002 15:49:04 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <20020221154157.A31477@redhat.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
 <3C75362C.B194EDFB@lemburg.com>
 <20020221133512.A19758@redhat.com>
 <15477.19046.219108.249147@grendel.zope.com>
 <20020221154157.A31477@redhat.com>
Message-ID: <15477.23872.905663.141001@grendel.zope.com>

Daniel Veillard writes:
 >   hum, actually both reports came from people who had recompiled 
 > the library themselves. I start suspecting some divergences in the
 > libtool processing. My version of libtool does the shared lib lookup

Just mentioning libtool puts the details beyond my understanding!

 > I will try to explictely add the references to libxml2, libz and libm,
 > but still they should use the same shared library instance, so the LD_GLOBAL
 > flag should be activated (when possible).

Then it looks like you'll have to use one of the setdlopenflags()
hacks.  ;-(  Just make sure you re-set the flags once you've done the
necessary imports.

This does reinforce the value of building the interpreter with many of
the standard modules built into the executable rather than dynamically
loaded.  Especially things like libz, since there are so many other
libraries that use them.


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From martin@v.loewis.de  Thu Feb 21 23:45:31 2002
From: martin@v.loewis.de (Martin v. Loewis)
Date: 22 Feb 2002 00:45:31 +0100
Subject: [XML-SIG] regression testing framework
Message-ID: 

> If no one is currently working on this (or at least considering it),
> does anyone have any objections?

Go ahead and make any changes you like. A lot needs to be done in this
area, so any contribution is welcome.

Regards,
Martin



From dalsan@sparcs.kaist.ac.kr  Fri Feb 22 02:11:29 2002
From: dalsan@sparcs.kaist.ac.kr (Jinkuk Kim)
Date: Fri, 22 Feb 2002 11:11:29 +0900
Subject: [XML-SIG] [Q] Problem in installing 4Suite - 4XSLT
Message-ID: <20020222021129.GA20248@sparcs.kaist.ac.kr>

[Q] Problem in installing 4Suite - 4XSLT

 Hello, I'm Kim

 I want to use 4Suite to use XSLT in python, but i faced a problem installing it.

 first, I installed python2.2 and it worked well.
 (I downloaded src, and configure, make, make install ..)

 second, I installed PyXML-0.7 and i think it works well.
 because when i typed "from xml.dom.ext.reader import PyExpat"
 no error occured.
 (I downloaded src, and "python setup.py build", "python setup.py install" ..)

 third, I installed 4Suite-0.11.1 and i thought it was installed successfully,
 but when i typed "from xml.xslt.Processor import Processor"
 following error message was printed
 (I downloaded src, and "python setup.py install" ..)

Traceback (most recent call last):
 File "", line 1, in ?
 File "/usr/local/lib/python2.2/site-packages/_xmlplus/xslt/Processor.py", line 24, in ?
  from xml.xslt import StylesheetReader, ReleaseNode
 File "/usr/local/lib/python2.2/site-packages/_xmlplus/xslt/StylesheetReader.py", line 53, in ?
  from xml.xslt.Stylesheet import StylesheetElement
 File "/usr/local/lib/python2.2/site-packages/_xmlplus/xslt/Stylesheet.py", line 22, in ?
  from xml.xslt import XsltElement, XsltException, InternalException, Error
ImportError: cannot import name InternalException

 I checked the source file of Stylesheet.py,
 in that, xml.xslt.xpath.InternalException was imported,

 but when I checked site-packages/_xmlplus/xpath
 I couldn't find the definition of InternalException.

 I'm getting very difficulty solving this problem.
 please help solving my problem.


 * This installation was done on both Solaris8 and Debian Linuix,



From veillard@redhat.com  Fri Feb 22 09:21:29 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Fri, 22 Feb 2002 04:21:29 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <15477.18490.929083.210424@grendel.zope.com>; from fdrake@acm.org on Thu, Feb 21, 2002 at 02:19:22PM -0500
References: <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <3C753906.9B8B84A9@lemburg.com> <15477.15257.751979.892048@grendel.zope.com> <1014316809.1781.4.camel@taru.tm.ee> <15477.16567.392503.678563@grendel.zope.com> <1014317723.1391.9.camel@taru.tm.ee> <15477.18490.929083.210424@grendel.zope.com>
Message-ID: <20020222042129.I31477@redhat.com>

On Thu, Feb 21, 2002 at 02:19:22PM -0500, Fred L. Drake, Jr. wrote:
> 
> Hannu Krosing writes:
>  > I looked them up in /usr/include/bits/dlfcn.h and wirth this it works
>  > 
>  > >>> sys.setdlopenflags(0x00002|0x00100)   
>  > >>> import libxslt
> 
> That's not just annoying, that's down right ugly!  I don't know how
> portable the constants are, either.  If this ends up being the only
> way to deal with this problem, I'd hope the libxml2/libxslt modules
> end up "wrapped" by modules written in Python that do something like
> this:

   thanks, I updated my wrappers to do something similar, but a bit
more careful checking first for the Os version before making any hardcoded
assumption. Also 1.5 here doesn't have sys.getdlopenflags ...

> Actually, I think there is another option, but it really wonderful
> either.  It might be better than this.  Both C extension modules can
> be implemented by a single .so this way:

  I would really prefer to avoid this for distribution purposes.

I have put updated RPMs of libxml2-python-2.4.16 and libxslt-python-1.0.12
with 2.2 modules at ftp://xmlsoft.org/test/

    Thanks for the help on this issue, I'm now looking at the setup.py docs,

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From mal@lemburg.com  Fri Feb 22 09:24:16 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Fri, 22 Feb 2002 10:24:16 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com>
 <3C75362C.B194EDFB@lemburg.com>
 <3C753906.9B8B84A9@lemburg.com>
 <15477.15257.751979.892048@grendel.zope.com>
 <1014316809.1781.4.camel@taru.tm.ee> <15477.16567.392503.678563@grendel.zope.com>
Message-ID: <3C760E40.916079E0@lemburg.com>

"Fred L. Drake, Jr." wrote:
> 
> Hannu Krosing writes:
>  > >>> import dl
>  > Traceback (most recent call last):
>  >   File "", line 1, in ?
>  > ImportError: No module named dl
>  >
>  > This is on RH linux 7.1 with Python 2.2
> 
> That's annoying.  Did you install from the RPMs or build from source?
> It looks like Python's default build will attempt to build it if it
> can find the dlfcn.h header file, so either that wasn't found on the
> machine it was built on, or that module was specifically not included
> (which wouldn't be unreasonable, I suppose).

Even if this works on some platforms, it won't on e.g. Windows.
It's better to find some other way to solve the problem, IMHO.

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From veillard@redhat.com  Fri Feb 22 09:36:44 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Fri, 22 Feb 2002 04:36:44 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <3C760E40.916079E0@lemburg.com>; from mal@lemburg.com on Fri, Feb 22, 2002 at 10:24:16AM +0100
References: <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <3C753906.9B8B84A9@lemburg.com> <15477.15257.751979.892048@grendel.zope.com> <1014316809.1781.4.camel@taru.tm.ee> <15477.16567.392503.678563@grendel.zope.com> <3C760E40.916079E0@lemburg.com>
Message-ID: <20020222043644.J31477@redhat.com>

On Fri, Feb 22, 2002 at 10:24:16AM +0100, M.-A. Lemburg wrote:
> Even if this works on some platforms, it won't on e.g. Windows.

  Why ? Outside the Python framework people have no troubles using
binaries linked against shared libraries of libxml2 amd libxslt on
Windows.
    http://www.fh-frankfurt.de/~igor/projects/libxml/

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From mal@lemburg.com  Fri Feb 22 10:08:37 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Fri, 22 Feb 2002 11:08:37 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <20020221133512.A19758@redhat.com>
Message-ID: <3C7618A5.91AAF29F@lemburg.com>

Daniel Veillard wrote:
> 
> On Thu, Feb 21, 2002 at 07:02:20PM +0100, M.-A. Lemburg wrote:
> > Daniel Veillard wrote:
> > >  This seems related to something like:
> > >    module A need shared lib l1
> > >    module B need module A and shared lib l2
> > >    shared lib l2 depends on a symbol from l1
> >
> > This is a bad thing for portability. You should never have
> > shared libs depend on each other -- dynamic linking will simply
> > screw up completely...
> 
>   Come'on zlib is shared and used for example by libpng. And if your
> graphic library need it you would have to have a special version
> of libpng statically compiled against zlib, nahhh you cannot impose
> this, on any platform !

If the dependencies are listed statically in the shared lib,
you don't have a problem -- the dynamic linker will then
load the lib on demand. However, Python loads module using
linker APIs, so the linking process is deferred and subject
to the linker options used for module import.

The problem is that Python does not use the RTLD_GLOBAL
option per default (I don't remember why, but do remember
there were some problems with making it the default). As
a result the symbols from the loaded DLLs are not made 
available to the process and neither to any other DLL
which might need them.

Now this is how it works on Linux... not sure about other
platforms. 

Note that Fred's trick with dynamically setting the
dlopen() flags only work on Python 2.2 and above.

> > Probably in the dynamic linker of the OS. Also, on some
> > platforms each DLL uses it's own heap for memory
> > allocation.
> >
> > Why not simply make l1 and l2 a single shared lib ?
> 
>   No I'm not gonna ship with library statically linked inside my
> shared library. The linker should be fixed instead.

You tell this Microsoft ;-)

Seriously, I think that Fred's second proposal (combining
the Python wrapper modules, rather than the libs) solves
this best. And it should work on all platforms and with all
Python versions.

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From mal@lemburg.com  Fri Feb 22 10:17:57 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Fri, 22 Feb 2002 11:17:57 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References: <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <3C753906.9B8B84A9@lemburg.com> <15477.15257.751979.892048@grendel.zope.com> <1014316809.1781.4.camel@taru.tm.ee> <15477.16567.392503.678563@grendel.zope.com> <3C760E40.916079E0@lemburg.com> <20020222043644.J31477@redhat.com>
Message-ID: <3C761AD5.6CF9886E@lemburg.com>

Daniel Veillard wrote:
> 
> On Fri, Feb 22, 2002 at 10:24:16AM +0100, M.-A. Lemburg wrote:
> > Even if this works on some platforms, it won't on e.g. Windows.
> 
>   Why ? Outside the Python framework people have no troubles using
> binaries linked against shared libraries of libxml2 amd libxslt on
> Windows.
>     http://www.fh-frankfurt.de/~igor/projects/libxml/

See my other reply and Fred's explanations. The problem is
due to the way Python imports modules. It does this
dynmically rather than at startup time since it is not known
in advance which modules will be needed by the process.

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From veillard@redhat.com  Fri Feb 22 10:33:46 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Fri, 22 Feb 2002 05:33:46 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <3C7618A5.91AAF29F@lemburg.com>; from mal@lemburg.com on Fri, Feb 22, 2002 at 11:08:37AM +0100
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <20020221133512.A19758@redhat.com> <3C7618A5.91AAF29F@lemburg.com>
Message-ID: <20020222053346.L31477@redhat.com>

On Fri, Feb 22, 2002 at 11:08:37AM +0100, M.-A. Lemburg wrote:
> Daniel Veillard wrote:
> If the dependencies are listed statically in the shared lib,
> you don't have a problem -- the dynamic linker will then

  And it seems that with a recent libtool, this works.

> Now this is how it works on Linux... not sure about other
> platforms. 
> 
> Note that Fred's trick with dynamically setting the
> dlopen() flags only work on Python 2.2 and above.

  Seen that, this is only needed if the dependancy is not
provided within the library. With both combined this should
cover a reasonable fraction of the Unix user base.

> > > Why not simply make l1 and l2 a single shared lib ?
> > 
> >   No I'm not gonna ship with library statically linked inside my
> > shared library. The linker should be fixed instead.
> 
> You tell this Microsoft ;-)

  Me ? No, I didn't used it in the last 10 years.

> Seriously, I think that Fred's second proposal (combining
> the Python wrapper modules, rather than the libs) solves
> this best. And it should work on all platforms and with all
> Python versions.

  Except it seems to break my existing packaging model. Though
not cast in stone I really would not like to change the RPM mapping
too much. But I'm not sure I have looked at all the facet of Fred's
proposal and how to actually build the stuff that way, so I will
still try to get it working.
  Microsoft packaging is anyway a domain I can't touch, I really don't
have such a box and don't intend to in the foreseable future, though I
usually take portability patches gracefully !

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From mal@lemburg.com  Fri Feb 22 10:43:26 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Fri, 22 Feb 2002 11:43:26 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <20020221133512.A19758@redhat.com> <3C7618A5.91AAF29F@lemburg.com> <20020222053346.L31477@redhat.com>
Message-ID: <3C7620CE.9100D8D6@lemburg.com>

Daniel Veillard wrote:
> 
> > Seriously, I think that Fred's second proposal (combining
> > the Python wrapper modules, rather than the libs) solves
> > this best. And it should work on all platforms and with all
> > Python versions.
> 
>   Except it seems to break my existing packaging model. Though
> not cast in stone I really would not like to change the RPM mapping
> too much. But I'm not sure I have looked at all the facet of Fred's
> proposal and how to actually build the stuff that way, so I will
> still try to get it working.

Ideal would be if you'd factor out the Python bindings completely.
Then you'd have three packages libxml2, libxslt and python-libxml.

The advantage of this approach is that you can then use setup.py
to build the Python binding and also combine the two bindings
into one (shouldn't be too hard, since you are generating
the wrappers anyway, I figure).

Your packaging would have to change in that *you* will have to
run the generator and then place the generated .c files into
the package. setup.py can then take it from there.

>   Microsoft packaging is anyway a domain I can't touch, I really don't
> have such a box and don't intend to in the foreseable future, though I
> usually take portability patches gracefully !

With distutils you get this for free !

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From veillard@redhat.com  Fri Feb 22 11:00:06 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Fri, 22 Feb 2002 06:00:06 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <3C7620CE.9100D8D6@lemburg.com>; from mal@lemburg.com on Fri, Feb 22, 2002 at 11:43:26AM +0100
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <20020221133512.A19758@redhat.com> <3C7618A5.91AAF29F@lemburg.com> <20020222053346.L31477@redhat.com> <3C7620CE.9100D8D6@lemburg.com>
Message-ID: <20020222060006.N31477@redhat.com>

On Fri, Feb 22, 2002 at 11:43:26AM +0100, M.-A. Lemburg wrote:
> Daniel Veillard wrote:
> > > Seriously, I think that Fred's second proposal (combining
> > > the Python wrapper modules, rather than the libs) solves
> > > this best. And it should work on all platforms and with all
> > > Python versions.
> > 
> >   Except it seems to break my existing packaging model. Though
> > not cast in stone I really would not like to change the RPM mapping
> > too much. But I'm not sure I have looked at all the facet of Fred's
> > proposal and how to actually build the stuff that way, so I will
> > still try to get it working.
> 
> Ideal would be if you'd factor out the Python bindings completely.
> Then you'd have three packages libxml2, libxslt and python-libxml.

  Well this does not match my setup and existing packaging:
     - the CVS trees, libxslt and libxml2 are in separate areas, each
       with a python dedicated subtree
     - the python binding testing are part of my regression tests
       I also use the python binding to make some regression tests
       of the libxml2 conformance, so decoupling those would IMHO
       be a step back.
     - the release schedules of libxml2 and libxslt are not tied,
       though I usually roll them simultaneously it's not a rule.
     - it should be possible to install the libxml2 python bindings
       without installing the libxslt package, I dislike the idea of
       putting a requirement in that direction.

> The advantage of this approach is that you can then use setup.py
> to build the Python binding and also combine the two bindings
> into one (shouldn't be too hard, since you are generating
> the wrappers anyway, I figure).

  95% of them are generated, yes, based on API description files
themselves generated in the libxml2/libxslt build.

> >   Microsoft packaging is anyway a domain I can't touch, I really don't
> > have such a box and don't intend to in the foreseable future, though I
> > usually take portability patches gracefully !
> 
> With distutils you get this for free !

  How does distutils tell me that the libxml2/libxslt libraries where
compiled with Cygwin versus MSC on the Windows platform ? The linking
conventions seems to require that information and going through the doc
of distutils I could not find anything about it.

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From mal@lemburg.com  Fri Feb 22 12:02:43 2002
From: mal@lemburg.com (M.-A. Lemburg)
Date: Fri, 22 Feb 2002 13:02:43 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
References:  <200202211502.g1LF2kD03794@localhost.localdomain> <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <20020221133512.A19758@redhat.com> <3C7618A5.91AAF29F@lemburg.com> <20020222053346.L31477@redhat.com> <3C7620CE.9100D8D6@lemburg.com> <20020222060006.N31477@redhat.com>
Message-ID: <3C763363.3380C73A@lemburg.com>

Daniel Veillard wrote:
> 
> On Fri, Feb 22, 2002 at 11:43:26AM +0100, M.-A. Lemburg wrote:
> > Daniel Veillard wrote:
> > > > Seriously, I think that Fred's second proposal (combining
> > > > the Python wrapper modules, rather than the libs) solves
> > > > this best. And it should work on all platforms and with all
> > > > Python versions.
> > >
> > >   Except it seems to break my existing packaging model. Though
> > > not cast in stone I really would not like to change the RPM mapping
> > > too much. But I'm not sure I have looked at all the facet of Fred's
> > > proposal and how to actually build the stuff that way, so I will
> > > still try to get it working.
> >
> > Ideal would be if you'd factor out the Python bindings completely.
> > Then you'd have three packages libxml2, libxslt and python-libxml.
> 
>   Well this does not match my setup and existing packaging:
>      - the CVS trees, libxslt and libxml2 are in separate areas, each
>        with a python dedicated subtree
>      - the python binding testing are part of my regression tests
>        I also use the python binding to make some regression tests
>        of the libxml2 conformance, so decoupling those would IMHO
>        be a step back.
>      - the release schedules of libxml2 and libxslt are not tied,
>        though I usually roll them simultaneously it's not a rule.
>      - it should be possible to install the libxml2 python bindings
>        without installing the libxslt package, I dislike the idea of
>        putting a requirement in that direction.

I don't think you have much of a choice :-/

Note that the conformance tests could be part of the Python
binding package (users will need Python anyway in order to
run them, so you already have an extra requirement). Also,
I don't think libxml2 would have much of a problem with
having to install libxslt too. And finally, you can have 
setup.py disable the xslt support at compilation time (e.g. 
if the lib is not found) by e.g. not defining a HAVE_LIBXSLT 
symbol or simply not including the necessary .c files.

> > The advantage of this approach is that you can then use setup.py
> > to build the Python binding and also combine the two bindings
> > into one (shouldn't be too hard, since you are generating
> > the wrappers anyway, I figure).
> 
>   95% of them are generated, yes, based on API description files
> themselves generated in the libxml2/libxslt build.
> 
> > >   Microsoft packaging is anyway a domain I can't touch, I really don't
> > > have such a box and don't intend to in the foreseable future, though I
> > > usually take portability patches gracefully !
> >
> > With distutils you get this for free !
> 
>   How does distutils tell me that the libxml2/libxslt libraries where
> compiled with Cygwin versus MSC on the Windows platform ? The linking
> conventions seems to require that information and going through the doc
> of distutils I could not find anything about it.

There is no way: both use .dll as extension. However, the overall
directory setup for cygwin is different from that of MS VC and
the cygwin support in distutils will automatically use the
Unix like paths while MS VC uses its own environment.

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/


From Alexandre.Fayolle@logilab.fr  Fri Feb 22 15:20:57 2002
From: Alexandre.Fayolle@logilab.fr (Alexandre Fayolle)
Date: Fri, 22 Feb 2002 16:20:57 +0100 (CET)
Subject: [XML-SIG] quick stupid question
Message-ID: 

Is it legal to have a NULL character in an XML document?

I've seen different parsers behaving differently with such documents. 

Thanks

Alexandre Fayolle
-- 
LOGILAB, Paris (France).
http://www.logilab.com   http://www.logilab.fr  http://www.logilab.org
Narval, the first software agent available as free software (GPL).



From fdrake@acm.org  Fri Feb 22 15:53:08 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Fri, 22 Feb 2002 10:53:08 -0500
Subject: [XML-SIG] quick stupid question
In-Reply-To: 
References: 
Message-ID: <15478.26980.620055.609398@grendel.zope.com>

Alexandre Fayolle writes:
 > Is it legal to have a NULL character in an XML document?
 > 
 > I've seen different parsers behaving differently with such documents. 

It is not a legal XML character.  See:

	http://www.w3.org/TR/REC-xml#charsets


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From Alexandre.Fayolle@logilab.fr  Fri Feb 22 16:14:03 2002
From: Alexandre.Fayolle@logilab.fr (Alexandre Fayolle)
Date: Fri, 22 Feb 2002 17:14:03 +0100 (CET)
Subject: [XML-SIG] quick stupid question
In-Reply-To: <15478.26980.620055.609398@grendel.zope.com>
Message-ID: 

On Fri, 22 Feb 2002, Fred L. Drake, Jr. wrote:

> 
> Alexandre Fayolle writes:
>  > Is it legal to have a NULL character in an XML document?
>  > 
>  > I've seen different parsers behaving differently with such documents. 
> 
> It is not a legal XML character.  See:
> 
> 	http://www.w3.org/TR/REC-xml#charsets

Thanks. Expat complains, but it looks like xmlproc says nothing. 

Alexandre Fayolle
-- 
LOGILAB, Paris (France).
http://www.logilab.com   http://www.logilab.fr  http://www.logilab.org
Narval, the first software agent available as free software (GPL).



From fdrake@acm.org  Fri Feb 22 16:17:31 2002
From: fdrake@acm.org (Fred L. Drake, Jr.)
Date: Fri, 22 Feb 2002 11:17:31 -0500
Subject: [XML-SIG] quick stupid question
In-Reply-To: 
References: <15478.26980.620055.609398@grendel.zope.com>
 
Message-ID: <15478.28443.78073.625083@grendel.zope.com>

Alexandre Fayolle writes:
 > Thanks. Expat complains, but it looks like xmlproc says nothing. 

Yeah, I knew Expat gets that right; it's one of my only test cases!
(The paucity of tests is on my list of things to fix for Expat.)


  -Fred

-- 
Fred L. Drake, Jr.  
PythonLabs at Zope Corporation


From veillard@redhat.com  Fri Feb 22 17:19:17 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Fri, 22 Feb 2002 12:19:17 -0500
Subject: [XML-SIG] quick stupid question
In-Reply-To: <15478.28443.78073.625083@grendel.zope.com>; from fdrake@acm.org on Fri, Feb 22, 2002 at 11:17:31AM -0500
References: <15478.26980.620055.609398@grendel.zope.com>  <15478.28443.78073.625083@grendel.zope.com>
Message-ID: <20020222121917.Q31477@redhat.com>

On Fri, Feb 22, 2002 at 11:17:31AM -0500, Fred L. Drake, Jr. wrote:
> 
> Alexandre Fayolle writes:
>  > Thanks. Expat complains, but it looks like xmlproc says nothing. 
> 
> Yeah, I knew Expat gets that right; it's one of my only test cases!
> (The paucity of tests is on my list of things to fix for Expat.)

  there is the XML Test suite but most of them requires a parser
with validating capacity which expat can't do:
   http://www.oasis-open.org/committees/xml-conformance/index.shtml

Daniel

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From k_vertigo@yahoo.com  Fri Feb 22 23:00:45 2002
From: k_vertigo@yahoo.com (kapil thangavelu)
Date: Fri, 22 Feb 2002 15:00:45 -0800
Subject: [XML-SIG] WSDL library ?
In-Reply-To: <20020210181436.XKBH379.out019.verizon.net@there>
References: <20020210181436.XKBH379.out019.verizon.net@there>
Message-ID: <200202222147.g1MLl7377060@pimout3-int.prodigy.net>

another wsdl library (along with a soap implementation) is resting in zope cvs
http://cvs.zope.org/Packages/WebService/

not sure about its status.

cheers
kapil

On Sunday 10 February 2002 10:11 am, Eron Lloyd wrote:
> I've been playing with wsdllib, from a IBM developerWorks article by Uche.
> I've attached the actual module for you to look at. The article can be
> found here:
> http://www-105.ibm.com/developerworks/education.nsf/webservices-onlinecours
>e-bytitle/D092605075D1D67D86256A7E0042432D?OpenDocument
>
> Regards,
>
> Eron


From veillard@redhat.com  Fri Feb 22 23:16:36 2002
From: veillard@redhat.com (Daniel Veillard)
Date: Fri, 22 Feb 2002 18:16:36 -0500
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <15477.18490.929083.210424@grendel.zope.com>; from fdrake@acm.org on Thu, Feb 21, 2002 at 02:19:22PM -0500
References: <20020221101738.X25311@redhat.com> <1014312693.15078.4.camel@taru.tm.ee> <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com> <3C753906.9B8B84A9@lemburg.com> <15477.15257.751979.892048@grendel.zope.com> <1014316809.1781.4.camel@taru.tm.ee> <15477.16567.392503.678563@grendel.zope.com> <1014317723.1391.9.camel@taru.tm.ee> <15477.18490.929083.210424@grendel.zope.com>
Message-ID: <20020222181636.U31477@redhat.com>

On Thu, Feb 21, 2002 at 02:19:22PM -0500, Fred L. Drake, Jr. wrote:
> Actually, I think there is another option, but it really wonderful
> either.  It might be better than this.  Both C extension modules can
> be implemented by a single .so this way:
> 
> 1. Implement two internal functions that do what the current
>    init functions do; let's call these _init_1 and _init_2.
> 
> 2. Write *two* init functions (initA and initB), each of which
>    calls both _init_1 and _init_2.
> 
> 3. Install the .so as A.so *and* B.so, so it doesn't matter which gets
>    imported first.  When imported, both modules are initialized and
>    inserted in sys.modules, so subsequent imports will pick up the
>    cached module.
> 
> Somewhat painful, but it should avoid these library dependence
> problems, at least in this case.

   Okay, I have tried to do somthing along those lines. The setup.py
is "abnormaly" complex due to the fact:
    - that it generates the stubs for both libraries
    - it is tweaked to also be able to run from libxml2 distrib
      python subdir
    - that it may be used to build only the libxml2 package.

It requires xmllib or sgmlop to parse the APIs descriptions, but 
it seems to work even on my ancient 1.5 setup.

  I have uploaded the binding package at [*]
     ftp://xmlsoft.org/test/libxml2-python-2.4.16.tar.gz

It's probably not very portable, not that the C code is not portable but
I have no idea of the conventions needed to access libxml2 or libxslt
on Windows, nor how to "detect" the prefix for the include paths on Unix
from the python code (currently hardcoded to /usr/include/libxml2 and
/usr/include/libxslt). Portability patches are of course welcome.

I also didn't included the test in the package, the documentation on
distribuing python modules may be outdated (the PDF one) it says that
there is framework for tests but not implemented. So I left that out
for the moment.

Daniel

[*] that package is actually build from my development trees of libxml2
    and libxslt by a shell script merging the python parts and checking
    setup.py build sdist in that directory

-- 
Daniel Veillard      | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/


From martin@v.loewis.de  Sat Feb 23 00:50:54 2002
From: martin@v.loewis.de (Martin v. Loewis)
Date: 23 Feb 2002 01:50:54 +0100
Subject: [XML-SIG] quick stupid question
In-Reply-To: 
References: 
Message-ID: 

Alexandre Fayolle  writes:

> Thanks. Expat complains, but it looks like xmlproc says nothing. 

Please file a bug report.

Martin


From martin@v.loewis.de  Sat Feb 23 00:54:57 2002
From: martin@v.loewis.de (Martin v. Loewis)
Date: 23 Feb 2002 01:54:57 +0100
Subject: [XML-SIG] Availability of libxml2 and libxslt Python bindings
In-Reply-To: <3C7618A5.91AAF29F@lemburg.com>
References: 
 <200202211502.g1LF2kD03794@localhost.localdomain>
 <20020221101738.X25311@redhat.com>
 <1014312693.15078.4.camel@taru.tm.ee>
 <20020221124648.B25311@redhat.com> <3C75362C.B194EDFB@lemburg.com>
 <20020221133512.A19758@redhat.com> <3C7618A5.91AAF29F@lemburg.com>
Message-ID: 

"M.-A. Lemburg"  writes:

> The problem is that Python does not use the RTLD_GLOBAL
> option per default (I don't remember why, but do remember
> there were some problems with making it the default).

The problem is that you would be exposing unrelated symbols, e.g. the
XML parsing library may conflict with your GUI library. One specific
incidence was that the Oracly library crashed because it got the
initsocket symbol from the Python module, not from its own shared
library.

> Now this is how it works on Linux... not sure about other
> platforms. 

On Windows, you always have local symbol resolution, since the
reference always refers to a (DLL name, symbol name) pair. On Mac OS
X, you currently have a flat namespace, which is a serious problem.

Regards,
Martin


From abottoni@quadrante.com  Mon Feb 25 09:50:37 2002
From: abottoni@quadrante.com (Alessandro Bottoni)
Date: Mon, 25 Feb 2002 01:50:37 -0800
Subject: [XML-SIG] Re: Maki: great!
References: <200202211453.g1LErv103729@localhost.localdomain>
Message-ID: <001801c1bde1$e0d325f0$de00a8c0@intranet.quadrante.com>

I apologize! I read the docs on your site a long time ago and I got
convinced it was a commercial product, probably because of the required
registration... Given this situation, I will re-take 4Suite into account for
my work.

----- Original Message -----
From: "Uche Ogbuji" 
To: "Alessandro Bottoni" 
Sent: Thursday, February 21, 2002 6:53 AM
Subject: Re: [XML-SIG] Re: Maki: great!


> 4SuiteServer
> 1) 4SuiteServer is a commercial application. When possible, I (we) avoid
to
> use commercial application, even if the cost is very, very low. The reason
> of this (arguable) behavior is that is becoming a nightmare to manage the
> huge amount of license documents/criteria and the continuos stream of
> licence expiration/payment events in our (already chaotic) production
> environment. For what regards me, I abandoned M$ for the same reasons a
long
> time ago.

Say what?

First of all, "4Suite server" has disappeared.  We've bundled the XML
repository right into 4Suite, as an easier way to manage the packaging and
development.

Secondly, 4Suite Server was always free and open-source.  We did request
people to register before the free download, as a fair exchange, but the
software was Apache license, which is about as free as it gets.

Certainly, now that the repository features have been merged into 4Suite,
there should be no more confusion on that matter.


--
Uche Ogbuji                               Principal Consultant
uche.ogbuji@fourthought.com               +1 303 583 9900 x 101
Fourthought, Inc.                         http://Fourthought.com
4735 East Walnut St, Boulder, CO 80301-2537, USA
XML strategy, XML tools (http://4Suite.org), knowledge management






From abottoni@quadrante.com  Mon Feb 25 10:32:14 2002
From: abottoni@quadrante.com (Alessandro Bottoni)
Date: Mon, 25 Feb 2002 02:32:14 -0800
Subject: [XML-SIG] Re: Maki: great!
References: 
Message-ID: <002101c1bde7$b147eae0$de00a8c0@intranet.quadrante.com>

----- Original Message -----
From: "Nicolas Chauvat" 
To: "Alessandro Bottoni" 
Cc: 
Sent: Thursday, February 21, 2002 4:23 AM
Subject: Re: [XML-SIG] Re: Maki: great!


-- omissis --
> Zope components (called Products in Zope talk) are a reality. They are far
> too difficult to build, IMHO, but I don't now of other Pyhon-based web
> framework that provide such reusability. I haven't used that many
> different ones, tho.
>
> As a conclusion, I think Zope needs much improvement indeed, but it's
> there and it works. Is it worth it to start completely from scratch ?

[Alessandro Bottoni]
I knew "Zope products" already... I agree with you about their "programmer
friendliness"...

There isn't any other python-based web framework like Zope available, as
long as I know.

Well, I think it is worth to create an alternative to Zope. Have a look at
ezPublish, PHPNuke or "Cocoon portal" and you will understand why... It is
not a matter of aesthethic or phylosophy: real-world web developers really
need fast development tools like those. They cannot spend weeks or months
studing complicated architectures like Zope just for having a simple,
working portal, like many others, as a final result. Do you remember? "Easy
things made easy and difficult things made manageables" That's what those
frameworks give us.

>
> > 4SuiteServer
> > 1) 4SuiteServer is a commercial application. When possible, I (we) avoid
to
> > use commercial application, even if the cost is very, very low. The
reason
> > of this (arguable) behavior is that is becoming a nightmare to manage
the
> > huge amount of license documents/criteria and the continuos stream of
> > licence expiration/payment events in our (already chaotic) production
> > environment. For what regards me, I abandoned M$ for the same reasons a
long
> > time ago.
>
> Beep [wrong answer]. 4SuiteServer is open source software ! Nothing there
> can be compared to M$ !!!
>

[Alessandro Bottoni]
I apologize for this: I was convinced it was a commercial product.

> > What I really need, is an open source, modular, easily configurable,
easily
> > extendable, pre-built portal. Something I can install in a couple of
hour,
> > prepare it for the customer in a couple of days and manage from script
and
> > external tools at my wish. Something that makes easy to create
task-specific
> > modules and that can accept new modules in a easy way. That is exactly
what
> > ezPublih gives me in the HTML field. That is what "Cocoon portal"
promises
> > in the XML arena. As long as I can see, nothing like that is available
in
> > the Python world, at the moment.
>
> "Build it and they will come." :-)
>

[Alessandro Bottoni]
I'm already studing the inner structure of ezPublish and Cocoon Portal. As
soon as I will have more freetime, I will try to develop a web framework of
that kind using the available python-based software (4Suite, Maki, WebWare
or whatever is suited for the task). Maybe, I will just be able to develop a
minimal skeleton: I do not know how much time I will be able to devote to
this project... In any case, I will try. At the moment, just one thing is
defined: it will be open source.

Again, it is not matter of  language religion: I just need something like
ezPublish and\or Cocoon portal for my day-to-day work and I do not really
consider the existing stuff completely satisfactory.

[The reasons why I do not consider PHP (PHPNuke and ezPublish) and Java
(Cocoon) satisfactory for this task should be evidents to python users: Java
is very slow and is arguably open source (no core java source is available
for free...). PHP is not a real "general purpose" language, so you are
forced to use at least two different languages for your day-to-day work (PHP
and Perl, e.g.). Python should be the "right" choice for this task.]

See you

Alessandro Bottoni



From alf@logilab.fr  Mon Feb 25 14:02:09 2002
From: alf@logilab.fr (alf@logilab.fr)
Date: Mon, 25 Feb 2002 15:02:09 +0100
Subject: [XML-SIG] Fwd: Problem with 4Dom xslt processor
Message-ID: <200202251402.PAA02288@sagittarius.logilab.fr>

I'm forwarding this message from c.l.p., in hope it will be answered 
here.

Alexandre Fayolle
----------------------------------------------------
From: sjoshi@ingr.com (Sunit Joshi)
Newsgroups: comp.lang.python
Subject: Problem with 4Dom xslt processor
Date: 19 Feb 2002 06:56:43 -0800

Hello all
I'm trying to use the 4DOM's xslt processor I keep getting this error
(below) when trying to append a stylesheet. Any pointers are greatly
appreciated.

thanks
Sunit

>>> from xml.xslt.Processor import Processor
>>> proc = Processor()
>>> proc

>>> proc.appendStylesheetUri('ships.xsl')
Traceback (most recent call last):
  File "", line 1, in ?
  File "C:\Python21\_xmlplus\xslt\Processor.py", line 95, in
appendStylesheetUri

    sty = self._styReader.fromUri(styleSheetUri, baseUri)
  File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 297, in
fromUri
    ownerDoc, stripElements)
  File "C:\Python21\_xmlplus\xslt\minisupport.py", line 58, in fromUri
    return self.fromStream(stream, baseUri, ownerDoc, stripElements)
  File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 304, in
fromStream
    self.initParser()
  File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 344, in
initParser
    if self._force8Bit:
AttributeError: StylesheetReader instance has no attribute
'_force8Bit'


From Mike.Olson@fourthought.com  Mon Feb 25 17:16:01 2002
From: Mike.Olson@fourthought.com (Mike Olson)
Date: 25 Feb 2002 10:16:01 -0700
Subject: [XML-SIG] Fwd: Problem with 4Dom xslt processor
In-Reply-To: <200202251402.PAA02288@sagittarius.logilab.fr>
References: <200202251402.PAA02288@sagittarius.logilab.fr>
Message-ID: <1014657361.3150.2.camel@penny>

On Mon, 2002-02-25 at 07:02, Alexandre.Fayolle@logilab.fr wrote:
> 
> I'm forwarding this message from c.l.p., in hope it will be answered 
> here.

What verson of 4Suite and PyXML are you using?

Mike

> 
> Alexandre Fayolle
> ----------------------------------------------------
> From: sjoshi@ingr.com (Sunit Joshi)
> Newsgroups: comp.lang.python
> Subject: Problem with 4Dom xslt processor
> Date: 19 Feb 2002 06:56:43 -0800
> 
> Hello all
> I'm trying to use the 4DOM's xslt processor I keep getting this error
> (below) when trying to append a stylesheet. Any pointers are greatly
> appreciated.
> 
> thanks
> Sunit
> 
> >>> from xml.xslt.Processor import Processor
> >>> proc = Processor()
> >>> proc
> 
> >>> proc.appendStylesheetUri('ships.xsl')
> Traceback (most recent call last):
>   File "", line 1, in ?
>   File "C:\Python21\_xmlplus\xslt\Processor.py", line 95, in
> appendStylesheetUri
> 
>     sty = self._styReader.fromUri(styleSheetUri, baseUri)
>   File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 297, in
> fromUri
>     ownerDoc, stripElements)
>   File "C:\Python21\_xmlplus\xslt\minisupport.py", line 58, in fromUri
>     return self.fromStream(stream, baseUri, ownerDoc, stripElements)
>   File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 304, in
> fromStream
>     self.initParser()
>   File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 344, in
> initParser
>     if self._force8Bit:
> AttributeError: StylesheetReader instance has no attribute
> '_force8Bit'
> 
> _______________________________________________
> XML-SIG maillist  -  XML-SIG@python.org
> http://mail.python.org/mailman/listinfo/xml-sig
-- 
Mike Olson                                Principal Consultant
mike.olson@fourthought.com                +1 303 583 9900 x 102
Fourthought, Inc.                         http://Fourthought.com 
4735 East Walnut St,                      http://4Suite.org
Boulder, CO 80301-2537, USA
XML strategy, XML tools, knowledge management



From norton@alum.mit.edu  Tue Feb 26 07:19:37 2002
From: norton@alum.mit.edu (Joseph Wayne Norton)
Date: Tue, 26 Feb 2002 16:19:37 +0900
Subject: [XML-SIG] problem with demo/xmlproc/dtd2schema.py
Message-ID: <874rk4pv5i.wl@namaste.tokyo.att.ne.jp>

Hello.

I just installed PyXML from the latest CVS checkout using python 2.1.2
on the linux platform.

Just for demo purposes, I tried running the dtd2schema.py demo utility
on the FIXML DTD (contained in the following bundle -
http://www.fixprotocol.org/cgi-bin/Spec.cgi?menu=4). However, I ran
into 2 issues listed below.

Any idea on where the problem might lie?
 
thanks,

- joe n.


1) I modifed the parsers/xmlplus/utils.py file by adding the missing
   locator parameter.

    class ErrorPrinter(xmlapp.ErrorHandler):
       """An error handler that prints out warning messages."""

    def __init__(self, locator, level = 0, out = sys.stderr):
        self.locator = locator
        self.level = level
        self.out = out

2) The reported errors seem correct but the warnings do not make sense
   to me.  I'm not able to see the corresponding issue in the dtd
   file.

norton@namaste:~/src/fix-doc$ /usr/local/Python-2.1.2/bin/python /home/norton/work/workbench/obj\
> /linux/PyXML-0.7/demo/xmlproc/dtd2schema.py fixml4.3v1.0.dtd.orig 

dtd2schema.py

Loading DTD...
WARNING: Attribute 'FIXTag' defined more than once at fixml4.3v1.0.dtd.orig:1292:1
WARNING: Attribute 'FIXTag' defined more than once at fixml4.3v1.0.dtd.orig:2178:1
WARNING: Attribute 'FIXTag' defined more than once at fixml4.3v1.0.dtd.orig:2621:26
WARNING: Attribute 'DataType' defined more than once at fixml4.3v1.0.dtd.orig:2622:26
WARNING: Attribute 'Value' defined more than once at fixml4.3v1.0.dtd.orig:2623:26
ERROR: Token 'NextDay' defined more than once at fixml4.3v1.0.dtd.orig:2707:16
WARNING: Attribute 'FIXTag' defined more than once at fixml4.3v1.0.dtd.orig:3954:2
WARNING: Attribute 'DataType' defined more than once at fixml4.3v1.0.dtd.orig:3955:2
WARNING: Attribute 'Value' defined more than once at fixml4.3v1.0.dtd.orig:3956:2
ERROR: Token 'M1' defined more than once at fixml4.3v1.0.dtd.orig:4203:95
ERROR: Token 'M2' defined more than once at fixml4.3v1.0.dtd.orig:4203:95
ERROR: Token 'MT' defined more than once at fixml4.3v1.0.dtd.orig:4203:95
Doing reverse-engineering...
Writing out schema



From noreply@sourceforge.net  Tue Feb 26 22:09:11 2002
From: noreply@sourceforge.net (noreply@sourceforge.net)
Date: Tue, 26 Feb 2002 14:09:11 -0800
Subject: [XML-SIG] [ pyxml-Bugs-523159 ] RelaxNG Error
Message-ID: 

Bugs item #523159, was opened at 2002-02-26 14:09
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=106473&aid=523159&group_id=6473

Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Keyton Weissinger (keytonw)
Assigned to: Nobody/Anonymous (nobody)
Summary: RelaxNG Error

Initial Comment:
When I attempt to run demo.py or testall.py from the 
relax ng section of the sandbox, I get the following:

Traceback (most recent call last):
  File "D:\work\pyxml\sandbox\relaxng\demo.py", line 
68, in ?
    main()
  File "D:\work\pyxml\sandbox\relaxng\demo.py", line 
47, in main
    schema = fullparser.parse(stream)
  File "D:\work\pyxml\sandbox\relaxng\fullparser.py", 
line 592, in parse
    assert stream.get_next_event()[0] == 
pulldom.START_DOCUMENT
  File "D:\work\pyxml\sandbox\relaxng\util.py", line 
236, in get_next_event
    event, node = self.next()
  File "D:\work\pyxml\sandbox\relaxng\util.py", line 
178, in next
    event, node = self.stream.next()
AttributeError: DOMEventStream instance has no 
attribute 'next'

Looks like I don't have the right version of 
DOMEventStream, but I have what's in CVS.

Is there another version? Am I doing something wrong?

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=106473&aid=523159&group_id=6473


From nef@ntu.edu.sg  Wed Feb 27 06:40:53 2002
From: nef@ntu.edu.sg (nef@ntu.edu.sg)
Date: Wed, 27 Feb 2002 14:40:53 +0800
Subject: [XML-SIG] SEAL'02-ICONIP'02-FSKD'02 Call For Papers
Message-ID: 

   [Sincere apologies if you receive multiple copies of this announce-
    ment or if you are not interested in it. We would greatly
    appreciate it if you could forward this CFP to your colleagues.]

----------------------------------------------------------------------
   4th Asia-Pacific Conference on Simulated Evolution And Learning
                          (SEAL'02)
    9th International Conference on Neural Information Processing
                         (ICONIP'02)
   International Conference on Fuzzy Systems and Knowledge Discovery
                          (FSKD'02)
----------------------------------------------------------------------
        November 18 - 22, 2002, Orchid Country Club, Singapore
                 http://www.ntu.edu.sg/home/nef

                         Organized by:
           School of Electrical and Electronic Engineering
             Nanyang Technological University, Singapore

                         Sponsored by:
               Asia-Pacific Neural Network Assembly
                 SEAL & FSKD Steering Committees

                      In Co-Operation with:
                   IEEE Neural Network Society
               International Neural Network Society
                  European Neural Network Society
                            SPIE

                         Supported by:
                        Lee Foundation
            Singapore Exhibition & Convention Bureau

               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               CALL FOR PAPERS, SPONSORSHIPS, AND
                   SPECIAL SESSION PROPOSALS
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SEAL'02, ICONIP'02, and FSKD'02 will be jointly held in Orchid Country
Club, Singapore from November 18 to 22, 2002. The conferences will
not only feature the most up-to-date research results in evolutionary
computation, neural information processing, fuzzy systems, and
knowledge discovery, but also promote cross-fertilization over these
exciting and yet closely-related areas. Registration to any one of the
conferences will entitle a participant to the technical sessions and
the proceedings of all three conferences, as well as the conference
banquet, buffet lunches, and tours to two of the major attractions in
Singapore, i.e., Night Safari and Sentosa Resort Island. Many well-
known researchers will present keynote speeches, panel discussions,
invited lectures, and tutorials.

About Singapore
---------------
Located at one of the most important crossroads of the world,
Singapore is truly a place where East and West come together. Here you
will find Chinese, Indian, and Malay communities living together,
their long established cultures forming a unique backdrop to a clean
and modern garden city. English is spoken everywhere and is the common
business language of all. Few places on earth promise such a delight
for the palate, with gourmet cuisine from over 30 countries. Exotic
resorts in neighboring countries are only a short bus/ferry ride away.

Orchid Country Club (OCC)
-------------------------
The venue for this year's conferences is at one of Singapore's
premier country clubs, a 25-minute bus ride from the city. Away from
the hustle and bustle of downtown Singapore, the tranquil setting of
the resort is ideal for serious technical discussions with an
accommodating space and ambience for relaxation. Not to miss out on
the splendor of downtown Singapore, the organizer has also secured
good quality and affordable accommodation in the heart of the city
with pre-arranged transport to/from the OCC. For golf enthusiasts,
OCC is equipped with the largest computerized driving range in South
East Asia and boasts of a 27-hole golf course with facilities for
night golfing, ideal for relaxation after each day of technical
discussions. Visit the OCC website at http://www.orchidclub.com

Night Safari and Sentosa Resort Island
--------------------------------------
It is said that a visit to Singapore is not complete without making
a trip to two of the Republic's famous attractions. The only one of
its kind in the world, the Night Safari provides a setting for
visitors to experience what it is like to observe animals in their
nocturnal habitat. The island of Sentosa offers some unique
attractions and a visit there will also provide a glimpse and
imagery of Singapore's past and present. Visits to these two
attractions will be included as recreation for the joint conference.
(Websites: http://www.zoo.com.sg/safari/, http://www.sentosa.com.sg)

Topics of Interest
------------------
The joint conferences welcomes paper submissions from researchers,
practitioners, and students worldwide in but not limited to the
following areas.

   SEAL'02:
   ~~~~~~~
   THEORY - Co-evolution, Coding methods, Collective behavior
   METHODOLOGY - Evolution strategies, Genetic algorithms, Genetic
       programming, Molecular and quantum computing, Evolvable
       hardware, Multi-objective optimization, Ant colony, Artificial
       ecology
   EVOLUTIONARY LEARNING - Artificial life, Bayesian evolutionary
       algorithms
   HYBRID SYSTEMS - Evolutionary neuro-fuzzy systems, Soft computing
   APPLICATIONS - Scheduling, Operations research, Design, etc

   ICONIP'02:
   ~~~~~~~~~
   NATURAL NEURAL SYSTEMS - Neuroscience, Neurobiology, Neuro-
       physiology, Brain imaging, Learning and memory
   ARTIFICIAL NEURAL MODELS - Learning algorithms, Neural modeling and
       architectures, Neurodynamics
   COGNITIVE SCIENCE - Perception, emotion, and cognition, Selective
       attention, Vision and auditory models
   HARDWARD IMPLEMENTATION - Artificial retina & cochlear chips
   HYBRID SYSTEMS - Neuro-fuzzy systems, Evolutionary neural nets, etc
   APPLICATIONS - Bioinformatics, Finance, Manufacturing, etc.

   FSKD'02:
   ~~~~~~~
   THEORY AND FOUNDATIONS - Fuzzy theory and models, Uncertainty
       management, Statistical & probabilistic data mining, Computing
       with words, Rough sets, Intelligent agents
   METHODS AND ALGORITHMS - Classification, Clustering, Information
       retrieval &  fusion, Data warehousing & OLAP, Fuzzy hardware,
       Visualization, Decision trees, Data preprocessing
   HYBRID SYSTEMS - Evolutionary neuro-fuzzy systems, Soft computing
   APPLICATIONS - Control, Optimization, Natural language processing,
       Forecasting, Human-computer interaction, etc.

Special Sessions
----------------
The conferences will feature special sessions on specialized topics
to encourage in-depth discussions. To propose a special session, email
the session title, name of the conference under which the special
session will be organized, contact information of the organizer(s),
and a short description on the theme and topics covered by the
session to Xin Yao, Special Sessions Chair (x.yao@cs.bham.ac.uk),
with a copy to Lipo Wang, General Chair (Cc: elpwang@ntu.edu.sg).

Sponsorship
-----------
The conferences will offer product vendors a sponsorship package
and/or an opportunity to interact with conference participants.
Product demonstration and exhibition can also be arranged. For more
information, please visit the conference website or contact
Tong Seng Quah, Sponsorship/Exhibition Chair (itsquah@ntu.edu.sg),
with a copy to Lipo Wang, General Chair (Cc: elpwang@ntu.edu.sg).

Keynote Speakers
----------------
Shun-ichi Amari, RIKEN Brain Science Institute, Japan
David Fogel, Natural Selection, Inc., USA
Mitsuo Kawato, ATR, Japan
Xin Yao, The University of Birmingham, UK
Lotfi A. Zadeh, University of California, USA

Registration Fee
----------------
The registration fee for regular participants before August 15, 2002
is S$680 (approximately US$370 as at February 6, 2002), which includes
the proceedings, lunches, banquet, and tours.

Submission of Papers
--------------------
Authors are invited to submit electronic files (postscript, pdf or
Word format) through the conference home page. Papers should be
double-column and use 10 pt Times Roman or similar fonts. The final
version of a paper should not exceed 5 pages in length. A selected
number of accepted papers will be expanded and revised for possible
inclusion in edited books and peer-reviewed journals, such as
"Soft Computing" and "Knowledge and Information Systems: An
International Journal" by Springer-Verlag.

Important Dates
---------------
	Paper/Summary Deadline     :   April 30, 2002
	Notification of Acceptance :   July 15, 2002
	Final Paper/ Registration  :   August 15, 2002

Honorary Conference Chairs
--------------------------
	Shun-ichi Amari, Japan
	Hans-Paul Schwefel, Germany
	Lotfi A. Zadeh, USA

International Advisory Board
----------------------------
	Sung-Yang Bang, Korea
	Meng Hwa Er, Singapore
	David B. Fogel, USA
	Toshio Fukuda, Japan
	A. Galushkin, Russia
	Tom Gedeon, Australia
	Zhenya He, China
	Mo Jamshidi, USA
	Nikola Kasabov, New Zealand
	Sun-Yuan Kung, USA
	Tong Heng Lee, Singapore
	Erkki Oja, Finland
	Nikhil R. Pal, India
	Enrique H. Ruspini,USA
	Harcharan Singh, Singapore
	Ah Chung Tsoi, Australia
	Shiro Usui, Toyohashi, Japan
	Lei Xu, China
	Benjamin W. Wah, USA
	Donald C. Wunsch II, USA
	Xindong Wu, USA
	Youshou Wu, China
	Yixin Zhong, China
	Jacek M. Zurada, USA

Advisor
-------
	Alex C. Kot, Singapore

General Chair
-------------
	Lipo Wang, Singapore

Program Co-Chairs
-----------------
	ICONIP'02:
		Kunihiko Fukushima, Japan
		Soo-Young Lee, Korea
		Jagath C. Rajapakse, Singapore
	SEAL'02:
		Takeshi Furuhashi, Japan
		Jong-Hwan Kim, Korea
		Kay Chen Tan, Singapore
	FSKD'02:
		Saman Halgamuge, Australia
	Special Sessions:
		Xin Yao, UK

Finance Chair
-------------
	Charoensak Charayaphan, Singapore

Local Arrangement Chair
-----------------------
	Meng Hiot Lim, Singapore

Proceedings Chair
-----------------
	Farook Sattar, Singapore

Publicity Chair
---------------
	Chunru Wan, Singapore

Sponsorship/Exhibition Chair
----------------------------
	Tong Seng Quah, Singapore

Tutorial Chair
--------------
	P. N. Suganthan, Singapore

For More Information
--------------------
Please visit the conference home page or contact:
	Lipo Wang, ICONIP'02-SEAL'02-FSKD'02 General Chair
	School of Electrical and Electronic Engineering
	Nanyang Technological University
	Block S2, 50 Nanyang Avenue, Singapore 639798
	Email: elpwang@ntu.edu.sg
	Phone: +65 6790 6372

Conference Secretariat
----------------------
	ICONIP'02-SEAL'02-FSKD'02 Secretariat
	Conference Management Center/CCE, NTU
	Administration Annex Building #04-06
	42 Nanyang Avenue, Singapore 639815
	Email: nef@ntu.edu.sg
	Fax:   +65 6793 0997




From thenault@isty-info.uvsq.fr  Wed Feb 27 15:55:14 2002
From: thenault@isty-info.uvsq.fr (Sylvain Thenault)
Date: Wed, 27 Feb 2002 16:55:14 +0100 (CET)
Subject: [XML-SIG] Fwd: Problem with 4Dom xslt processor
In-Reply-To: <200202251402.PAA02288@sagittarius.logilab.fr>
Message-ID: 

On Mon, 25 Feb 2002 Alexandre.Fayolle@logilab.fr wrote:

>
> I'm forwarding this message from c.l.p., in hope it will be answered
> here.
>
> Alexandre Fayolle
> ----------------------------------------------------
> From: sjoshi@ingr.com (Sunit Joshi)
> Newsgroups: comp.lang.python
> Subject: Problem with 4Dom xslt processor
> Date: 19 Feb 2002 06:56:43 -0800
>
> Hello all
> I'm trying to use the 4DOM's xslt processor I keep getting this error
> (below) when trying to append a stylesheet. Any pointers are greatly
> appreciated.
>
> thanks
> Sunit
>
> >>> from xml.xslt.Processor import Processor
> >>> proc = Processor()
> >>> proc
> 
> >>> proc.appendStylesheetUri('ships.xsl')
> Traceback (most recent call last):
>   File "", line 1, in ?
>   File "C:\Python21\_xmlplus\xslt\Processor.py", line 95, in
> appendStylesheetUri
>
>     sty = self._styReader.fromUri(styleSheetUri, baseUri)
>   File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 297, in
> fromUri
>     ownerDoc, stripElements)
>   File "C:\Python21\_xmlplus\xslt\minisupport.py", line 58, in fromUri
>     return self.fromStream(stream, baseUri, ownerDoc, stripElements)
>   File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 304, in
> fromStream
>     self.initParser()
>   File "C:\Python21\_xmlplus\xslt\StylesheetReader.py", line 344, in
> initParser
>     if self._force8Bit:
> AttributeError: StylesheetReader instance has no attribute
> '_force8Bit'

I have fixed this bug in the PyXMl CVS a few weeks ago

-- 
Sylvain Thenault



From noreply@sourceforge.net  Wed Feb 27 15:47:02 2002
From: noreply@sourceforge.net (noreply@sourceforge.net)
Date: Wed, 27 Feb 2002 07:47:02 -0800
Subject: [XML-SIG] [ pyxml-Bugs-523439 ] Installer does not find Zope Python
Message-ID: 

Bugs item #523439, was opened at 2002-02-27 07:47
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=106473&aid=523439&group_id=6473

Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: Installer does not find Zope Python

Initial Comment:
I downloaded and ran PyXML-0.7.win32-py2.1.exe, but it 
does not show any installation of Python.  I have 
python 2.1 installed as part of Zope 2.4.2.

Why doesn't it find it?  Is there a way I can force it 
to look in a certian directory?

THanks
Mark

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=106473&aid=523439&group_id=6473


From webmaster@label.co.kr  Wed Feb 27 22:44:49 2002
From: webmaster@label.co.kr (=?ks_c_5601-1987?B?v8DHx726x8G288Da?=)
Date: Thu, 28 Feb 2002 07:44:49 +0900
Subject: [XML-SIG] =?ks_c_5601-1987?B?tvO6p1MvVyC5q7fhKLv1v+zG7bn4yKMgwNq1v8DUt8IpW8irurhd?=
Message-ID: <3c7d614f3c7f1a04@relay5.kornet.net> (added by relay5.kornet.net)

This is a multi-part message in MIME format.

------=_NextPart_000_0077_01C0F44A.93A49C00
Content-Type: text/plain;
	charset="ks_c_5601-1987"
Content-Transfer-Encoding: base64

tvO6p8fBt86x17elILmrt+Eou/W/7MbtufjIoyDA2rW/wNS3wikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KLSC/+MfPtMIgsO2wtL+hvLwgRE0gwNq34bnfvNsNCiAt
IL/4x8+0wiCw7bC0v6Gw1CBUZWxlbWFya2V0aW5nDQogLSC287qnwfYgw+K3wiDA/LmuIFMv
VyCzu8DlDQogLSCwy7v2tcggsOGw+rimILjeuPDA5b+hIMD6wOUsIMiwv+sNCiANCqjnIFu7
88ijL773wb7G7V0gOiDA/LG5IDQwMLi4ILvzyKMvvvfBviC1pcDMxbggvPa3zw0KIKjoIFvA
zrjtxu1dIDogwPyxuSAxLDIwMLi4IMDOuO0gtaXAzMW4ILz2t88gDQogsbjA1CCw7bC0v6Gw
1LTCILbzuqe/68H2IDGxxyg1MLjFL0E0KcC7ILvnwLrHsMC4t84gteW4s7TPtNkuDQogICAg
DQogICAgICAgICAgICAgICAgICAgIMiruri/6yC+yLO7ua7AuyC89sO1LCC89ri4ILDtsLS6
0LXpsrIgurizvbTZsO0gu/2wosfYICC6uLy8v+QuIA0KIMDOt8Kw+iC4ucC6IL3DsKPAuyC1
6b+pILjnxKUgvt+x2cfYILChuOm8rSDA2773x9IgvcOwo7+hIMG7ILT1IMi/wLINCiDA+8DO
IMDPwLsgx8+9w7TCsNQgvu62s7Huv+Q/IERNwNu+98C6IMD6yPHH0cXXILjDseK9yr3Dv+Qu
DQogDQogwPq3xcfPsO0gvcW808fPsNQgsO2wtL+pt6+60MDHIMGkvLrAuyC0477GvK0gv+zG
7bmwILnfvNvAuyDDpcDTwfYNCiCw2r3AtM+02S4gICAgDQogDQogDQogICAgICAgICAgICAg
ICAgICAgv+zG7bmwud+82yhETSnAuyDAp8fRILTru/MgsO2wtMDHIMHWvNK3zyC1pcDMxbgg
ILG4w+AsIMDOvOK5sLfOILXHvu4NCiDA1rTCIMDat+HAxyDA1LfCILTrx+AsILHiwbggwda8
0rfPILWlwMzFuMDHILv1v+zG7bn4yKMguq/IryDA2773te7AuyANCiDD1r3FILHivPq3ziC5
q8Dlx9EgwPy5rr/kv/i16cDMIL+pt6+60MC7ILW1v8215bixILDNwNS0z7TZLg0KIA0KIKK6
IFdlYi10by1EQiA6IMDMwaggILHXuLLAxyC2scC7IMH3waIguNTAuyC89iDA1r3AtM+02S4N
CiAgwM7FzbPdIL3HvcOwoyDB1rzStaXAzMW4uKYgv6K8v8bEwM+3ziC4uLXpvu4gteW4s7TP
tNkuDQogICi/uSA6IGh0dHA6Ly90ZWwuaGFubWlyLmNvbSAox9G5zLijIMD8yK25+MijILDL
u/YpKQ0KIA0KIKK6ILWlwMzFuCDA1LfCDQogorogwda80iC287qnIMPit8IgIA0KIKK6ILv1
v+zG7bn4yKMguq/IryAgICAgICAgICAgICAgICAgICANCiDAzLjewM8gwda80rTCIMDOxc2z
3SC8rcfOwLsgxevH2CC89sH9x8+/tMC4uOcsIMDMuN7AzyDB1rzSIL/cv6G0wiC+7rawx9Eg
waS6uLW1ILChwfaw7SDA1sH2IL7KvcC0z7TZLg0KILT1wMy78yC43sDPwLsgv/jEoSC+ysC4
vcO46SC89r3FsMW6zrimIMWsuK8gx9jB1ry8v+QuIMHBwLogx8+35yC6uLO7vLy/5C4NCiAN
CiBbvPa9xbDFus5dIA0KIA0KICAgICAgICAgICAgICAgICAgDQo=

------=_NextPart_000_0077_01C0F44A.93A49C00
Content-Type: text/html;
	charset="ks_c_5601-1987"
Content-Transfer-Encoding: base64

PGh0bWw+DQo8aGVhZD4NCjx0aXRsZT6287qnx8G3zrHXt6Uguau34Si79b/sxu25+MijIMDa
tb/A1LfCKTwvdGl0bGU+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD1ldWMta3IiPg0KPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4NCjwhLS0NCi5saXN0MDEgeyAgZm9udC1mYW1pbHk6ICKxvLiyIiwgIrG8uLLDvCI7IGZv
bnQtc2l6ZTogOXB0OyBjb2xvcjogIzRDNEM0QzsgIGxpbmUtaGVpZ2h0OiAxMnB0fQ0KLmxp
c3QwMiB7ICBmb250LWZhbWlseTogIrG8uLIiLCAisby4ssO8IjsgZm9udC1zaXplOiAxMHB0
OyBjb2xvcjogIzRDNEM0QzsgIGxpbmUtaGVpZ2h0OiAxNnB0fQ0KYTpsaW5re3RleHQtZGVj
b3JhdGlvbjpub25lO2NvbG9yOiM0QzRDNEM7Rk9OVDp9DQphOnZpc2l0ZWR7dGV4dC1kZWNv
cmF0aW9uOm5vbmU7Y29sb3I6IzRDNEM0QztGT05UOn0NCmE6YWN0aXZle3RleHQtZGVjb3Jh
dGlvbjpub25lO2NvbG9yOiNGRjMzOTk7Rk9OVDp9DQphOmhvdmVye3RleHQtZGVjb3JhdGlv
bjp1bmRlcmxpbmU7Y29sb3I6I0ZGMzM5OTtGT05UOn0NCi0tPg0KPC9zdHlsZT4NCjwvaGVh
ZD4NCg0KPGJvZHkgYmdjb2xvcj0iI2QwZDBkMCIgdGV4dD0iIzAwMDAwMCIgbGVmdG1hcmdp
bj0iMCIgdG9wbWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4N
CjxkaXYgYWxpZ249ImNlbnRlciI+IA0KICA8dGFibGUgd2lkdGg9IjYwMCIgYm9yZGVyPSIw
IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgIDx0ciB2YWxpZ249InRv
cCI+IA0KICAgICAgPHRkIGJnY29sb3I9IiM5OTk5OTkiIGFsaWduPSJsZWZ0IiB3aWR0aD0i
MSI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcv
aW1nMWsuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L3RkPg0KICAgICAgPHRkIHdpZHRo
PSI1OTgiIGJnY29sb3I9IiNGRkZGRkYiPiANCiAgICAgICAgPHRhYmxlIHdpZHRoPSI1OTgi
IGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAg
ICA8dHIgdmFsaWduPSJ0b3AiPiANCiAgICAgICAgICAgIDx0ZD48YSBocmVmPSJodHRwOi8v
d3d3LmxhYmVsLmNvLmtyIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly93d3cu
bGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvbG9nby5naWYiIHdpZHRoPSIxNzAiIGhl
aWdodD0iNzAiIGJvcmRlcj0iMCI+PC9hPjwvdGQ+DQogICAgICAgICAgICA8dGQgYmdjb2xv
cj0iI0ZGRkZGRiI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21h
aWwvb3BpbWcvbG9nb18wMS5naWYiIHdpZHRoPSIyMDAiIGhlaWdodD0iNzAiPjwvdGQ+DQog
ICAgICAgICAgICA8dGQ+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNl
X21haWwvb3BpbWcvbG9nb18wMi5naWYiIHdpZHRoPSIyMjgiIGhlaWdodD0iNzAiIHVzZW1h
cD0iI01hcDIiIGJvcmRlcj0iMCI+PG1hcCBuYW1lPSJNYXAyIj48YXJlYSBzaGFwZT0icmVj
dCIgY29vcmRzPSI0MiwzMCwyMjUsNjgiIGhyZWY9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ii
IHRhcmdldD0iX2JsYW5rIj48L21hcD48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAg
IDwvdGFibGU+DQogICAgICAgIDx0YWJsZSB3aWR0aD0iNTk4IiBib3JkZXI9IjAiIGNlbGxz
cGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAg
ICAgPHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9v
ZmZpY2VfbWFpbC9vcGltZy9tYWluX3YuanBnIiB3aWR0aD0iNTk4IiBoZWlnaHQ9IjE3MiIg
dXNlbWFwPSIjTWFwIiBib3JkZXI9IjAiPjxtYXAgbmFtZT0iTWFwIj48YXJlYSBzaGFwZT0i
cmVjdCIgY29vcmRzPSIzMzUsMzYsNTkyLDEzMSIgaHJlZj0iaHR0cDovL3d3dy5sYWJlbC5j
by5rci9odG1sL3Bkcy9uZXdwb3N0Lmh0bSIgdGFyZ2V0PSJfYmxhbmsiPjxhcmVhIHNoYXBl
PSJyZWN0IiBjb29yZHM9IjQ2MSwxMzksNTE3LDE1NiIgaHJlZj0iaHR0cDovL3d3dy5sYWJl
bC5jby5rci9odG1sL3Bkcy9wb3N0YWxjb2RlLmh0bSIgdGFyZ2V0PSJfYmxhbmsiPjwvbWFw
PjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPHRh
YmxlIHdpZHRoPSI1OTgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5n
PSIwIj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxp
bWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL3R0X2Jh
ci5naWYiIHdpZHRoPSI1OTgiIGhlaWdodD0iMjAiPjwvdGQ+DQogICAgICAgICAgPC90cj4N
CiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPHRhYmxlIHdpZHRoPSI1OTgiIGJvcmRlcj0i
MCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICA8dHIgdmFs
aWduPSJ0b3AiPiANCiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTcwIj48aW1nIHNyYz0iaHR0
cDovL3d3dy5sYWJlbC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9waWMxMTAxLmdpZiIgd2lk
dGg9IjE3MCIgaGVpZ2h0PSIyNSI+PC90ZD4NCiAgICAgICAgICAgIDx0ZD48aW1nIHNyYz0i
aHR0cDovL3d3dy5sYWJlbC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9waWMxMTAyLmdpZiIg
d2lkdGg9IjQyOCIgaGVpZ2h0PSIyNSI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAg
ICAgIDx0ciB2YWxpZ249InRvcCI+IA0KICAgICAgICAgICAgPHRkIHdpZHRoPSIxNzAiPjxp
bWcgc3JjPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL3BpYzEx
MDMuZ2lmIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjE2NSI+PC90ZD4NCiAgICAgICAgICAgIDx0
ZCBiZ2NvbG9yPSIjRkZGRkZGIj4gDQogICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNDI4
IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAg
ICAgICAgICAgPHRyIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICAgICAgICA8dGQgd2lk
dGg9IjIwIiBjbGFzcz0ibGlzdDAxIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5r
ci9vZmZpY2VfbWFpbC9vcGltZy9pbWcxay5naWYiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+
PC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDA4IiBjbGFzcz0ibGlzdDAx
Ij4gDQogICAgICAgICAgICAgICAgICAgIDxwPi0gv/jHz7TCILDtsLS/oby8IERNIMDat+G5
37zbPGJyPg0KICAgICAgICAgICAgICAgICAgICAgIC0gv/jHz7TCILDtsLS/obDUIFRlbGVt
YXJrZXRpbmc8YnI+DQogICAgICAgICAgICAgICAgICAgICAgLSC287qnwfYgw+K3wiDA/Lmu
IFMvVyCzu8DlPGJyPg0KICAgICAgICAgICAgICAgICAgICAgIC0gsMu79rXIILDhsPq4piC4
3rjwwOW/oSDA+sDlLCDIsL/rPC9wPg0KICAgICAgICAgICAgICAgICAgICA8cD4gPGI+qOcg
W7vzyKMvvvfBvsbtXSA6IDwvYj4gwPyxuSA0MDC4uCC788ijL773wb4gtaXAzMW4ILz2t888
YnI+DQogICAgICAgICAgICAgICAgICAgICAgPGI+qOggW8DOuO3G7V0gOjwvYj4gwPyxuSAx
LDIwMLi4IMDOuO0gtaXAzMW4ILz2t88gPGJyPg0KICAgICAgICAgICAgICAgICAgICAgIDxm
b250IGNvbG9yPSIjRkY2NjAwIj6xuMDUILDtsLS/obDUtMIgtvO6p7/rwfYgMbHHKDUwuMUv
QTQpwLsgu+fAusewwLi3ziC15biztM+02S48L2ZvbnQ+PC9wPg0KICAgICAgICAgICAgICAg
ICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgIDwvdGFi
bGU+DQogICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSI0
MjgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAg
ICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIGFs
aWduPSJyaWdodCI+PGEgaHJlZj0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9odG1sL3Byb2R1
Y3QvcGhvbmVjZC5odG0iIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL3d3dy5s
YWJlbC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9tb3JlLmdpZiIgd2lkdGg9IjY5IiBoZWln
aHQ9IjExIiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+DQog
ICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L3RkPg0KICAgICAgICAgIDwv
dHI+DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDx0YWJsZSB3aWR0aD0iNTk4IiBib3Jk
ZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgPHRy
IHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICA8dGQgd2lkdGg9IjE3MCI+PGltZyBzcmM9
Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvcGljMTIwMS5naWYi
IHdpZHRoPSIxNzAiIGhlaWdodD0iMjYiPjwvdGQ+DQogICAgICAgICAgICA8dGQ+PGltZyBz
cmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvcGljMTIwMi5n
aWYiIHdpZHRoPSI0MjgiIGhlaWdodD0iMjYiPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAg
ICAgICAgICA8dHIgdmFsaWduPSJ0b3AiPiANCiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTcw
Ij48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9w
aWMxMjAzLmpwZyIgd2lkdGg9IjE3MCIgaGVpZ2h0PSIxNjMiPjwvdGQ+DQogICAgICAgICAg
ICA8dGQgYmdjb2xvcj0iI0ZGRkZGRiI+DQogICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0i
NDI4IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAg
ICAgICAgICAgICAgPHRyIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICAgICAgICA8dGQg
d2lkdGg9IjIwIiBjbGFzcz0ibGlzdDAxIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5j
by5rci9vZmZpY2VfbWFpbC9vcGltZy9pbWcxay5naWYiIHdpZHRoPSIyMCIgaGVpZ2h0PSIy
MCI+PC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDA4IiBjbGFzcz0ibGlz
dDAxIj7Iq7q4v+sgvsizu7muwLsgvPbDtSwgvPa4uCCw7bC0utC16bKyILq4s7202bDtILv9
sKLH2CANCiAgICAgICAgICAgICAgICAgICAguri8vL/kLiA8YnI+DQogICAgICAgICAgICAg
ICAgICAgIMDOt8Kw+iC4ucC6IL3DsKPAuyC16b+pILjnxKUgvt+x2cfYILChuOm8rSDA2773
x9IgvcOwo7+hIMG7ILT1IMi/wLI8YnI+DQogICAgICAgICAgICAgICAgICAgIMD7wM4gwM/A
uyDHz73DtMKw1CC+7razse6/5D8gRE3A2773wLogwPrI8cfRxdcguMOx4r3KvcO/5C48YnI+
DQogICAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICAgPGZvbnQg
Y29sb3I9IiNGRjY2MDAiPiDA+rfFx8+w7SC9xbzTx8+w1CCw7bC0v6m3r7rQwMcgwaS8usC7
ILTjvsa8rSC/7MbtubAgud+828C7IMOlwNPB9jxicj4NCiAgICAgICAgICAgICAgICAgICAg
sNq9wLTPtNkuIDwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAg
ICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgPGJy
Pg0KICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNDI4
IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAg
ICAgICAgICAgPHRyPiANCiAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgYWxp
Z249InJpZ2h0Ij48YSBocmVmPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL2h0bWwvZG0vcG9z
dGluZy5odG0iIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5j
by5rci9vZmZpY2VfbWFpbC9vcGltZy9tb3JlLmdpZiIgd2lkdGg9IjY5IiBoZWlnaHQ9IjEx
IiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAg
ICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L3RkPg0KICAgICAgICAgIDwvdHI+DQog
ICAgICAgIDwvdGFibGU+DQogICAgICAgIDx0YWJsZSB3aWR0aD0iNTk4IiBib3JkZXI9IjAi
IGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICAgICAgPHRyIHZhbGln
bj0idG9wIj4gDQogICAgICAgICAgICA8dGQgcm93c3Bhbj0iMiI+PGltZyBzcmM9Imh0dHA6
Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvcGljMTMwMy5qcGciIHdpZHRo
PSIxNzAiIGhlaWdodD0iMTkwIj48L3RkPg0KICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJo
dHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL3BpYzEzMDIuZ2lmIiB3
aWR0aD0iNDI4IiBoZWlnaHQ9IjI2Ij48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAg
ICAgPHRyIHZhbGlnbj0idG9wIj4gDQogICAgICAgICAgICA8dGQ+IA0KICAgICAgICAgICAg
ICA8dGFibGUgd2lkdGg9IjQyOCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBh
ZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgIDx0ciB2YWxpZ249InRvcCI+IA0KICAgICAg
ICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCIgY2xhc3M9Imxpc3QwMSI+PGltZyBzcmM9Imh0
dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvaW1nMWsuZ2lmIiB3aWR0
aD0iMjAiIGhlaWdodD0iMjAiPjwvdGQ+DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9
IjQwOCIgY2xhc3M9Imxpc3QwMSI+v+zG7bmwud+82yhETSnAuyDAp8fRILTru/MgsO2wtMDH
IMHWvNK3zyC1pcDMxbggDQogICAgICAgICAgICAgICAgICAgILG4w+AsIMDOvOK5sLfOILXH
vu48YnI+DQogICAgICAgICAgICAgICAgICAgIMDWtMIgwNq34cDHIMDUt8IgtOvH4CwgseLB
uCDB1rzSt88gtaXAzMW4wMcgu/W/7MbtufjIoyC6r8ivIMDbvve17sC7IDxicj4NCiAgICAg
ICAgICAgICAgICAgICAgw9a9xSCx4rz6t84guavA5cfRIMD8ua6/5L/4tenAzCC/qbevutDA
uyC1tb/NteW4sSCwzcDUtM+02S48YnI+DQogICAgICAgICAgICAgICAgICAgIDxicj4NCiAg
ICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IiNDQzMzMDAiPjxiPqK6IFdlYi10by1E
QiA6IDwvYj48L2ZvbnQ+PGEgaHJlZj0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9odG1sL2Ri
L2RiX21ha2UuaHRtIiB0YXJnZXQ9Il9ibGFuayI+wMzBqCANCiAgICAgICAgICAgICAgICAg
ICAgsde4ssDHILaxwLsgwffBoiC41MC7ILz2IMDWvcC0z7TZLjxicj4NCiAgICAgICAgICAg
ICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwv
b3BpbWcvaW1nMWsuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTIiIGJvcmRlcj0iMCI+IA0K
ICAgICAgICAgICAgICAgICAgICDAzsXNs90gvce9w7CjIMHWvNK1pcDMxbi4piC/ory/xsTA
z7fOILi4tem+7iC15biztM+02S48YnI+DQogICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jj
PSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29mZmljZV9tYWlsL29waW1nL2ltZzFrLmdpZiIg
d2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiBib3JkZXI9IjAiPiANCiAgICAgICAgICAgICAgICAg
ICAgKL+5IDogaHR0cDovL3RlbC5oYW5taXIuY29tICjH0bnMuKMgwPzIrbn4yKMgsMu79ikp
PGJyPg0KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5j
by5rci9vZmZpY2VfbWFpbC9vcGltZy9pbWcxay5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIx
MiIgYm9yZGVyPSIwIj48L2E+PGJyPg0KICAgICAgICAgICAgICAgICAgICA8Yj48Zm9udCBj
b2xvcj0iI0NDMzMwMCI+orogtaXAzMW4IMDUt8I8L2ZvbnQ+PC9iPjxicj4NCiAgICAgICAg
ICAgICAgICAgICAgPGZvbnQgY29sb3I9IiNDQzMzMDAiPjxiPqK6IMHWvNIgtvO6pyDD4rfC
PC9iPjwvZm9udD48YSBocmVmPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL2h0bWwvZG0vbGFi
ZWxfcHJ0Lmh0bSIgdGFyZ2V0PSJfYmxhbmsiPiANCiAgICAgICAgICAgICAgICAgICAgPC9h
Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IiNDQzMzMDAiPjxiPqK6
ILv1v+zG7bn4yKMguq/IrzwvYj48L2ZvbnQ+PC90ZD4NCiAgICAgICAgICAgICAgICA8L3Ry
Pg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9
IjQyOCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAg
ICAgICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3Ai
IGFsaWduPSJyaWdodCI+PGEgaHJlZj0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9odG1sL2Ri
L2RiX21haW4uaHRtIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFi
ZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvbW9yZS5naWYiIHdpZHRoPSI2OSIgaGVpZ2h0
PSIxMSIgYm9yZGVyPSIwIj48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAg
ICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICA8L3Ry
Pg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8dGFibGUgd2lkdGg9IjU5OCIgYm9yZGVy
PSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgIDx0cj4N
CiAgICAgICAgICAgIDx0ZCBiYWNrZ3JvdW5kPSJodHRwOi8vd3d3LmxhYmVsLmNvLmtyL29m
ZmljZV9tYWlsL29waW1nL21saW5lX2guZ2lmIiB2YWxpZ249InRvcCIgaGVpZ2h0PSIxIj48
aW1nIHNyYz0iaHR0cDovL3d3dy5sYWJlbC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9pbWcx
ay5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAg
ICAgICAgPC90YWJsZT4NCiAgICAgICAgPHRhYmxlIHdpZHRoPSI1OTgiIGJvcmRlcj0iMCIg
Y2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICA8dHIgdmFsaWdu
PSJ0b3AiPiANCiAgICAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdDAxIiBjb2xzcGFuPSIyIj4N
CiAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iI0ZGNjY2
NiI+PGJyPg0KICAgICAgICAgICAgICAgIMDMuN7AzyDB1rzStMIgwM7FzbPdILytx87AuyDF
68fYILz2wf3Hz7+0wLi45ywgwMy43sDPIMHWvNIgv9y/obTCIL7utrDH0SDBpLq4tbUgsKHB
9rDtIMDWwfYgvsq9wLTPtNkuPGJyPg0KICAgICAgICAgICAgICAgILT1wMy78yC43sDPwLsg
v/jEoSC+ysC4vcO46SC89r3FsMW6zrimIMWsuK8gx9jB1ry8v+QuIMHBwLogx8+35yC6uLO7
vLy/5C48YnI+DQogICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IiNDQzMzMDAiPjxicj4N
CiAgICAgICAgICAgICAgICBbPGEgaHJlZj0iaHR0cDovL3d3dy5jcnVzYWRlLmNvLmtyL3Jl
amVjdC9yZWplY3QucGhwP2lkPTIxMzUmYXV0aD05YTQ5YTI1ZDg0NWE0ODNmYWU0YmU3ZTM0
MTM2OGUzNiZtYWlsPXhtbC1zaWdAcHl0aG9uLm9yZyZtb2RlPXdyaXRlIj689r3FsMW6zjwv
YT5dIDxicj4NCiAgICAgICAgICAgICAgICA8L2ZvbnQ+PC9mb250PjwvZGl2Pg0KICAgICAg
ICAgICAgPC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAg
ICA8dGFibGUgd2lkdGg9IjU5OCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBh
ZGRpbmc9IjAiPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRv
cCIgYmdjb2xvcj0iIzk5OTk5OSIgaGVpZ2h0PSIxIj48aW1nIHNyYz0iaHR0cDovL3d3dy5s
YWJlbC5jby5rci9vZmZpY2VfbWFpbC9vcGltZy9pbWcxay5naWYiIHdpZHRoPSIxIiBoZWln
aHQ9IjEiPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgPC90YWJsZT4NCiAgICAg
ICAgPHRhYmxlIHdpZHRoPSI1OTgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxw
YWRkaW5nPSIwIj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgY2xhc3M9Imxp
c3QwMSI+PGltZyBzcmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3Bp
bWcvYm90dG9tLmdpZiIgd2lkdGg9IjU5OCIgaGVpZ2h0PSI2MCI+PC90ZD4NCiAgICAgICAg
ICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICANCiAgICAgIDwvdGQ+DQogICAg
ICA8dGQgYmdjb2xvcj0iIzk5OTk5OSIgYWxpZ249InJpZ2h0IiB3aWR0aD0iMSI+PGltZyBz
cmM9Imh0dHA6Ly93d3cubGFiZWwuY28ua3Ivb2ZmaWNlX21haWwvb3BpbWcvaW1nMWsuZ2lm
IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L3RkPg0KICAgIDwvdHI+DQogIDwvdGFibGU+DQo8
L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4=

------=_NextPart_000_0077_01C0F44A.93A49C00--



From hanbay3@hotmail.com  Thu Feb 28 11:40:41 2002
From: hanbay3@hotmail.com (HanBay)
Date: Thu, 28 Feb 2002 20:40:41 +0900
Subject: [XML-SIG] [±¤ °í] Çؿܱ³Æ÷µéÀÇ Çѱ¹½ÄÇ° Á¾ÇÕ¼îÇθô
Message-ID: 



:+: ÇѺ£ÀÌ È«º¸¸ÞÀÏ :+:



+ Ŭ¸¯ÇÏ½Ã¸é ¹Ù·Î ÀúÈñ ÀÚ·á¿¡¼­ ±ÍÇÏÀÇ À̸ÞÀÏ ÁÖ¼Ò°¡ »èÁ¦µË´Ï´Ù   ¢Ñ ¼ö½Å°ÅºÎ