Markup Rules: Tree Processing (1)

XML tree parsing is declared using the xmltree profile, and initiated with parseXml (in this case reading from ‶standard input″):

program xmltree, textpatterns;
parseXml ();
choose xmlElementNode ("doc") {
  println (".startdoc"); processChildren; println (".enddoc");
}
choose xmlElementNode ("p") :> processChildren;
choose xmlElementNode ("list") {
  println (".startlist"); processChildren; println (".endlist");
}
choose xmlElementNode ("item") {
  print (".item "); processChildren;
}
choose xmlTextNode =
  println (*.data) unless *.data matches ([" \t\n"]* & -|);
Beyond OmniMark Sam Wilmott
Slide 18 of 37 www.wilmott.ca