blob: fb461e1d602683b1bbdaa7873e66a16990527867 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marc R. Hoffmann - initial API and implementation
*
*******************************************************************************/
package org.jacoco.report.internal.html;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import org.jacoco.report.internal.xml.XMLDocument;
/**
* {@link XMLDocument} that declares its content type to be XHTML 1.0 Strict and
* produces {@link HTMLElement}s as children.
*/
public class HTMLDocument extends XMLDocument {
private static final String ROOT = "html";
private static final String PUBID = "-//W3C//DTD XHTML 1.0 Strict//EN";
private static final String SYSTEM = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";
private static final String XMLNS = "xmlns";
private static final String XHTML_NAMESPACE_URL = "http://www.w3.org/1999/xhtml";
/**
* Creates a new HTML document based on the given writer.
*
* @param writer
* writer for content output
* @param encoding
* document encoding
* @throws IOException
* in case of problems with the writer
*/
public HTMLDocument(final Writer writer, final String encoding)
throws IOException {
super(ROOT, PUBID, SYSTEM, encoding, false, writer);
attr(XMLNS, XHTML_NAMESPACE_URL);
}
/**
* Creates a new HTML document based on the given stream.
*
* @param output
* stream for content output
* @param encoding
* document encoding
* @throws IOException
* in case of problems with the stream
*/
public HTMLDocument(final OutputStream output, final String encoding)
throws IOException {
super(ROOT, PUBID, SYSTEM, encoding, false, output);
attr(XMLNS, XHTML_NAMESPACE_URL);
}
@Override
public HTMLElement element(final String name) throws IOException {
final HTMLElement element = new HTMLElement(writer, name);
addChildElement(element);
return element;
}
/**
* Creates a 'head' element.
*
* @return 'head' element
* @throws IOException
* in case of problems with the writer
*/
public HTMLElement head() throws IOException {
return element("head");
}
/**
* Creates a 'body' element.
*
* @return 'body' element
* @throws IOException
* in case of problems with the writer
*/
public HTMLElement body() throws IOException {
return element("body");
}
}