home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.ms.xml.parser; import com.ms.xml.om.Element; import com.ms.xml.om.ElementImpl; import com.ms.xml.util.Atom; import com.ms.xml.util.EnumWrapper; import com.ms.xml.util.Name; import com.ms.xml.util.XMLOutputStream; import java.io.IOException; import java.util.Enumeration; import java.util.Hashtable; public class DTD { static Hashtable builtin = new Hashtable(); Hashtable entities; Hashtable elementdecls; Hashtable notations; Hashtable shortNameSpaces; Hashtable longNameSpaces; Hashtable loadedNameSpaces; transient Hashtable ids; transient IDCheck idCheck; Name docType; Element schema = null; static Atom nameXML = Atom.create("XML"); public final void addLoadedNameSpace(Atom var1) { if (this.loadedNameSpaces == null) { this.loadedNameSpaces = new Hashtable(); } this.loadedNameSpaces.put(var1, var1); } public final Atom findShortNameSpace(Atom var1) { return this.shortNameSpaces == null ? null : (Atom)this.shortNameSpaces.get(var1); } public static boolean isReservedNameSpace(Atom var0) { return var0 == nameXML; } final Element findID(Name var1) { return this.ids == null ? null : (Element)this.ids.get(var1); } final void addIDCheck(Name var1, int var2, int var3, Object var4) { this.idCheck = new IDCheck(this.idCheck, var1, var2, var3, var4); } public final Name getDocType() { return this.docType; } public final Enumeration entityDeclarations() { return (Enumeration)(this.entities == null ? EnumWrapper.emptyEnumeration : this.entities.elements()); } public final Enumeration notationDeclarations() { return (Enumeration)(this.notations == null ? EnumWrapper.emptyEnumeration : this.notations.elements()); } final void addEntity(Entity var1) { if (this.entities == null) { this.entities = new Hashtable(); } this.entities.put(var1.name, var1); } final void addElementDecl(ElementDecl var1) { if (this.elementdecls == null) { this.elementdecls = new Hashtable(); } this.elementdecls.put(var1.name, var1); } final void addNotation(Notation var1) { if (this.notations == null) { this.notations = new Hashtable(); } this.notations.put(var1.name, var1); } public final void addNameSpace(Atom var1, Atom var2) { if (this.shortNameSpaces == null) { this.shortNameSpaces = new Hashtable(); this.longNameSpaces = new Hashtable(); } this.shortNameSpaces.put(var2, var1); this.longNameSpaces.put(var1, var2); } public final Atom findLongNameSpace(Atom var1) { return this.longNameSpaces == null ? null : (Atom)this.longNameSpaces.get(var1); } public final Atom findLoadedNameSpace(Atom var1) { if (var1 == null) { return null; } else { return this.loadedNameSpaces == null ? null : (Atom)this.loadedNameSpaces.get(var1); } } static { String var0 = "apos"; builtin.put("apos", new Entity(Name.create(var0), false, 39)); var0 = "quot"; builtin.put(var0, new Entity(Name.create(var0), false, 34)); var0 = "amp"; builtin.put(var0, new Entity(Name.create(var0), false, 38)); var0 = "lt"; builtin.put(var0, new Entity(Name.create(var0), false, 60)); var0 = "gt"; builtin.put(var0, new Entity(Name.create(var0), false, 62)); var0 = "nbsp"; builtin.put(var0, new Entity(Name.create(var0), false, 160)); } public final void save(XMLOutputStream var1) throws IOException { if (this.notations != null) { Enumeration var2 = this.notations.elements(); while(var2.hasMoreElements()) { Notation var3 = (Notation)var2.nextElement(); var1.writeIndent(); var3.save(var1); } } if (this.entities != null) { Enumeration var4 = this.entities.elements(); while(var4.hasMoreElements()) { Entity var6 = (Entity)var4.nextElement(); var1.writeIndent(); var6.save(var1); } } if (this.elementdecls != null) { Enumeration var5 = this.elementdecls.elements(); while(var5.hasMoreElements()) { ElementDecl var7 = (ElementDecl)var5.nextElement(); var1.writeIndent(); var7.save(var1); } } } public final Enumeration elementDeclarations() { return (Enumeration)(this.elementdecls == null ? EnumWrapper.emptyEnumeration : this.elementdecls.elements()); } final void addID(Name var1, Element var2) { if (this.ids == null) { this.ids = new Hashtable(); } this.ids.put(var1, var2); } final void checkIDs() throws ParseException { while(this.idCheck != null) { if (this.findID(this.idCheck.name) == null) { throw new ParseException("Couldn't find element with ID '" + this.idCheck.name.toString() + "'", this.idCheck.line, this.idCheck.col, this.idCheck.owner); } this.idCheck = this.idCheck.next; } } public final void clear() { if (this.ids != null) { this.ids.clear(); } this.idCheck = null; } public final ElementDecl findElementDecl(Name var1) { return this.elementdecls == null ? null : (ElementDecl)this.elementdecls.get(var1); } public final Entity findEntity(Name var1) { Object var2 = null; if (this.entities != null) { var2 = (Entity)this.entities.get(var1); } if (var2 == null) { var2 = builtin.get(var1.getName()); } return var2 != null ? (Entity)var2 : null; } public final Element getSchema() { if (this.schema == null) { this.schema = new ElementImpl(Name.create("SCHEMA", "XML"), 0); if (this.docType != null) { this.schema.setAttribute(Name.create("ID", "XML"), this.docType); } if (this.longNameSpaces != null) { Enumeration var1 = this.longNameSpaces.keys(); while(var1.hasMoreElements()) { Atom var2 = (Atom)var1.nextElement(); ElementImpl var3 = new ElementImpl(Name.create("NAMESPACE", "XML"), 5); var3.setAttribute(Name.create("HREF", "XML"), this.longNameSpaces.get(var2)); var3.setAttribute(Name.create("AS", "XML"), var2); this.schema.addChild(var3, (Element)null); } } Enumeration var4 = this.notationDeclarations(); while(var4.hasMoreElements()) { Element var7 = (Element)var4.nextElement(); Element var10 = var7.toSchema(); if (var10 != null) { this.schema.addChild(var10, (Element)null); } } var4 = this.entityDeclarations(); while(var4.hasMoreElements()) { Element var8 = (Element)var4.nextElement(); Element var11 = var8.toSchema(); if (var11 != null) { this.schema.addChild(var11, (Element)null); } } var4 = this.elementDeclarations(); while(var4.hasMoreElements()) { Element var9 = (Element)var4.nextElement(); Element var12 = var9.toSchema(); if (var12 != null) { this.schema.addChild(var12, (Element)null); } } } return this.schema; } public final Notation findNotation(Name var1) { return this.notations == null ? null : (Notation)this.notations.get(var1); } }