[Pharo-project] Writing API for XML (WAX) - Bibliography example

Hannes Hirzel hannes.hirzel at gmail.com
Wed Nov 3 14:22:55 CET 2010


Thank you Stef, for pointing this out.

I had a look at Torsten's email of July 6th about XMLWriter and the
subsequent discussion.

Yes, an alternative approach would be to model an XML  generation API
along the lines of Seaside html rendering -- with blocks instead of
start/end messages.

Has there some work going on elsewhere besides what Torsten did?
http://squeaksource.com/PharoGoodies/XMLWriter-tbn.5.mcz

--Hannes

N.B. This is only about 'XML writing' NOT about XML parsing. The idea
is to have an API which allows to have readable XML generation code
with an implementation which does not consume much memory. And with
enough examples and tests.


On 11/2/10, Stéphane Ducasse <stephane.ducasse at inria.fr> wrote:
> Thanks hannes
> I think that the XMLWriter offers a bit something similar influenced by
> seaside DSL.
>
> Stef
>
> On Nov 1, 2010, at 10:58 PM, Hannes Hirzel wrote:
>
>> Hello
>>
>> I read the post by Stephane Ducasse about writing XML (see below) with
>> a bibliography example.
>>
>> Recently I (re)-discovered the port to Squeak/Pharo of the Writing API
>> for XML (WAX) (http://java.ociweb.com/mark/programming/WAX.html) and
>> could put it to good use for writing an XML file a bit more complex
>> than the bibliography example.
>>
>> From the web site
>> WAX has the following characteristics:
>>
>>    * focuses on writing XML, not reading it
>>    * requires less code than other approaches
>>    * uses less memory than other approaches
>>      (because it outputs XML as each method is called rather than
>>      storing it in a DOM-like structure and outputting it later)
>>    * writes all XML node types
>>    * always outputs well-formed XML or throws an exception unless
>> running in "trust me" mode
>>    * knows how to associate DTDs, XML Schemas and XSLT stylesheets
>> with the XML it outputs
>>    * is well-suited for writing XML request and response messages for
>> REST-based and SOAP-based services
>>
>> However I do not know how far these points apply to the Squeak/Pharo port.
>> http://www.squeaksource.com/WAX
>> It needs the VB Regex package (http://www.squeaksource.com/Regex)
>>
>> As an exercise I did the code to produce the example Stephane gave. It
>> worked fine; see below.
>>
>> Regards
>> Hannes
>>
>>
>>
>>
>>
>> ==========================================================
>>
>> 	WAX  new
>> 		stream: (FileStream newFileNamed: 'myBibliography.xml');
>> 	      writeXMLDeclaration: #1.0;
>> 	      start: 'BDBase';
>> 			attr: 'date' value: '25 May 2010';
>> 			attr: 'note' value: 'nil';
>> 			
>> 			start: 'bd';
>> 				attr: 'authors' value: 'Larcenet';
>> 				attr: 'editor' value: 'Dargaud';
>> 				attr: 'entryCreationDate' value: '25 March 2006';
>> 				attr: 'entryNumber' value: '1';
>> 				attr: 'number' value: '1';
>> 				attr: 'original' value: 'true';
>> 				attr: 'serie' value: 'Nic oumouk';
>> 				attr: 'serieComplete' value: 'false';
>> 				attr: 'title' value: 'Total souk pour nic oumouk';
>> 				attr: 'year' value: '2005';
>> 			end;
>> 			
>> 			start: 'bd';
>> 				attr: 'authors' value: 'Greg';
>> 				attr: 'editor' value: 'Dargaud';
>> 				attr: 'entryCreationDate' value: '5 May 2006';
>> 				attr: 'entryNumber' value: '2';
>> 				attr: 'notes' value: 'sur le 4eme de couv aventure a manhattan';
>> 				attr: 'number' value: '9';
>> 				attr: 'original' value: 'true';
>> 				attr: 'serie' value: 'Achille Talon';
>> 				attr: 'title' value: 'Les petits desseins d''Achille Talon';
>> 				attr: 'year' value: '1974';
>> 			end;
>> 			
>> 			start: 'bd';
>> 				attr: 'authors' value: 'Greg';
>> 				attr: 'editor' value: 'Dargaud';
>> 				attr: 'entryCreationDate' value: '5 May 2006';
>> 				attr: 'entryNumber' value: '3';
>> 				attr: 'notes' value: 'sur la couverture une histoire du journal
>> tintin';
>> 				attr: 'number' value: '13';
>> 				attr: 'original' value: 'true';
>> 				attr: 'serie' value: 'Achille Talon';
>> 				attr: 'title' value: 'Pas de pitié pour Achille Talon';
>> 				attr: 'year' value: '1976';
>> 			end;
>> 		end;
>>       close.
>>
>> ==========================================================
>> Output
>> <?xml version="1.0" encoding="UTF-8"?>
>> <BDBase date="25 May 2010" note="nil">
>>  <bd authors="Larcenet" editor="Dargaud" entryCreationDate="25 March
>> 2006" entryNumber="1" number="1" original="true" serie="Nic oumouk"
>> serieComplete="false" title="Total souk pour nic oumouk" year="2005"/>
>>  <bd authors="Greg" editor="Dargaud" entryCreationDate="5 May 2006"
>> entryNumber="2" notes="sur le 4eme de couv aventure a manhattan"
>> number="9" original="true" serie="Achille Talon" title="Les petits
>> desseins d&apos;Achille Talon" year="1974"/>
>>  <bd authors="Greg" editor="Dargaud" entryCreationDate="5 May 2006"
>> entryNumber="3" notes="sur la couverture une histoire du journal
>> tintin" number="13" original="true" serie="Achille Talon" title="Pas
>> de pitié pour Achille Talon" year="1976"/>
>> </BDBase>
>>
>>
>>
>> ==========================================================
>>
>> On 10/31/10, stephane ducasse <stephane.ducasse at free.fr> wrote:
>>> How can I control that each of the node of my document get printed a cr
>>> at
>>> its end?
>>>
>>> In the past I got that
>>>
>>> <?xml  version="1.0" encoding="UTF-8" ?>
>>> <BDBase date="25 May 2010" entriesNumber="2440" note="nil">
>>> <bd authors="Larcenet" editor="Dargaud" entryCreationDate="25 March 2006"
>>> entryNumber="1" number="1" original="true" serie="Nic oumouk"
>>> serieComplete="false" title="Total souk pour nic oumouk" year="2005"/>
>>> <bd authors="Greg" editor="Dargaud" entryCreationDate="5 May 2006"
>>> entryNumber="2" notes="sur le 4eme de couv aventure a manhattan"
>>> number="9"
>>> original="true" serie="Achille Talon" title="Les petits desseins
>>> d'Achille
>>> Talon" year="1974"/>
>>> <bd authors="Greg" editor="Dargaud" entryCreationDate="5 May 2006"
>>> entryNumber="3" notes="sur la couverture une histoire du journal tintin"
>>> number="13" original="true" serie="Achille Talon" title="Pas de pitié
>>> pour
>>> Achille Talon" year="1976"/>
>>> <bd aut
>>>
>>> Now I get
>>>
>>> <?xml version="1.0" encoding="UTF-8"?><Base date="31 October 2010"
>>> entriesNumber="2448" note="nil"><bd serieComplete="false"
>>> editor="Dargaud"
>>> entryCreationDate="25 March 2006" entryNumber="1" authors="Larcenet"
>>> title="Total souk pour nic oumouk" serie="Nic oumouk" original="true"
>>> number="1" year="2005" /><bd serieComplete="false" editor="Dargaud"
>>> entryCreationDate="5 May 2006" entryNumber="2" authors="Greg" title="Les
>>> petits desseins d'Achille Talon" serie="Achille Talon" original="true"
>>> notes="sur le 4eme de couv aventure a manhattan" number="9" year="1974"
>>> /><bd serieComplete="false" editor="Dargaud" entryCreationDate="5 May
>>> 2006"
>>> entryNumber="3" authors="Greg" title="Pas de pitié pour Achille Talon"
>>> serie="Achille Talon" original="true" notes="sur la couverture une
>>> histoire
>>> du journal tintin" number="13" year="1976" /><bd serieComplete="false"
>>> editor="Dargaud" entryCreationDate="5 May 2006" entryNumber="4"
>>> authors="Greg" title
>>>
>>> Thanks
>>>
>>> Stef
>>>
>>
>
>
>




More information about the Pharo-project mailing list