いまいちDOCTYPEが分かってなかったので。
文書型宣言の読み方 | 鳩丸よもやま話
を一目で表すとこんな感じ。(クリックして拡大して見てくれよな!)
JavaのDOMDocumentTypeでどうやるか
簡単な実験
Document pubDoc = new DOMDocument(); Document sysDoc = new DOMDocument(); DOMDocumentType sysDocType = new DOMDocumentType("root", "http://foo.com"); DOMDocumentType pubDocType = new DOMDocumentType("root", "-//OASIS//DTD DITA Map//EN", "http://foo.com"); // system sysDoc.setDocType(sysDocType); System.err.println(sysDoc.asXML());// <!DOCTYPE root SYSTEM "http://foo.com"> sysDocType.setSystemID(null); System.err.println(sysDoc.asXML());// <!DOCTYPE root> // public pubDoc.setDocType(pubDocType); System.err.println(pubDoc.asXML());// <!DOCTYPE root PUBLIC "-//OASIS//DTD DITA Map//EN" "http://foo.com"> pubDocType.setElementName("rootPublic"); System.err.println(pubDoc.asXML());// <!DOCTYPE rootPublic PUBLIC "-//OASIS//DTD DITA Map//EN" "http://foo.com"> pubDocType.setSystemID(null); System.err.println(pubDoc.asXML());// <!DOCTYPE rootPublic PUBLIC "-//OASIS//DTD DITA Map//EN"> pubDocType.setPublicID(null); System.err.println(pubDoc.asXML());// <!DOCTYPE rootPublic> sysDocType.setSystemID(null); System.err.println(pubDoc.asXML());// <!DOCTYPE rootPublic> pubDocType.setElementName(null); System.err.println(pubDoc.asXML());// <!DOCTYPE null> pubDocType.setSystemID("http://example.com"); System.err.println(pubDoc.asXML());// <!DOCTYPE null SYSTEM "http://example.com">
ここから言えることは
外部識別子について
systeId | 〇 | × | 〇 | × |
---|---|---|---|---|
publicId | 〇 | 〇 | × | × |
外部識別子 | PUBLIC | PUBLIC | SYSTEM | なし |