> Am 15.08.2018 um 14:04 schrieb Hans Hagen <j.ha...@xs4all.nl>: > > On 8/15/2018 12:27 PM, Mike O'Connor wrote: >> G’Day, >> Having a first go at converting TEI XML to ConTeXt. >> Steep learning curve, but easier (for me) than XSLT, and first results were >> amazing. Using http://www.pragma-ade.com/general/manuals/xml-mkiv.pdf as a >> guide. >> Currently stuck on converting an ISO format date (eg. 1908-01-10) into >> something more readable (eg. 10 January 1908) in the output. I presume I >> should create a function (?luacode) that can take any ISO value and output >> the readable form. The following works but seems to me inefficient. >> Grateful for any pointers. >> Mike >> Here is my MWE: >> \startbuffer[demo] >> <TEI> >> <text> >> <body> >> <div type="letter"> >> <opener> >> <date when-iso="1908-01-10" type="divDate">10.I.08</date> >> </opener> >> <closer> >> <date when-iso="1908-03-19" type="secondDate">19 Mar '08</date> >> </closer> >> </div> >> </body> >> </text> >> </TEI> >> \stopbuffer >> \startxmlsetups xml:initialize >> \xmlsetsetup{#1}{date}{xml:date} >> \stopxmlsetups >> \xmlregistersetup{xml:initialize} >> \startxmlsetups xml:date >> \xmldoifelse {#1}{.[@type='divDate']} { >> \def\docdate{\ctxlua{ >> local tyear = string.sub('\xmlatt{#1}{when-iso}',1,4) >> local tmonth = string.sub('\xmlatt{#1}{when-iso}',6,7) >> local tday = string.sub('\xmlatt{#1}{when-iso}',9,10) >> context.date{d = tday, m = tmonth, y = tyear} >> }} >> \docdate[day,month,year] = Document Date \par >> } { >> \def\docdate{\ctxlua{ >> local tyear = string.sub('\xmlatt{#1}{when-iso}',1,4) >> local tmonth = string.sub('\xmlatt{#1}{when-iso}',6,7) >> local tday = string.sub('\xmlatt{#1}{when-iso}',9,10) >> context.date{d = tday, m = tmonth, y = tyear} >> }} >> \docdate[day,month,year] = Event Date\par >> } >> \stopxmlsetups >> \starttext >> \xmlprocessbuffer{main}{demo}{} >> \stoptext > Can be wikified ... > > \startluacode > function xml.finalizers.tex.MyDate(e,what,how) > local t = string.split(e[1].at[what],"-") > context.date( > { y = t[1], m = t[2], d = t[3] }, > { how } > ) > end > \stopluacode > > \startxmlsetups xml:date > > \xmldoifelse {#1}{.[@type='divDate']} { > \xmlfilter{#1}{./MyDate("when-iso","day,month,year")}\ > Document Date \par > } { > \xmlfilter{#1}{./MyDate("when-iso","day,month,year")}\ > Event Date\par > > } > \stopxmlsetups
I couldn’t get this to work. Had to change it to: \startluacode function xml.finalizers.tex.MyDate(e,what,how) local ee = e[1].at[what] local t = (string.split(ee,"-")) context.date( { y = t[1], m = t[2], d = t[3] }, { how } ) end \stopluacode mtx-context | ConTeXt Process Management 1.03 mtx-context | mtx-context | main context file: /Volumes/Macintosh HD/usr/local/texlive/context-109/tex/texmf-context/tex/context/base/mkiv/context.mkiv mtx-context | current version: 2020.01.30 14:13 mtx-context | main context file: /Volumes/Macintosh HD/usr/local/texlive/context-109/tex/texmf-context/tex/context/base/mkiv/context.mkxl mtx-context | current version: 2020.01.30 14:13 Greetings Axel ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________