Here's one other note. If I was concerned about the "labels" on the items in your xml file, I'd do it as a second pass.
Perhaps: require 'xml/sax/x2j' x2jclass 'freecelllabels' 'Items' x2jDefn / := Table : Table=: i.0 0 dict := Table=: Table,Row : Row=: '' key := Row=: Row,<y ) With example use: process_freecelllabels_ sample +----+--------+----------+-----+------+ |date|duration|gameNumber|moves|result| +----+--------+----------+-----+------+ |date|duration|gameNumber|moves|result| +----+--------+----------+-----+------+ Then I could sort each row based on its labels, or extract out data corresponding to certain labels, or whatever. In your case, of course, this is unnecessary and therefore a waste of effort. Thanks, -- Raul On Wed, Feb 12, 2014 at 5:03 PM, Brian Schott <schott.br...@gmail.com>wrote: > That helps a lot. > > This showed me that x2jElm is a conjunction. > > x2jElm > 2 : 0 > x2jElmLoc=: x2jElmLoc,<,m > x2jElmDef=: x2jElmDef`(v f.) > ) > > And this showed me that the next result is a new verb's atom > representation. > I am still way thinking about how the line ` '/' x2jElm (3 : 0)` which has > no `=:` at the end, can produce a useful result. In a similar manner the > code I could not make work had no `:=` at the end of the first line, but > produced a useful result. I am struggling to understand that concept. That > is still mind blowing for me. I mean, I see the `=:` inside the conjunction > x2jElm, and I suppose that is where the assignment is being done, but that > is some fancy code. > > Thanks for your clarifications. > > '/' x2jElm (3 : 0) > Result > : > Result=: '' > ) > +---------------------------+ > |+-+-----------------------+| > ||:|+-----+---------------+|| > || ||+-+-+|+-+-----------+||| > || |||0|3|||0|Result |||| > || ||+-+-+|| |: |||| > || || || |Result=: ''|||| > || || |+-+-----------+||| > || |+-----+---------------+|| > |+-+-----------------------+| > +---------------------------+ > > > > On Wed, Feb 12, 2014 at 4:29 PM, Raul Miller <rauldmil...@gmail.com> > wrote: > > > Ok, let's recap. > > > > Here's the code you quoted: > > > > x2jDefn_nifxml_ > > 1 : 0 > > for_i. <;._2 (0 : 0) do. > > 'nm df'=. ':=' splitstring >{.'NB.' splitstring >i > > 'mn dy'=. dltb each 2 {. ' : ' splitstring df > > nm=. dltb nm > > if. 0=#dy do. nm x2jChar (3 : mn) > > elseif. 0=#mn do. nm x2jElm (4 : dy) > > elseif. do. nm x2jElm (3 : (mn;':';dy)) end. > > end. > > i.0 0 > > ) > > > > 'Items'x2jDefn_nifxml_ > > / := Result : Result=: '' > > compound := cEnd y : x cStart y > > add := aEnd y : x aStart y > > add := aChr y > > ) > > > > The consequence of executing this code is something like this: > > > > '/' x2jElm (3 : 0) > > Result > > : > > Result=: '' > > ) > > > > 'compound' x2jElm (3 :0) > > cEnd y > > : > > x cStart y > > ) > > > > 'add' x2jElm (3 :0) > > aEnd y > > : > > x aStart y > > ) > > > > 'add' x2jChar (3 :0) > > aChr y > > ) > > > > Put differently, the x2jElm code runs for the specified elements. The > > monadic definition runs for the close of the element and the dyadic > > definition runs for the opening element. The '/' gives basically the same > > effect as a startDocument/endDocument pair. > > > > Meanwhile, the x2jChar code gets the characters inside the element > (inside > > the <add> element, in this case). > > > > Does that help? Or am I missing your question? > > > > Thanks, > > > > -- > > Raul > > > > -- > (B=) > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm