marytts.datatypes.MaryXML Maven / Gradle / Ivy
The newest version!
/**
* Copyright 2000-2006 DFKI GmbH.
* All Rights Reserved. Use is subject to license terms.
*
* This file is part of MARY TTS.
*
* MARY TTS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*
*/
package marytts.datatypes;
// Log4j classes
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import marytts.util.MaryUtils;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* Class containing only static methods. All knowledge about MaryXML documents is grouped here.
*/
public class MaryXML {
public static final String MARYXML = "maryxml";
public static final String PARAGRAPH = "p";
public static final String SENTENCE = "s";
public static final String VOICE = "voice";
public static final String PHRASE = "phrase";
public static final String MARK = "mark";
public static final String SAYAS = "say-as";
public static final String PHONOLOGY = "phonology";
public static final String PROSODY = "prosody";
public static final String AUDIO = "audio";
public static final String BOUNDARY = "boundary";
public static final String MTU = "mtu";
public static final String TOKEN = "t";
public static final String SYLLABLE = "syllable";
public static final String PHONE = "ph";
// public static final String NONVERBAL = "nvv";
public static final String NONVERBAL = "vocalization";
private static String version = "0.5";
private static String namespace = "http://mary.dfki.de/2002/MaryXML";
private static Logger logger = MaryUtils.getLogger("MaryXML");
private static DocumentBuilder docBuilder = null;
// Static constructor:
static {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setExpandEntityReferences(true);
factory.setNamespaceAware(true);
docBuilder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
logger.error("Cannot start up XML parser", e);
}
}
public static String getVersion() {
return version;
}
public static String getNamespace() {
return namespace;
}
public static String getRootTagname() {
return MARYXML;
}
public static Document newDocument() {
Document doc = docBuilder.getDOMImplementation().createDocument(getNamespace(), getRootTagname(), null);
Element root = doc.getDocumentElement();
root.setAttribute("version", getVersion());
root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
return doc;
}
/**
* In the given MaryXML document, create a new element of the given name, with the proper namespace.
*
* @param doc
* a MaryXML document
* @param elementName
* the name of the MaryXML document
* @return the newly created MaryXML element.
* @throws IllegalArgumentException
* if the document is not a maryxml document with the proper namespace.
*/
public static Element createElement(Document doc, String elementName) {
if (doc == null)
throw new NullPointerException("Received null document");
if (!doc.getDocumentElement().getTagName().equals(getRootTagname()))
throw new IllegalArgumentException("Not a maryxml document: " + doc.getDocumentElement().getTagName());
if (doc.getDocumentElement().getNamespaceURI() == null) {
throw new IllegalArgumentException("Document has no namespace!");
}
if (!doc.getDocumentElement().getNamespaceURI().equals(getNamespace()))
throw new IllegalArgumentException("Document has wrong namespace: " + doc.getDocumentElement().getNamespaceURI());
return doc.createElementNS(getNamespace(), elementName);
}
public static Element appendChildElement(Node node, String childName) {
if (node == null)
throw new NullPointerException("Received null node");
return (Element) node.appendChild(createElement(node.getOwnerDocument(), childName));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy