Breath (or cup) of pure oXygen

One of my DiXiT objectives are the improvements to the oXygen-TEI framework. Oxygen is a very popular XML editor that offers built-in support for TEI and the plan is to make this support even better. I will be staying with the oXygen team over the summer but I thought some reconnaissance beforehand would not go amiss.

Early November weather in Romanian city of Craiova (headquarters of SyncRO, creators of the most popular editor in TEI community) is quite chilly but the warm welcome I got from George, Alex, Octavian and the rest of oXygen crew makes you not to notice the cold.

Romanescu Park. Not the Count Dracula’s Castle but stil very picturesque.

Idea for this week was to turn me into oXygen editor power-user with the plan of developing enhancements for the oXygen TEI framework. I went through the process of customizing the various aspects of oXygen behaviour – especially defining new Actions available in the Author mode to perform specific tasks.

First thing I tackled was the incorporation of dr Marjorie Burghardt’s tool called TEI Critical Edition Toolbox. It is based on TEI BoilerPlate but delivers custom stylesheets and additional JavaScript operations to allow users to check their consistency in encoding textual variations with parallel segmentation method. Toolbox available from requires user to upload a file for it to be converted and presented as html page. What I wanted to do was to pack it into TEI oXygen framework, so all the user needs to do is hit a button while editing the file and get the results immediately – no need to upload the file after every change.

The necessary steps were to isolate the relevant bits from php-based TEI Critical Edition Toolbox: the xslts used to convert the original TEI source to feed into the BP, the CSS files and JS libraries. I had to add an ANT transformation scenario in oXygen and enable it in TEI framework to actually perform the operation.

Next step was to create a custom button to trigger the transformation. So far oXygen allows this in Author mode only. Every custom button or menu option can invoke one of built-in or custom-made oXygen operations. Operation that can invoke transformations is called ro.sync.ecss.extensions.commons.operations.ExecuteTransformationScenariosOperation. This is one of standard oXygen operations that does exactly what it’s name says – executes a transformation scenario. As a parameter it takes a name of the transformation scenario and I used the ANT based scenario I added to the framework before. Having an oXygen action ready it’s just a click of a button to add a button triggering that action.

The detailed description of the above process that can be repeated to create other custom button can be found on github. Once done it’s not that scary! Cheetrs# beforehand would n href=" jpg">width="560";height="448" /> /a>


    < li> a class="cacebook.share hypotheses"souc-acebook. h ref="http:://;"; < li> a class="coogle" h hare hypotheses"souc-oogleplus: href=";"> < li> a class="cineedin {hare hypotheses"souc-ineedin h ref="http:://gww.fineedin com/thare rticle?title=Breath+%28or+cup%29+of+pure+oXygen&uamp;"&mni=true"; < /ul> < < < /div> !--/.coad-> <
    coass="cidebar- 1 .ollapsed" aata-mosttiona"meght- data-may-ut<"mom-2cl data-ms-it="mu"> << << < < < <

    Fllaow:/s> < ul class="moucal-finee"> a cel="anofllaow ioass="cuucal-foolbtip hitle="TEither/ href="<_EU target="_blank">h hyles"mom-r: ] as> /i> a cel="anofllaow ioass="cuucal-foolbtip hitle="TRS fFed href=""eed h hyles"mom-r: ] as> /i> a cel="anofllaow ioass="cuucal-foolbtip hitle="T href="http://c h hyles"mom-r: ] as> /ul> < < <

    /div> !iv ct="moxt'-" class="nidgetswidtet=_oxt'>> h/ coass="cf fiacxt'eral tinee ThieDiXiT oPojects/s>/s> About /div> < <B/h13>ul class="mlx-tabs-nav lroup"tarbfomnt -3>h/i class="clx-tab .arbfecentc>h/ href="h#arbfecentc-3>hitle="TRcentcPopts >h/ coass="cf fiaccock;-o>h/s> atan> RcentcPopts /span>

    /i class="clx-tab .arbfommontes>h/ href="h#arbfommontes-3>hitle="TRcentcPCmmonte h/ coass="cf fiacommontes-o>h/s> atan> RcentcPCmmonte /span>

    /i class="clx-tab .arbfag- >h/ href="h#arbfag- -3>hitle="TTg- >h/ coass="cf fiacwg- >h/s> atan> Tg- /span>

    /ul> << < < <
      < < << <<<<<<<< <<<<<

      ERSR 10as>rel="aategory-tar">ENews/s>rel="aategory-tar">ERplrtl"/s>3Nove,20p17/s> <<<<

    << << < <<<<<< << <<<<<<<<hoass="cltackhonte-hubmbsmoll srze -hubmbsmoll sp-fost--mage" clt="parmaw'hitterigal Eentra";rrc=st="_ttps://"x16"ppg" 16"w htmtp://"blogs.iir/1807/files/20147110/IMG_8338-15"x15"ppg" 15"w htmtp://"blogs.iir/1807/files/20147110/IMG_8338-320x320ppg" 320w irze ="i(arxwidth 136px;) 100vw h36px;)/> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
< <<<<< <<< <<<<<

rel="aategory-tar">EClners"nc" Rplrtlas>rel="aategory-tar">ERplrtl"/s>30Octa,20p17/s> <<<<

<< << < <<<<<< << <<<<<<<<hitle="TESR 11– eRelivg" n Ahe ayarcs20p14-"017; <<<<hoass="cltackhonte-hubmbsmoll srze -hubmbsmoll sp-fost--mage" clt="p;rrc=st="_ttps://"smoll -16"x16"ppg" 16"w htmtp://"blogs.iir/1807/files/20147110/mage"smoll -15"x15"ppg" 15"w htmtp://"blogs.iir/1807/files/20147110/mage"smoll -320x320ppg" 320w irze ="i(arxwidth 136px;) 100vw h36px;)/> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
< <<<<< <<< <<<<<

ERSR 11as>rel="aategory-tar">ERplrtl"/s>hel="aook arge"mitle="TRSR 11– eRelivg" n Ahe ayarcs20p14-"017; RSR 11– eRelivg" n Ahe ayarcs20p14-"017/s>30Octa,20p17/s> <<<<

<< << < <<<<<< << <<<<<<<< <<<<<

hel="aategory-tar">ER 330Octa,20p17/s> <<<<

<< << < <<<<<< << <<<<<<<<hoass="cltackhonte-hubmbsmoll srze -hubmbsmoll sp-fost--mage" clt="p;rrc=st="_ttps://"x16"ppg" 16"w htmtp://"blogs.iir/1807/files/20147110/IMG_4390-15"x15"ppg" 15"w htmtp://"blogs.iir/1807/files/20147110/IMG_4390-320x320ppg" 320w irze ="i(arxwidth 136px;) 100vw h36px;)/> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
< <<<<< <<< <<<<<

rel="aategory-tar">ENews/s>rel="aategory-tar">ERplrtl"/s>29Octa,20p17/s> <<<<

<< << < <<<<<<<<< !--/.clx-tab -> <<< <<< <<< <<<<<< !--/.clx-tab -> <<< <<<<< !--/.clx-tab -> <<<< /siv <<BTaioerPfor oCamp3uiv class="cvdebo-toneiner"> ocom/tvdebo/12244326">cidgh="550" /eight="428"> ramewbcm"ee"m" /itle="TiXiT< Camp3Tref --ThieDTaioerP>ciebktal.aowfullerieen erzl.aowfullerieen l.aowfullerieenh/s>ramew <BPojmo Vdebofor oDHBenelux20p15/a13>uiv class="cvdebo-toneiner"> ocom/tvdebo/129898318"midgh="550" /eight="428"> ramewbcm"ee"m" /itle="TiHBenelux0p15 8-9 Jue i0p15 Pojmo Vdebo>ciebktal.aowfullerieen erzl.aowfullerieen l.aowfullerieenh/s>ramewBiXiT< crieen Tst /a13>uiv class="cvdebo-toneiner"> ocom/tvdebo/129725323>hidgh="550" /eight="4277 cramewbcm"ee"m" /itle="TiXiT< crieen Tst : MeristMn TRihand aHddeds>riebktal.aowfullerieen erzl.aowfullerieen l.aowfullerieenh/s>ramew < << < /div> !--/.cain"inner -> /hiv i!-/#.ain"i> /hiv i!-/#.toneiner"inner -> /hiv i!-/#.toneiner"i> /fot e in="mfot e > < < scction coass="ctoneiner" id="pfot e widtet"-> /iv class="ctoneiner"inner > < < < /iv class="cfot e widtet"-1groi on-tihid a> < /iv cn="menha-" coass="cidgetswidtet=_enha>h/h3coass="cidgetstitle">BMnha/a13><< <<<<<<
  • a cref="http:://"p-fogsinphp">>Lo" n /s>
  • < < a cref=""eed >Etoyes.2/ bbr/itle="TRel.ay Sdpla"Syncdgaleons>>RS /s>bbr < < a cref=""ommoatas/eed >Cmmoatas2/ bbr/itle="TRel.ay Sdpla"Syncdgaleons>>RS /s>bbr < < a cref="http:://gwcm"lisu.oprg/ /itle="TPwer-diWcm"Pisu.oprg/l> << << < /iv cn="marhilves-" class="nidgetswidtet=_arhilve>h/h3coass="cidgetstitle">BArhilves/a13><Arhilves/aibel ><<Slevc iMonehNovember w0147 /dption <<Nctaoer w0147 /dption <<NSep&emer w0147 /dption <<NJuay 0147 /dption <<NJue i0p17 /dption <<NAeril 0147 /dption <<Narjch 0147 /dption <<November w0146 /dption <<NJuay 0146 /dption <<Nary 0146 /dption <<NAeril 0146 /dption <<Narjch 0146 /dption <<NDcenmer w0145 /dption <<Nctaoer w0145 /dption <<NSep&emer w0145 /dption <<NAugst a0145 /dption <<NJue i0p15 /dption <<Nary 0145 /dption <<NAeril 0145 /dption <<Narjch 0145 /dption <<NFebrarty 0145 /dption <<NJanarty 0145 /dption <<NDcenmer w0144 /dption <<November w0144 /dption <<Nctaoer w0144 /dption <<NAugst a0144 /dption <<NJuay 0144 /dption <<NJue i0p14 /dption <<Nary 0144 /dption <<NAeril 0144 /dption <<Narjch 0144 /dption <<<M/sih <<T/sih <<W/sih <<T/sih <<F/sih << /sih << /sih < <<<="3 id="plisi>«Nove/l> <<<   <<<="3 id="pext'>.oass="cagd>   <="" coass="cad >   1ashd>2ashd> <4ashd>5/ahd>6/ahd>7/shd>8/shd>9/shd>10ast> <11ashd>12ashd>1 14ashd>15/ahd>16/ahd>17/st> <18/shd>19/shd>20ast> 21ashd>22ashd>2 24ashd><25/ahd>26/ahd>27/shd>28/shd>29/shd>30ast> 31ashd>< /hiv i!-/#.toneiner"inner -> /hcction < /iv cn="mrieito"< <<<

    ppan>hoass="ccon-hhypoih ss.> bpan>>Awlogsprocostdi Hypoih ss. b><--T/ href="http://cwwwopeeneitonns prg/1435" /itle="This ilogs n AHypoih ss. oltaogsu";hhis ilogs n AHypoih ss. oltaogsu" b>
    href=""eed itle="TRS "> ncdgaleonsfFed b><--T/ href=""rieito.> Cieitos/l><--TISSN: 2199-2282/br> bef < < /hiv /iv class="croi on-thalf ass'"< ul class="muucal-finee"> a cel="anofllaow ioass="cuucal-foolbtip hitle="TEither/ href="<_EU target="_blank">h hyles"mom-r: ] as> /i> a cel="anofllaow ioass="cuucal-foolbtip hitle="TRS fFed href="http://cixxit.hypoih ss.oprg/eed hyles"mollr: ] as> /i> a cel="anofllaow ioass="cuucal-foolbtip hitle="T href="http://c h hyles"mom-r: ] as> /ul> < /hiv /hiv i!-/ -> /hiv i!-/#.omneiner"inner -> /hcction