/* Desugar and compile: java -classpath xact-all.jar dk.brics.xact.desugar.Main Buggy.xact javac -classpath xact-all.jar Buggy.java Analyze: java -Ddk.brics.xact.NamespaceContextClass=Buggy \ -Ddk.brics.xact.Schemas=http://www.brics.dk/ixwt/examples/business_card_list1.xsd:http://www.brics.dk/ixwt/exercises/xhtml1-transitional.rng \ -classpath xact-all.jar:. dk.brics.xact.analysis.Main Buggy Execute: java -Ddk.brics.xact.NamespaceContextClass=Buggy \ -Ddk.brics.xact.Schemas=http://www.brics.dk/ixwt/examples/business_card_list1.xsd:http://www.brics.dk/ixwt/exercises/xhtml1-transitional.rng \ -classpath xact-all.jar:. Buggy */ import dk.brics.xact.*; public class Buggy { @DefaultXPathNamespace public static final String b = "http://businesscard.org"; @DefaultConstantNamespace public static final String h = "http://www.w3.org/1999/xhtml"; @Namespace public static final String s = "http://www.w3.org/2001/XMLSchema"; public @Type("h:html[s:string TITLE, h:Flow MAIN]") XML wrapper; public @Type("h:html") XML transform(@Type("b:cardlist") XML cardlist) { return wrapper.plug("TITLE", "My Phone List") .plug("MAIN", makeList(cardlist)); } private XML makeList(XML x) { XML r = [[<[h:li CARDS]>]]; for (XML c : x.select("card[phone]")) r = r.plug("CARDS", [[