29.05.2014 Views

The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE

The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE

The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

document.xml, "/one/(three|five)/some"<br />

), ', ', ' and '))<br />

\stopluacode<br />

We get: ‘pdftex, luatex, xetex and metapost’.<br />

<strong>The</strong>re a several helper functions, like xml.count which in this case returns 4.<br />

\startluacode<br />

tex.sprint(xml.count(document.xml,"/one/(three|five)/some"))<br />

\stopluacode<br />

Functions like this gives the opportunity to loop over lists <strong>of</strong> elements by index.<br />

manipulations<br />

We can manipulate elements too. <strong>The</strong> next code will add some elements at specic locations.<br />

\startluacode<br />

xml.before(document.xml,"/one/three/some","okay")<br />

xml.after (document.xml,"/one/three/some","okay")<br />

tex.sprint("\\starttyping")<br />

xml.serialize_path(document.xml,"/one/three",tex.sprint)<br />

tex.sprint("\\stoptyping")<br />

\stopluacode<br />

And indeed, we suddenly have a couple <strong>of</strong> ‘okay’'s there:<br />

<br />

okaypdftexokay<br />

okayluatexokay<br />

okayxetexokay<br />

<br />

Of course wel can also delete elements:<br />

\startluacode<br />

xml.delete(document.xml,"/one/three/some")<br />

xml.delete(document.xml,"/one/three/af")<br />

tex.sprint("\\starttyping")<br />

xml.serialize_path(document.xml,"/one/three",tex.sprint)<br />

tex.sprint("\\stoptyping")<br />

\stopluacode<br />

XML revisioned 137

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!