package org.freehep.xml.util;
import java.io.Writer;
import org.geogebra.common.util.debug.Log;
/**
* A class that makes it easy to write XHTML documents.
*
* @author Mark Donszelmann
* @version $Id: XHTMLWriter.java,v 1.5 2008-10-23 19:04:05 hohenwarter Exp $
*/
public class XHTMLWriter extends XMLWriter {
/**
* @param type
* [strict, transitional, frameset]
*/
public XHTMLWriter(Writer w, String indentString, String type) {
super(w, indentString, "xhtml");
openDoc("1.0", "UTF-8", false);
if (type.equals("strict")) {
referToDTD("html", "-//W3C//DTD XHTML 1.0 Strict//EN",
"http://wwww.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
} else if (type.equals("transitional")) {
referToDTD("html", "-//W3C//DTD XHTML 1.0 Transitional//EN",
"http://wwww.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd");
} else if (type.equals("frameset")) {
referToDTD("html", "-//W3C//DTD XHTML 1.0 Frameset//EN",
"http://wwww.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd");
} else {
Log.debug("XHTMLWriter: unknown type: " + type
+ ", allowed are: strict, transitional, frameset");
}
setAttribute("xmlns", "http://www.w3.org/1999/xhtml");
if (!type.equals("strict")) {
setAttribute("xml", "lang", "en");
}
setAttribute("lang", "en");
openTag("html");
}
public XHTMLWriter(Writer w) {
this(w, " ", "strict");
}
@Override
public void closeDoc() {
if (!closed) {
closeTag();
}
super.closeDoc();
}
@Override
public void printTag(String name) {
checkNameValid(name);
writer.print("<" + name);
printAttributes(name.length());
writer.println(" />");
}
@Override
public void setAttribute(String name, boolean value) {
if (value) {
setAttribute(name, name);
}
}
/**
* Prints text as is (no escaping of anything)
*/
public void printPlain(String text) {
writer.print(text);
}
}