XML.uri = null;
XML.xml = '<?xml version="1.0"?><xhtml:div><xhtml:p style="">Some formatting: <xhtml:b>bold</xhtml:b>, <xhtml:i>italic</xhtml:i>, <xhtml:span style="text-decoration: underline;">underlined</xhtml:span>, <xhtml:span style="text-decoration: line-through;">strikethrough</xhtml:span>.</xhtml:p></xhtml:div>';
XML.readOnLoad = true;
XML.load();

XML.root.toLatex().println();

operation XML!t_div toLatex() {
	return self.childrenLatex();
}

operation XML!t_p toLatex() {
	return "\\par " + self.childrenLatex();
}

operation XML!t_span toLatex() {
	var latex = self.childrenLatex();
	if (self.a_style.indexOf("text-decoration: line-through") > -1) {
		latex = "\\sout{" + latex + "}";
	}
	if (self.a_style.indexOf("text-decoration: underline") > -1) {
		latex = "\\underline{" + latex + "}";
	}
	return latex;
}

operation XML!t_b toLatex() {
	return "\\textbf{" + self.childrenLatex() + "}";
}

operation XML!t_i toLatex() {
	return "\\textit{" + self.childrenLatex() + "}";
}

operation XML!Element toLatex() {
	return "";
}

operation XML!Element childrenLatex() {
	var latex = "";
	for (i in 0.to(self.childNodes.length -1)) {
		var child = self.childNodes.item(i);
		if (child.class.name.endsWith("DeferredTextImpl")) {
			latex += child.textContent;
		}
		else {
			latex += child.toLatex();
		}
	}
	return latex;
}