# Class FudgeNamespaceContentHandler

java.lang.Object
uk.ac.starlink.ttools.votlint.FudgeNamespaceContentHandler

All Implemented Interfaces:
  `ContentHandler`

public class FudgeNamespaceContentHandler extends Object implements ContentHandler
This class provides a hack so that XSD validation can work even when the wrong namespace is declared in the source document. The point of this is that if the document has made a small namespacing error, schema validation by default will simply refuse to recognise any of the elements and provide no further validation reporting. This class hacks the SAX event stream to its downstream client so that if no namespace declaration has been received in the expected namespace, the default namespace is declared as the expected one. If the expected namespace is declared explicitly, this class makes no change to downstream SAX events.

This is not very respectable, but will have the desired effect for most VOTable documents (which do not in any case make much use of namespacing).

Since:
  22 Nov 2012
Author:
  Mark Taylor

## Constructor Summary

Constructors
Constructor
Description
`FudgeNamespaceContentHandler(ContentHandler base, String tagName, String ns)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`characters(char[] ch, int start, int length)`
`void`
`endDocument()`
`void`
`endElement(String uri, String localName, String qName)`
`void`
`endPrefixMapping(String prefix)`
`void`
`ignorableWhitespace(char[] ch, int start, int length)`
`void`
`processingInstruction(String target, String data)`
`void`
`setDocumentLocator(Locator locator)`
`void`
`skippedEntity(String name)`
`void`
`startDocument()`
`void`
`startElement(String uri, String localName, String qName, Attributes atts)`
`void`
`startPrefixMapping(String prefix, String uri)`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface ContentHandler

`declaration`

## Constructor Details

### FudgeNamespaceContentHandler

public FudgeNamespaceContentHandler(ContentHandler base, String tagName, String ns)
Constructor.

Parameters:
  `base` - downstream SAX event sink
  `tagName` - name of element within which namespace hacking should take place
  `ns` - namespace to insert

## Method Details

### setDocumentLocator

public void setDocumentLocator(Locator locator)

Specified by:
  `setDocumentLocator` in interface `ContentHandler`

### startDocument

public void startDocument() throws SAXException

Specified by:
  `startDocument` in interface `ContentHandler`
Throws:
  `SAXException`

### endDocument

public void endDocument() throws SAXException

Specified by:
  `endDocument` in interface `ContentHandler`
Throws:
  `SAXException`

### startPrefixMapping

public void startPrefixMapping(String prefix, String uri) throws SAXException

Specified by:
  `startPrefixMapping` in interface `ContentHandler`
Throws:
  `SAXException`

### endPrefixMapping

public void endPrefixMapping(String prefix) throws SAXException

Specified by:
  `endPrefixMapping` in interface `ContentHandler`
Throws:
  `SAXException`

### startElement

public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException

Specified by:
  `startElement` in interface `ContentHandler`
Throws:
  `SAXException`

### endElement

public void endElement(String uri, String localName, String qName) throws SAXException

Specified by:
  `endElement` in interface `ContentHandler`
Throws:
  `SAXException`

### characters

public void characters(char[] ch, int start, int length) throws SAXException

Specified by:
  `characters` in interface `ContentHandler`
Throws:
  `SAXException`

### ignorableWhitespace

public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException

Specified by:
  `ignorableWhitespace` in interface `ContentHandler`
Throws:
  `SAXException`

### processingInstruction

public void processingInstruction(String target, String data) throws SAXException

Specified by:
  `processingInstruction` in interface `ContentHandler`
Throws:
  `SAXException`

### skippedEntity

public void skippedEntity(String name) throws SAXException

Specified by:
  `skippedEntity` in interface `ContentHandler`
Throws:
  `SAXException`