jscl.mathml.MathML Maven / Gradle / Ivy
package jscl.mathml;
import org.apache.xerces.dom.CoreDocumentImpl;
import org.apache.xerces.dom.DocumentTypeImpl;
import org.apache.xerces.dom.ElementImpl;
import org.apache.xerces.dom.TextImpl;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayOutputStream;
public class MathML {
static Transformer xhtml;
Node node;
MathML(Node node) {
this.node = node;
}
public Document document() {
return node instanceof CoreDocumentImpl ? (Document) node : node.getOwnerDocument();
}
public MathML(String qualifiedName, String publicID, String systemID) {
this(new CoreDocumentImpl());
CoreDocumentImpl document = (CoreDocumentImpl) document();
document.setXmlEncoding("utf-8");
document.appendChild(new DocumentTypeImpl(document, qualifiedName, publicID, systemID));
}
public MathML element(String name) {
CoreDocumentImpl document = (CoreDocumentImpl) document();
return new MathML(new ElementImpl(document, name));
}
public void setAttribute(String name, String value) {
((Element) node).setAttribute(name, value);
}
public MathML text(String data) {
CoreDocumentImpl document = (CoreDocumentImpl) document();
return new MathML(new TextImpl(document, data));
}
public void appendChild(MathML math) {
node.appendChild(math.node);
}
public String toString() {
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
transformer().transform(new DOMSource(node), new StreamResult(os));
} catch (TransformerException e) {
}
String s = os.toString();
return s.substring(s.indexOf(">") + 1);
}
static Transformer transformer() throws TransformerException {
return xhtml == null ? xhtml = TransformerFactory.newInstance().newTransformer() : xhtml;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy