Už se s tím udělaly i poměrně složité věci.
Jaké cykly máte na mysli? Je to deklarativní jazyk, nikoli procedurální.
Pokud jde o ty ostatní věci:
1. podmínky: je tam např. 'when', to je ukázáno v příkladu, kromě toho se dají zadávat podmínky pomocí 'must'.
2. substituce/makra: je možné definovat 'grouping', což je podobá makrům nebo pojmenovaným vzorům (named patterns) v RELAX NG.
V článku jsem se nemohl všemu věnovat, doporučuji RFC 6020 (je to docela pěkné čtení:-).

