oasisxmlcatalogreader.java

来自「JAVA 所有包」· Java 代码 · 共 539 行 · 第 1/2 页

JAVA
539
字号
	if (checkAttributes(atts, "uriSuffix", "uri")) {	  entryType = Catalog.URI_SUFFIX;	  entryArgs.add(atts.getValue("uriSuffix"));	  entryArgs.add(atts.getValue("uri"));	  debug.message(4, "uriSuffix",			atts.getValue("uriSuffix"),			atts.getValue("uri"));	}      } else if (localName.equals("nextCatalog")) {	if (checkAttributes(atts, "catalog")) {	  entryType = Catalog.CATALOG;	  entryArgs.add(atts.getValue("catalog"));	  debug.message(4, "nextCatalog", atts.getValue("catalog"));	}      } else if (localName.equals("public")) {	if (checkAttributes(atts, "publicId", "uri")) {	  entryType = Catalog.PUBLIC;	  entryArgs.add(atts.getValue("publicId"));	  entryArgs.add(atts.getValue("uri"));	  debug.message(4, "public",			PublicId.normalize(atts.getValue("publicId")),			atts.getValue("uri"));	}      } else if (localName.equals("system")) {	if (checkAttributes(atts, "systemId", "uri")) {	  entryType = Catalog.SYSTEM;	  entryArgs.add(atts.getValue("systemId"));	  entryArgs.add(atts.getValue("uri"));	  debug.message(4, "system",			atts.getValue("systemId"),			atts.getValue("uri"));	}      } else if (localName.equals("uri")) {	if (checkAttributes(atts, "name", "uri")) {	  entryType = Catalog.URI;	  entryArgs.add(atts.getValue("name"));	  entryArgs.add(atts.getValue("uri"));	  debug.message(4, "uri",			atts.getValue("name"),			atts.getValue("uri"));	}      } else if (localName.equals("catalog")) {	// nop, start of catalog      } else if (localName.equals("group")) {	// nop, a group      } else {	// This is equivalent to an invalid catalog entry type	debug.message(1, "Invalid catalog entry type", localName);      }      if (entryType >= 0) {	try {	  CatalogEntry ce = new CatalogEntry(entryType, entryArgs);	  catalog.addEntry(ce);	} catch (CatalogException cex) {	  if (cex.getExceptionType() == CatalogException.INVALID_ENTRY_TYPE) {	    debug.message(1, "Invalid catalog entry type", localName);	  } else if (cex.getExceptionType() == CatalogException.INVALID_ENTRY) {	    debug.message(1, "Invalid catalog entry", localName);	  }	}      }    }    if (namespaceURI != null && tr9401NamespaceName.equals(namespaceURI)	&& !inExtension) {      // This is a TR9401 Catalog entry      if (atts.getValue("xml:base") != null) {	String baseURI = atts.getValue("xml:base");	entryType = Catalog.BASE;	entryArgs.add(baseURI);	baseURIStack.push(baseURI);	debug.message(4, "xml:base", baseURI);	try {	  CatalogEntry ce = new CatalogEntry(entryType, entryArgs);	  catalog.addEntry(ce);	} catch (CatalogException cex) {	  if (cex.getExceptionType() == CatalogException.INVALID_ENTRY_TYPE) {	    debug.message(1, "Invalid catalog entry type", localName);	  } else if (cex.getExceptionType() == CatalogException.INVALID_ENTRY) {	    debug.message(1, "Invalid catalog entry (base)", localName);	  }	}	entryType = -1;	entryArgs = new Vector();      } else {	baseURIStack.push(baseURIStack.peek());      }      if (localName.equals("doctype")) {	entryType = catalog.DOCTYPE;	entryArgs.add(atts.getValue("name"));	entryArgs.add(atts.getValue("uri"));      } else if (localName.equals("document")) {	entryType = catalog.DOCUMENT;	entryArgs.add(atts.getValue("uri"));      } else if (localName.equals("dtddecl")) {	entryType = catalog.DTDDECL;	entryArgs.add(atts.getValue("publicId"));	entryArgs.add(atts.getValue("uri"));      } else if (localName.equals("entity")) {	entryType = Catalog.ENTITY;	entryArgs.add(atts.getValue("name"));	entryArgs.add(atts.getValue("uri"));      } else if (localName.equals("linktype")) {	entryType = Catalog.LINKTYPE;	entryArgs.add(atts.getValue("name"));	entryArgs.add(atts.getValue("uri"));      } else if (localName.equals("notation")) {	entryType = Catalog.NOTATION;	entryArgs.add(atts.getValue("name"));	entryArgs.add(atts.getValue("uri"));      } else if (localName.equals("sgmldecl")) {	entryType = Catalog.SGMLDECL;	entryArgs.add(atts.getValue("uri"));      } else {	// This is equivalent to an invalid catalog entry type	debug.message(1, "Invalid catalog entry type", localName);      }      if (entryType >= 0) {	try {	  CatalogEntry ce = new CatalogEntry(entryType, entryArgs);	  catalog.addEntry(ce);	} catch (CatalogException cex) {	  if (cex.getExceptionType() == CatalogException.INVALID_ENTRY_TYPE) {	    debug.message(1, "Invalid catalog entry type", localName);	  } else if (cex.getExceptionType() == CatalogException.INVALID_ENTRY) {	    debug.message(1, "Invalid catalog entry", localName);	  }	}      }    }  }  public boolean checkAttributes (Attributes atts, String attName) {    if (atts.getValue(attName) == null) {      debug.message(1, "Error: required attribute " + attName + " missing.");      return false;    } else {      return true;    }  }  public boolean checkAttributes (Attributes atts,				  String attName1,				  String attName2) {    return checkAttributes(atts, attName1)      && checkAttributes(atts, attName2);  }  /** The SAX <code>endElement</code> method does nothing. */  public void endElement (String namespaceURI,			  String localName,			  String qName)    throws SAXException {    int entryType = -1;    Vector entryArgs = new Vector();    boolean inExtension = inExtensionNamespace();    if (namespaceURI != null	&& !inExtension	&& (namespaceName.equals(namespaceURI)	    || tr9401NamespaceName.equals(namespaceURI))) {      String popURI = (String) baseURIStack.pop();      String baseURI = (String) baseURIStack.peek();      if (!baseURI.equals(popURI)) {	entryType = catalog.BASE;	entryArgs.add(baseURI);	debug.message(4, "(reset) xml:base", baseURI);	try {	  CatalogEntry ce = new CatalogEntry(entryType, entryArgs);	  catalog.addEntry(ce);	} catch (CatalogException cex) {	  if (cex.getExceptionType() == CatalogException.INVALID_ENTRY_TYPE) {	    debug.message(1, "Invalid catalog entry type", localName);	  } else if (cex.getExceptionType() == CatalogException.INVALID_ENTRY) {	    debug.message(1, "Invalid catalog entry (rbase)", localName);	  }	}      }    }    if (namespaceURI != null && namespaceName.equals(namespaceURI)	&& !inExtension) {      if (localName.equals("catalog") || localName.equals("group")) {	String popOverride = (String) overrideStack.pop();	String override = (String) overrideStack.peek();	if (!override.equals(popOverride)) {	  entryType = catalog.OVERRIDE;	  entryArgs.add(override);	  overrideStack.push(override);	  debug.message(4, "(reset) override", override);	  try {	    CatalogEntry ce = new CatalogEntry(entryType, entryArgs);	    catalog.addEntry(ce);	  } catch (CatalogException cex) {	    if (cex.getExceptionType() == CatalogException.INVALID_ENTRY_TYPE) {	      debug.message(1, "Invalid catalog entry type", localName);	    } else if (cex.getExceptionType() == CatalogException.INVALID_ENTRY) {	      debug.message(1, "Invalid catalog entry (roverride)", localName);	    }	  }	}      }    }    namespaceStack.pop();    return;  }  /** The SAX <code>characters</code> method does nothing. */  public void characters (char ch[], int start, int length)    throws SAXException {    return;  }  /** The SAX <code>ignorableWhitespace</code> method does nothing. */  public void ignorableWhitespace (char ch[], int start, int length)    throws SAXException {    return;  }  /** The SAX <code>processingInstruction</code> method does nothing. */  public void processingInstruction (String target, String data)    throws SAXException {    return;  }  /** The SAX <code>skippedEntity</code> method does nothing. */  public void skippedEntity (String name)    throws SAXException {    return;  }  /** The SAX <code>startPrefixMapping</code> method does nothing. */  public void startPrefixMapping(String prefix, String uri)    throws SAXException {    return;  }  /** The SAX <code>endPrefixMapping</code> method does nothing. */  public void endPrefixMapping(String prefix)    throws SAXException {    return;  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?