Package uk.ac.starlink.ttools.votlint
Class FudgeNamespaceContentHandler
java.lang.Object
uk.ac.starlink.ttools.votlint.FudgeNamespaceContentHandler
- All Implemented Interfaces:
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
ConstructorsConstructorDescriptionFudgeNamespaceContentHandler
(ContentHandler base, String tagName, String ns) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
characters
(char[] ch, int start, int length) void
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
void
startElement
(String uri, String localName, String qName, Attributes atts) void
startPrefixMapping
(String prefix, String uri) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.xml.sax.ContentHandler
declaration
-
Constructor Details
-
FudgeNamespaceContentHandler
Constructor.- Parameters:
base
- downstream SAX event sinktagName
- name of element within which namespace hacking should take placens
- namespace to insert
-
-
Method Details
-
setDocumentLocator
- Specified by:
setDocumentLocator
in interfaceContentHandler
-
startDocument
- Specified by:
startDocument
in interfaceContentHandler
- Throws:
SAXException
-
endDocument
- Specified by:
endDocument
in interfaceContentHandler
- Throws:
SAXException
-
startPrefixMapping
- Specified by:
startPrefixMapping
in interfaceContentHandler
- Throws:
SAXException
-
endPrefixMapping
- Specified by:
endPrefixMapping
in interfaceContentHandler
- Throws:
SAXException
-
startElement
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException - Specified by:
startElement
in interfaceContentHandler
- Throws:
SAXException
-
endElement
- Specified by:
endElement
in interfaceContentHandler
- Throws:
SAXException
-
characters
- Specified by:
characters
in interfaceContentHandler
- Throws:
SAXException
-
ignorableWhitespace
- Specified by:
ignorableWhitespace
in interfaceContentHandler
- Throws:
SAXException
-
processingInstruction
- Specified by:
processingInstruction
in interfaceContentHandler
- Throws:
SAXException
-
skippedEntity
- Specified by:
skippedEntity
in interfaceContentHandler
- Throws:
SAXException
-