[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Reflecting on: csv data to xml
Maybe a little off-topic, but years ago I created in XSLT 2.0 a general LR-1 parser (run-time ) tool, that is table-directed. Using this tool one can quickly create parsers for any CF (context-free) deterministic (unambiguous) language. I used it successfully to develop a parser for a subset of JSON and for the more challenging task of creating an XPath 2.0 parser. The code of this tool itself isn't complex -- and is available at: http://fxsl.cvs.sourceforge.net/viewvc/fxsl/fxsl-xslt2/f/func-lrParse.xsl?revision=1.7&view=markup I hope that this could help conclude the discussion whether or not XSLT is good for string processing -- if one can easily develop a parser for any deterministic CF language (which is the case), then we have a firm, positive answer. We could probably wish to have a useful and versatile library of string-processing functions, and I would be listening to any suggestions. Cheers, Dimitre On Sun, Jun 30, 2013 at 12:49 AM, Wolfgang Laun <wolfgang.laun@xxxxxxxxx> wrote: > > The thread "csv data to xml" was triggered by a relatively simple > problem: converting CSV data to XML. There were one or two voices > advocating the use of Perl (or similar) "for this kind of problem" in > preference to XSLT, and there were claims that it would be a simple > matter to use XSLT's analyze-string... Now I'm not going to vote > either way - I'd just like to post some observations I made while > investigating this. If you are impatient, skip down to "conclusion". > > I decided to implement this in Perl and was hoping to be able to > compare this with an equivalent implementation in XSLT, concentrating > on ease of development and maintainability. Ken's implementation > <http://www.CraneSoftwrights.com/resources/#csv> filled the XSLT slot. > > I had a quick Perl 5 filter solution up and running in 30 minutes, no > program parameters, hard-coded names for document and row elements, > but using the first CSV line for obtaining the names for the cells. > > 10 Minutes of that time were spent on getting a couple of Perl > packages from CPAN, one for parsing CSV and another one for writing XML, > which reduced the code I had actually to write to 23 lines. > > Considering this to be too sloppy, I spent some more time, adding > a *nix-style CLI (for file names, element names,...), data checking > (invalid element names, excess cells in a row), default element names > for cells (using "A", "B",...), CLI documentation etc. > > Ken's solution falls short on a few points I was able to add easily. I > can't > say how difficult they would be to add to Ken's existing solution - it > might > not be a matter of minutes for some of those add-ons. > > Conclusions > > Perl's CPAN is a great asset. Certainly, the quality of its offerings > varies, > but the packages are tested and users report on their experience. (Why > doesn't XSLT have anything like it?) > > Ken used a proprietary (?) solution for embedding documentation that can > be extracted into HTML. Now that's great, but it is a solitary answer to > the > problem. Perl's pod is a somewhat clunky solution but it is supported with > a rich toolset, along with the Perl distribution. I consider the > existence of a documentation format that is defined along with the > language as "state of > the art" and essential for sustainable SW development. > > XSLT is "special purpose" for XML handling and consequently easy to use, > but it isn't better than the average language for string processing. > > -W > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|