/**************************************************************************
OmegaT - Computer Assisted Translation (CAT) tool
with fuzzy matching, translation memory, keyword search,
glossaries, and translation leveraging into updated projects.
Copyright (C) 2000-2006 Keith Godfrey and Maxym Mykhalchuk
2010 Didier Briel
Home page: http://www.omegat.org/
Support center: http://groups.yahoo.com/group/OmegaT/
This file is part of OmegaT.
OmegaT is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OmegaT 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
**************************************************************************/
package org.omegat.filters3.xml;
import java.util.ArrayList;
import java.util.List;
/**
* Document type declaration in XML file. For example,
* <code><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
* "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"></code>.
*
* @author Maxym Mykhalchuk
* @author Didier Briel
*/
public class DTD extends XMLPseudoTag {
private String name;
private String publicId;
/** Returns Public ID of this DTD. */
public String getPublicId() {
return publicId;
}
private String systemId;
/** Returns System ID of this DTD. */
public String getSystemId() {
return systemId;
}
private List<Entity> entities;
/** Creates a new instance of Doctype */
public DTD(String name, String publicId, String systemId) {
this.name = name;
this.publicId = publicId;
this.systemId = systemId;
entities = new ArrayList<Entity>();
}
public void addEntity(Entity entity) {
entities.add(entity);
}
/**
* Returns the DTD in its original form as it was in original document.
*/
public String toOriginal() {
StringBuilder res = new StringBuilder();
res.append("<!DOCTYPE ").append(name);
if (publicId != null) {
res.append(" PUBLIC \"").append(publicId).append("\"");
}
if (systemId != null) {
if (publicId == null) {
res.append(" SYSTEM");
}
res.append(" \"").append(systemId).append("\"");
}
if (!entities.isEmpty()) {
res.append("\n[\n");
for (Entity entity : entities) {
res.append(entity.toString()).append("\n");
}
res.append("]");
}
res.append(">\n");
return res.toString();
}
}