// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: packimports(3) fieldsfirst lnc // Source File Name: SAXDriver.java package com.icl.saxon.aelfred; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.util.*; import org.xml.sax.*; import org.xml.sax.ext.DeclHandler; import org.xml.sax.ext.LexicalHandler; import org.xml.sax.helpers.NamespaceSupport; // Referenced classes of package com.icl.saxon.aelfred: // DefaultHandler, XmlParser public class SAXDriver implements Locator, Attributes, XMLReader, Parser, AttributeList { private static class Adapter implements ContentHandler { private DocumentHandler docHandler; public void setDocumentLocator(Locator locator) { /*1268*/ docHandler.setDocumentLocator(locator); } public void startDocument() throws SAXException { /*1271*/ docHandler.startDocument(); } public void processingInstruction(String s, String s1) throws SAXException { /*1275*/ docHandler.processingInstruction(s, s1); } public void startPrefixMapping(String s, String s1) { } public void startElement(String s, String s1, String s2, Attributes attributes) throws SAXException { /*1286*/ docHandler.startElement(s2, (AttributeList)attributes); } public void characters(char ac[], int i, int j) throws SAXException { /*1292*/ docHandler.characters(ac, i, j); } public void ignorableWhitespace(char ac[], int i, int j) throws SAXException { /*1298*/ docHandler.ignorableWhitespace(ac, i, j); } public void skippedEntity(String s) { } public void endElement(String s, String s1, String s2) throws SAXException { /*1306*/ docHandler.endElement(s2); } public void endPrefixMapping(String s) { } public void endDocument() throws SAXException { /*1312*/ docHandler.endDocument(); } Adapter(DocumentHandler documenthandler) { /*1264*/ docHandler = documenthandler; } } private final DefaultHandler base = new DefaultHandler(); private XmlParser parser; private EntityResolver entityResolver; private ContentHandler contentHandler; private DTDHandler dtdHandler; private ErrorHandler errorHandler; private DeclHandler declHandler; private LexicalHandler lexicalHandler; private String elementName; private Stack entityStack; private Vector attributeNames; private Vector attributeNamespaces; private Vector attributeLocalNames; private Vector attributeValues; private boolean namespaces; private boolean xmlNames; private boolean nspending; private int attributeCount; private String nsTemp[]; private NamespaceSupport prefixStack; private Hashtable features; private Hashtable properties; static final String FEATURE = "http://xml.org/sax/features/"; static final String HANDLER = "http://xml.org/sax/properties/"; public SAXDriver() { /* 122*/ entityResolver = base; /* 123*/ contentHandler = base; /* 124*/ dtdHandler = base; /* 125*/ errorHandler = base; /* 126*/ declHandler = base; /* 127*/ lexicalHandler = base; /* 129*/ elementName = null; /* 130*/ entityStack = new Stack(); /* 132*/ attributeNames = new Vector(); /* 133*/ attributeNamespaces = new Vector(); /* 134*/ attributeLocalNames = new Vector(); /* 135*/ attributeValues = new Vector(); /* 137*/ namespaces = true; /* 138*/ xmlNames = false; /* 139*/ nspending = false; /* 142*/ attributeCount = 0; /* 143*/ nsTemp = new String[3]; /* 144*/ prefixStack = new NamespaceSupport(); } public void setLocale(Locale locale) throws SAXException { /* 170*/ if("en".equals(locale.getLanguage())) /* 171*/ return; /* 173*/ else /* 173*/ throw new SAXException("AElfred only supports English locales."); } public EntityResolver getEntityResolver() { /* 183*/ return entityResolver; } public void setEntityResolver(EntityResolver entityresolver) { /* 192*/ if(entityresolver == null) /* 193*/ entityresolver = base; /* 194*/ entityResolver = entityresolver; } public DTDHandler getDTDHandler() { /* 204*/ return dtdHandler; } public void setDTDHandler(DTDHandler dtdhandler) { /* 213*/ if(dtdhandler == null) /* 214*/ dtdhandler = base; /* 215*/ dtdHandler = dtdhandler; } /** * @deprecated Method setDocumentHandler is deprecated */ public void setDocumentHandler(DocumentHandler documenthandler) { /* 233*/ contentHandler = new Adapter(documenthandler); /* 234*/ xmlNames = true; } public ContentHandler getContentHandler() { /* 243*/ return contentHandler; } public void setContentHandler(ContentHandler contenthandler) { /* 254*/ if(contenthandler == null) /* 255*/ contenthandler = base; /* 256*/ contentHandler = contenthandler; } public void setErrorHandler(ErrorHandler errorhandler) { /* 265*/ if(errorhandler == null) /* 266*/ errorhandler = base; /* 267*/ errorHandler = errorhandler; } public ErrorHandler getErrorHandler() { /* 276*/ return errorHandler; } public void parse(InputSource inputsource) throws SAXException, IOException { /* 299*/ synchronized(base) { /* 300*/ parser = new XmlParser(); /* 301*/ parser.setHandler(this); /* 304*/ try { /* 304*/ String s = inputsource.getSystemId(); /* 309*/ s = tryToExpand(s); /* 315*/ if(s != null) /* 316*/ entityStack.push(s); /* 318*/ else /* 318*/ entityStack.push("illegal:unknown system ID"); /* 320*/ parser.doParse(s, inputsource.getPublicId(), inputsource.getCharacterStream(), inputsource.getByteStream(), inputsource.getEncoding()); } /* 326*/ catch(SAXException saxexception) { /* 326*/ throw saxexception; } /* 328*/ catch(IOException ioexception) { /* 328*/ throw ioexception; } /* 330*/ catch(RuntimeException runtimeexception) { /* 330*/ throw runtimeexception; } /* 332*/ catch(Exception exception) { /* 332*/ throw new SAXException(exception.getMessage(), exception); } /* 334*/ finally { /* 334*/ contentHandler.endDocument(); /* 335*/ entityStack.removeAllElements(); } } } public void parse(String s) throws SAXException, IOException { /* 348*/ parse(new InputSource(s)); } public boolean getFeature(String s) throws SAXNotRecognizedException { /* 366*/ if("http://xml.org/sax/features/validation".equals(s)) /* 367*/ return false; /* 370*/ if("http://xml.org/sax/features/external-general-entities".equals(s) || "http://xml.org/sax/features/external-parameter-entities".equals(s)) /* 373*/ return true; /* 376*/ if("http://xml.org/sax/features/namespace-prefixes".equals(s)) /* 377*/ return xmlNames; /* 380*/ if("http://xml.org/sax/features/namespaces".equals(s)) /* 381*/ return namespaces; /* 386*/ if("http://xml.org/sax/features/string-interning".equals(s)) /* 387*/ return true; /* 389*/ if(features != null && features.containsKey(s)) /* 390*/ return ((Boolean)features.get(s)).booleanValue(); /* 392*/ else /* 392*/ throw new SAXNotRecognizedException(s); } public Object getProperty(String s) throws SAXNotRecognizedException { /* 404*/ if("http://xml.org/sax/properties/declaration-handler".equals(s)) /* 405*/ return declHandler; /* 407*/ if("http://xml.org/sax/properties/lexical-handler".equals(s)) /* 408*/ return lexicalHandler; /* 410*/ if(properties != null && properties.containsKey(s)) /* 411*/ return properties.get(s); /* 414*/ else /* 414*/ throw new SAXNotRecognizedException(s); } public void setFeature(String s, boolean flag) throws SAXNotRecognizedException, SAXNotSupportedException { /* 429*/ try { /* 429*/ boolean flag1 = getFeature(s); /* 431*/ if(flag == flag1) /* 432*/ return; /* 434*/ if("http://xml.org/sax/features/namespace-prefixes".equals(s)) { /* 436*/ xmlNames = flag; /* 437*/ return; } /* 440*/ if("http://xml.org/sax/features/namespaces".equals(s)) { /* 443*/ namespaces = flag; /* 444*/ return; } /* 450*/ if(features == null || !features.containsKey(s)) /* 451*/ throw new SAXNotSupportedException(s); } /* 455*/ catch(SAXNotRecognizedException saxnotrecognizedexception) { /* 455*/ if(features == null) /* 456*/ features = new Hashtable(5); } /* 460*/ features.put(s, flag ? ((Object) (Boolean.TRUE)) : ((Object) (Boolean.FALSE))); } public void setProperty(String s, Object obj) throws SAXNotRecognizedException, SAXNotSupportedException { /* 477*/ try { /* 477*/ Object obj1 = getProperty(s); /* 479*/ if("http://xml.org/sax/properties/declaration-handler".equals(s)) { /* 480*/ if(obj == null) { /* 481*/ declHandler = base; } else { /* 482*/ if(!(obj instanceof DeclHandler)) /* 483*/ throw new SAXNotSupportedException(s); /* 485*/ declHandler = (DeclHandler)obj; } /* 486*/ return; } /* 489*/ if("http://xml.org/sax/properties/lexical-handler".equals(s) || "http://xml.org/sax/handlers/LexicalHandler".equals(s)) { /* 492*/ if(obj == null) { /* 493*/ lexicalHandler = base; } else { /* 494*/ if(!(obj instanceof LexicalHandler)) /* 495*/ throw new SAXNotSupportedException(s); /* 497*/ lexicalHandler = (LexicalHandler)obj; } /* 498*/ return; } /* 502*/ if(properties == null || !properties.containsKey(s)) /* 503*/ throw new SAXNotSupportedException(s); } /* 507*/ catch(SAXNotRecognizedException saxnotrecognizedexception) { /* 507*/ if(properties == null) /* 508*/ properties = new Hashtable(5); } /* 512*/ properties.put(s, obj); } void startDocument() throws SAXException { /* 528*/ contentHandler.setDocumentLocator(this); /* 529*/ contentHandler.startDocument(); /* 530*/ attributeNames.removeAllElements(); /* 531*/ attributeValues.removeAllElements(); } void endDocument() throws SAXException { } Object resolveEntity(String s, String s1) throws SAXException, IOException { /* 543*/ InputSource inputsource = entityResolver.resolveEntity(s, s1); /* 546*/ if(inputsource == null) /* 547*/ return null; /* 548*/ if(inputsource.getCharacterStream() != null) /* 549*/ return inputsource.getCharacterStream(); /* 550*/ if(inputsource.getByteStream() != null) { /* 551*/ if(inputsource.getEncoding() == null) /* 552*/ return inputsource.getByteStream(); /* 554*/ try { /* 554*/ return new InputStreamReader(inputsource.getByteStream(), inputsource.getEncoding()); } /* 559*/ catch(IOException ioexception) { /* 559*/ return inputsource.getByteStream(); } } else { /* 562*/ String s2 = inputsource.getSystemId(); /* 563*/ return tryToExpand(s2); } } private String tryToExpand(String s) { /* 575*/ if(s == null) /* 576*/ s = ""; String s2; /* 579*/ try { /* 579*/ URL url = new URL(s); /* 580*/ return s; } /* 582*/ catch(MalformedURLException malformedurlexception) { /* 582*/ String s1 = System.getProperty("user.dir"); /* 583*/ if(s1.startsWith("/")) /* 584*/ s1 = "file://" + s1; /* 586*/ else /* 586*/ s1 = "file:///" + s1; /* 588*/ if(!s1.endsWith("/") && !s.startsWith("/")) /* 589*/ s1 = s1 + "/"; /* 591*/ s2 = s1 + s; } /* 593*/ try { /* 593*/ URL url1 = new URL(s2); /* 595*/ return s2; } /* 598*/ catch(MalformedURLException malformedurlexception1) { /* 598*/ return s; } } void startExternalEntity(String s) throws SAXException { /* 606*/ entityStack.push(s); } void endExternalEntity(String s) throws SAXException { /* 612*/ entityStack.pop(); } void doctypeDecl(String s, String s1, String s2) throws SAXException { /* 618*/ lexicalHandler.startDTD(s, s1, s2); } void endDoctype() throws SAXException { /* 635*/ deliverDTDEvents(); /* 636*/ lexicalHandler.endDTD(); } void attribute(String s, String s1, boolean flag) throws SAXException { /* 649*/ if(attributeCount++ == 0 && namespaces) /* 651*/ prefixStack.pushContext(); /* 657*/ if(s1 == null) /* 661*/ return; /* 664*/ if(namespaces && s.startsWith("xmlns")) { /* 665*/ if(s.length() == 5) { /* 666*/ prefixStack.declarePrefix("", s1); /* 668*/ contentHandler.startPrefixMapping("", s1); } else /* 670*/ if(s.charAt(5) == ':' && !s.equals("xmlns:xml")) { /* 672*/ if(s.length() == 6) { /* 673*/ errorHandler.error(new SAXParseException("Missing namespace prefix in namespace declaration: " + s, this)); /* 676*/ return; } /* 678*/ String s2 = s.substring(6); /* 679*/ if(s1.length() == 0) { /* 680*/ errorHandler.error(new SAXParseException("Missing URI in namespace declaration: " + s, this)); /* 683*/ return; } /* 685*/ prefixStack.declarePrefix(s2, s1); /* 687*/ contentHandler.startPrefixMapping(s2, s1); } /* 690*/ if(!xmlNames) /* 693*/ return; } /* 697*/ attributeNames.addElement(s); /* 698*/ attributeValues.addElement(s1); } void startElement(String s) throws SAXException { /* 704*/ ContentHandler contenthandler = contentHandler; /* 706*/ if(attributeCount == 0) /* 707*/ prefixStack.pushContext(); /* 710*/ elementName = s; /* 711*/ if(namespaces) { /* 714*/ if(attributeCount > 0) { /* 715*/ for(int i = 0; i < attributeNames.size(); i++) { /* 716*/ String s1 = (String)attributeNames.elementAt(i); /* 717*/ if(s1.indexOf(':') > 0) { /* 718*/ if(xmlNames && s1.startsWith("xmlns:")) { /* 719*/ attributeNamespaces.addElement(""); /* 720*/ attributeLocalNames.addElement(s1); } else /* 722*/ if(prefixStack.processName(s1, nsTemp, true) == null) { /* 723*/ errorHandler.error(new SAXParseException("undeclared name prefix in: " + s1, this)); /* 727*/ attributeNamespaces.addElement(""); /* 728*/ attributeLocalNames.addElement(s1.substring(s1.indexOf(':'))); } else { /* 730*/ attributeNamespaces.addElement(nsTemp[0]); /* 731*/ attributeLocalNames.addElement(nsTemp[1]); } } else { /* 734*/ attributeNamespaces.addElement(""); /* 735*/ attributeLocalNames.addElement(s1); } /* 738*/ for(int j = 0; j < i; j++) /* 739*/ if(attributeNamespaces.elementAt(i) == attributeNamespaces.elementAt(j) && attributeLocalNames.elementAt(i) == attributeLocalNames.elementAt(j)) /* 741*/ errorHandler.error(new SAXParseException("duplicate attribute name: " + attributeLocalNames.elementAt(j), this)); } } /* 749*/ if(prefixStack.processName(s, nsTemp, false) == null) { /* 750*/ errorHandler.error(new SAXParseException("undeclared name prefix in: " + s, this)); /* 753*/ nsTemp[0] = nsTemp[1] = ""; /* 755*/ s = s.substring(s.indexOf(':')); } /* 757*/ contenthandler.startElement(nsTemp[0], nsTemp[1], s, this); } else { /* 759*/ contenthandler.startElement("", "", s, this); } /* 763*/ if(attributeCount != 0) { /* 764*/ attributeNames.removeAllElements(); /* 765*/ attributeNamespaces.removeAllElements(); /* 766*/ attributeLocalNames.removeAllElements(); /* 767*/ attributeValues.removeAllElements(); /* 768*/ attributeCount = 0; } /* 770*/ nspending = false; } void endElement(String s) throws SAXException { /* 776*/ ContentHandler contenthandler = contentHandler; /* 778*/ if(!namespaces) { /* 779*/ contenthandler.endElement("", "", s); /* 780*/ return; } /* 784*/ if(prefixStack.processName(s, nsTemp, false) == null) { /* 786*/ errorHandler.error(new SAXParseException("undeclared name prefix in: " + s, this)); /* 788*/ nsTemp[0] = nsTemp[1] = ""; /* 789*/ s = s.substring(s.indexOf(':')); } /* 792*/ contenthandler.endElement(nsTemp[0], nsTemp[1], s); /* 799*/ for(Enumeration enumeration = prefixStack.getDeclaredPrefixes(); enumeration.hasMoreElements(); contenthandler.endPrefixMapping((String)enumeration.nextElement())); /* 803*/ prefixStack.popContext(); } void startCDATA() throws SAXException { /* 809*/ lexicalHandler.startCDATA(); } void charData(char ac[], int i, int j) throws SAXException { /* 815*/ contentHandler.characters(ac, i, j); } void endCDATA() throws SAXException { /* 821*/ lexicalHandler.endCDATA(); } void ignorableWhitespace(char ac[], int i, int j) throws SAXException { /* 827*/ contentHandler.ignorableWhitespace(ac, i, j); } void processingInstruction(String s, String s1) throws SAXException { /* 837*/ contentHandler.processingInstruction(s, s1); } void comment(char ac[], int i, int j) throws SAXException { /* 847*/ if(lexicalHandler != base) /* 848*/ lexicalHandler.comment(ac, i, j); } void error(String s, String s1, int i, int j) throws SAXException { /* 857*/ SAXParseException saxparseexception = new SAXParseException(s, null, s1, i, j); /* 858*/ errorHandler.fatalError(saxparseexception); /* 861*/ throw saxparseexception; } private void deliverDTDEvents() throws SAXException { /* 877*/ if(dtdHandler != base) { String s2; String s4; String s7; /* 878*/ for(Enumeration enumeration = parser.declaredNotations(); enumeration.hasMoreElements(); dtdHandler.notationDecl(s2, s4, s7)) { /* 881*/ s2 = (String)enumeration.nextElement(); /* 882*/ s4 = parser.getNotationPublicId(s2); /* 883*/ s7 = parser.getNotationSystemId(s2); } } /* 889*/ if(dtdHandler != base || declHandler != base) { /* 890*/ for(Enumeration enumeration1 = parser.declaredEntities(); enumeration1.hasMoreElements();) { /* 894*/ String s = (String)enumeration1.nextElement(); /* 895*/ int i = parser.getEntityType(s); /* 897*/ if(s.charAt(0) != '%') /* 901*/ if(i == 2) { /* 902*/ String s5 = parser.getEntityPublicId(s); /* 903*/ String s8 = parser.getEntitySystemId(s); /* 904*/ String s3 = parser.getEntityNotationName(s); /* 905*/ dtdHandler.unparsedEntityDecl(s, s5, s8, s3); } else /* 910*/ if(i == 3) { /* 911*/ String s6 = parser.getEntityPublicId(s); /* 912*/ String s9 = parser.getEntitySystemId(s); /* 913*/ declHandler.externalEntityDecl(s, s6, s9); } else /* 918*/ if(i == 1 && !"lt".equals(s) && !"gt".equals(s) && !"quot".equals(s) && !"apos".equals(s) && !"amp".equals(s)) /* 926*/ declHandler.internalEntityDecl(s, parser.getEntityValue(s)); } } /* 933*/ if(declHandler != base) { /* 934*/ for(Enumeration enumeration2 = parser.declaredElements(); enumeration2.hasMoreElements();) { /* 938*/ String s10 = null; /* 940*/ String s1 = (String)enumeration2.nextElement(); /* 941*/ switch(parser.getElementContentType(s1)) { /* 943*/ case 1: // '\001' /* 943*/ s10 = "ANY"; break; /* 946*/ case 2: // '\002' /* 946*/ s10 = "EMPTY"; break; /* 950*/ case 3: // '\003' /* 950*/ case 4: // '\004' /* 950*/ s10 = parser.getElementContentModel(s1); break; /* 954*/ case 0: // '\0' /* 954*/ default: /* 954*/ s10 = null; break; } /* 957*/ if(s10 != null) /* 958*/ declHandler.elementDecl(s1, s10); String s11; String s12; String s13; String s14; /* 960*/ for(Enumeration enumeration3 = parser.declaredAttributes(s1); enumeration3 != null && enumeration3.hasMoreElements(); declHandler.attributeDecl(s1, s11, s12, s13, s14)) { /* 962*/ s11 = (String)enumeration3.nextElement(); /* 967*/ switch(parser.getAttributeType(s1, s11)) { /* 969*/ case 1: // '\001' /* 969*/ s12 = "CDATA"; break; /* 972*/ case 5: // '\005' /* 972*/ s12 = "ENTITY"; break; /* 975*/ case 6: // '\006' /* 975*/ s12 = "ENTITIES"; break; /* 978*/ case 9: // '\t' /* 978*/ s12 = parser.getAttributeEnumeration(s1, s11); break; /* 981*/ case 2: // '\002' /* 981*/ s12 = "ID"; break; /* 984*/ case 3: // '\003' /* 984*/ s12 = "IDREF"; break; /* 987*/ case 4: // '\004' /* 987*/ s12 = "IDREFS"; break; /* 990*/ case 7: // '\007' /* 990*/ s12 = "NMTOKEN"; break; /* 993*/ case 8: // '\b' /* 993*/ s12 = "NMTOKENS"; break; /*1001*/ case 10: // '\n' /*1001*/ s12 = "NOTATION"; break; /*1005*/ default: /*1005*/ errorHandler.fatalError(new SAXParseException("internal error, att type", this)); /*1007*/ s12 = null; break; } /*1010*/ switch(parser.getAttributeDefaultValueType(s1, s11)) { /*1013*/ case 32: // ' ' /*1013*/ s13 = "#IMPLIED"; break; /*1016*/ case 33: // '!' /*1016*/ s13 = "#REQUIRED"; break; /*1019*/ case 34: // '"' /*1019*/ s13 = "#FIXED"; break; /*1022*/ case 31: // '\037' /*1022*/ s13 = null; break; /*1026*/ default: /*1026*/ errorHandler.fatalError(new SAXParseException("internal error, att default", this)); /*1028*/ s13 = null; break; } /*1031*/ s14 = parser.getAttributeDefaultValue(s1, s11); } } } } public int getLength() { /*1051*/ return attributeNames.size(); } public String getURI(int i) { /*1059*/ return (String)attributeNamespaces.elementAt(i); } public String getLocalName(int i) { /*1067*/ return (String)attributeLocalNames.elementAt(i); } public String getQName(int i) { /*1075*/ return (String)attributeNames.elementAt(i); } public String getName(int i) { /*1083*/ return (String)attributeNames.elementAt(i); } public String getType(int i) { /*1092*/ switch(parser.getAttributeType(elementName, getQName(i))) { /*1096*/ case 0: // '\0' /*1096*/ case 1: // '\001' /*1096*/ return "CDATA"; /*1098*/ case 2: // '\002' /*1098*/ return "ID"; /*1100*/ case 3: // '\003' /*1100*/ return "IDREF"; /*1102*/ case 4: // '\004' /*1102*/ return "IDREFS"; /*1104*/ case 5: // '\005' /*1104*/ return "ENTITY"; /*1106*/ case 6: // '\006' /*1106*/ return "ENTITIES"; /*1111*/ case 7: // '\007' /*1111*/ case 9: // '\t' /*1111*/ return "NMTOKEN"; /*1113*/ case 8: // '\b' /*1113*/ return "NMTOKENS"; /*1117*/ case 10: // '\n' /*1117*/ return "NOTATION"; } /*1121*/ return null; } public String getValue(int i) { /*1131*/ return (String)attributeValues.elementAt(i); } public int getIndex(String s, String s1) { /*1140*/ int i = getLength(); /*1142*/ for(int j = 0; j < i; j++) /*1143*/ if(getURI(j).equals(s) && getLocalName(j).equals(s1)) /*1146*/ return j; /*1148*/ return -1; } public int getIndex(String s) { /*1157*/ int i = getLength(); /*1159*/ for(int j = 0; j < i; j++) /*1160*/ if(getQName(j).equals(s)) /*1161*/ return j; /*1163*/ return -1; } public String getType(String s, String s1) { /*1172*/ int i = getIndex(s, s1); /*1174*/ if(i < 0) /*1175*/ return null; /*1176*/ else /*1176*/ return getType(i); } public String getType(String s) { /*1186*/ int i = getIndex(s); /*1188*/ if(i < 0) /*1189*/ return null; /*1190*/ else /*1190*/ return getType(i); } public String getValue(String s, String s1) { /*1199*/ int i = getIndex(s, s1); /*1201*/ if(i < 0) /*1202*/ return null; /*1203*/ else /*1203*/ return getValue(i); } public String getValue(String s) { /*1213*/ int i = getIndex(s); /*1215*/ if(i < 0) /*1216*/ return null; /*1217*/ else /*1217*/ return getValue(i); } public String getPublicId() { /*1230*/ return null; } public String getSystemId() { /*1238*/ return (String)entityStack.peek(); } public int getLineNumber() { /*1246*/ return parser.getLineNumber(); } public int getColumnNumber() { /*1254*/ return parser.getColumnNumber(); } }