Re: XSLT versus AWK
Ihe Onwuka <[email protected]>
| Newsgroups | gmane.text.xml.devel |
|---|---|
| Message-ID | <CALfs7+zRywaQMmX25jtPHoG=gAAXtJqQkpTqPEucmsAYya8SOQ@mail.gmail.com> |
I like awk alot (not the sort you pasted there though) but it doesn't support lexical scoping so that would be the limiting use case except most of the things I do with awk do not require lexical scoping. What makes it more interesting is that it supports streaming and there is an XML library for it http://gawkextlib.sourceforge.net/xml/gawk-xml.html On Sun, Jul 31, 2022 at 7:22 AM Roger L Costello <[email protected]> wrote: > Hi Folks, > > XSLT is a programming language specifically designed for processing > textual data that is formatted as XML. > > AWK is a programming language specifically designed for processing textual > data that is formatted as records containing fields. Interestingly, I have > observed that the records/fields format is the one used for input and > output by most UNIX tools. > > XSLT and AWK are mature programming languages. XSLT was created roughly 24 > years ago at the W3C. AWK was created roughly 45 years ago at Bell Labs by > Alfred Aho, Peter Weinberger, and Brian Kernighan (the name AWK comes from > their last names). > > XSLT and AWK substantially reduce -- relative to other programming > languages -- the amount of code, time, and effort needed to process their > respective data formats. A developer will be far more productive writing an > XSLT program to process XML-formatted data than if he were to write the > program in some other programming language. A developer will be far more > productive writing an AWK program to process records-and-fields-formatted > data than if he were to write the program in some other programming > language. > > XSLT and AWK are complimentary. An XSLT program can convert an XML > document into a document containing records and fields. An AWK program can > convert a document consisting of records and fields into an XML document. > In fact, just yesterday I did that very thing -- I wrote an AWK program to > convert to XML a huge document containing records with tab-delimited > fields, where the first record contained column headers. See my simple, > short AWK program below (note: I am an AWK newbie, so there are likely > better ways to write the program). > > *Lesson Learned*: Use the right programming language for the right data > format. > > /Roger > > *convert2xml.awk* > > BEGIN { # field separator is tab (x09) > # record separator is CRLF (\r\n) > FS = "\t" > RS = "\r\n" > print "<Airport>" > } > NR==1 { # get column header names, store in an array > for (i=1; i<=NF; i++) > header[i] = $i; > } > NR!=1 { # create a <Row>...</Row> element for the line > # surround field $i with a start/end tag named header[i] > print "<Row>" > for (i=1; i<=NF; i++) > print "<" header[i] ">" $i "</" header[i] ">" > print "</Row>" > } > END { print "</Airport>" } >