FileDocCategorySizeDatePackage
XCatalogReader.javaAPI DocJava SE 6 API5890Tue Jun 10 00:23:00 BST 2008com.sun.org.apache.xml.internal.resolver.readers

XCatalogReader

public class XCatalogReader extends SAXCatalogReader implements SAXCatalogParser
Parse "xcatalog" XML Catalog files, this is the XML Catalog format developed by John Cowan and supported by Apache.
see
Catalog
author
Norman Walsh Norman.Walsh@Sun.COM
version
1.0

Fields Summary
protected com.sun.org.apache.xml.internal.resolver.Catalog
catalog
The catalog object needs to be stored by the object so that SAX callbacks can use it.
Constructors Summary
public XCatalogReader(SAXParserFactory parserFactory)
The constructor

    super(parserFactory);
  
Methods Summary
public voidcharacters(char[] ch, int start, int length)
The SAX characters method does nothing.

    return;
  
public voidendDocument()
The SAX endDocument method does nothing.

    return;
  
public voidendElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)
The SAX endElement method does nothing.

      return;
    
public com.sun.org.apache.xml.internal.resolver.CataloggetCatalog()
Get the current catalog.

    return catalog;
  
public voidignorableWhitespace(char[] ch, int start, int length)
The SAX ignorableWhitespace method does nothing.

    return;
  
public voidprocessingInstruction(java.lang.String target, java.lang.String data)
The SAX processingInstruction method does nothing.

    return;
  
public voidsetCatalog(com.sun.org.apache.xml.internal.resolver.Catalog catalog)
Set the current catalog.


       
       
    this.catalog = catalog;
  
public voidsetDocumentLocator(org.xml.sax.Locator locator)
The SAX setDocumentLocator method does nothing.

    return;
  
public voidstartDocument()
The SAX startDocument method does nothing.

    return;
  
public voidstartElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts)
The SAX startElement method recognizes elements from the plain catalog format and instantiates CatalogEntry objects for them.

param
namespaceURI The namespace name of the element.
param
localName The local name of the element.
param
qName The QName of the element.
param
atts The list of attributes on the element.
see
CatalogEntry


    int entryType = -1;
    Vector entryArgs = new Vector();

    if (localName.equals("Base")) {
      entryType = catalog.BASE;
      entryArgs.add(atts.getValue("HRef"));

      catalog.getCatalogManager().debug.message(4, "Base", atts.getValue("HRef"));
    } else if (localName.equals("Delegate")) {
      entryType = catalog.DELEGATE_PUBLIC;
      entryArgs.add(atts.getValue("PublicId"));
      entryArgs.add(atts.getValue("HRef"));

      catalog.getCatalogManager().debug.message(4, "Delegate",
		    PublicId.normalize(atts.getValue("PublicId")),
		    atts.getValue("HRef"));
    } else if (localName.equals("Extend")) {
      entryType = catalog.CATALOG;
      entryArgs.add(atts.getValue("HRef"));

      catalog.getCatalogManager().debug.message(4, "Extend", atts.getValue("HRef"));
    } else if (localName.equals("Map")) {
      entryType = catalog.PUBLIC;
      entryArgs.add(atts.getValue("PublicId"));
      entryArgs.add(atts.getValue("HRef"));

      catalog.getCatalogManager().debug.message(4, "Map",
		    PublicId.normalize(atts.getValue("PublicId")),
		    atts.getValue("HRef"));
    } else if (localName.equals("Remap")) {
      entryType = catalog.SYSTEM;
      entryArgs.add(atts.getValue("SystemId"));
      entryArgs.add(atts.getValue("HRef"));

      catalog.getCatalogManager().debug.message(4, "Remap",
		    atts.getValue("SystemId"),
		    atts.getValue("HRef"));
    } else if (localName.equals("XMLCatalog")) {
      // nop, start of catalog
    } else {
      // This is equivalent to an invalid catalog entry type
      catalog.getCatalogManager().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) {
	  catalog.getCatalogManager().debug.message(1, "Invalid catalog entry type", localName);
	} else if (cex.getExceptionType() == CatalogException.INVALID_ENTRY) {
	  catalog.getCatalogManager().debug.message(1, "Invalid catalog entry", localName);
	}
      }
    }