Class FudgeNamespaceContentHandler

  • All Implemented Interfaces:
    org.xml.sax.ContentHandler

    public class FudgeNamespaceContentHandler
    extends java.lang.Object
    implements org.xml.sax.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​(org.xml.sax.ContentHandler base, java.lang.String tagName, java.lang.String ns)
      Constructor.
    • Constructor Detail

      • FudgeNamespaceContentHandler

        public FudgeNamespaceContentHandler​(org.xml.sax.ContentHandler base,
                                            java.lang.String tagName,
                                            java.lang.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 Detail

      • setDocumentLocator

        public void setDocumentLocator​(org.xml.sax.Locator locator)
        Specified by:
        setDocumentLocator in interface org.xml.sax.ContentHandler
      • startDocument

        public void startDocument()
                           throws org.xml.sax.SAXException
        Specified by:
        startDocument in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endDocument

        public void endDocument()
                         throws org.xml.sax.SAXException
        Specified by:
        endDocument in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • startPrefixMapping

        public void startPrefixMapping​(java.lang.String prefix,
                                       java.lang.String uri)
                                throws org.xml.sax.SAXException
        Specified by:
        startPrefixMapping in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endPrefixMapping

        public void endPrefixMapping​(java.lang.String prefix)
                              throws org.xml.sax.SAXException
        Specified by:
        endPrefixMapping in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • startElement

        public void startElement​(java.lang.String uri,
                                 java.lang.String localName,
                                 java.lang.String qName,
                                 org.xml.sax.Attributes atts)
                          throws org.xml.sax.SAXException
        Specified by:
        startElement in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • endElement

        public void endElement​(java.lang.String uri,
                               java.lang.String localName,
                               java.lang.String qName)
                        throws org.xml.sax.SAXException
        Specified by:
        endElement in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • characters

        public void characters​(char[] ch,
                               int start,
                               int length)
                        throws org.xml.sax.SAXException
        Specified by:
        characters in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • ignorableWhitespace

        public void ignorableWhitespace​(char[] ch,
                                        int start,
                                        int length)
                                 throws org.xml.sax.SAXException
        Specified by:
        ignorableWhitespace in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • processingInstruction

        public void processingInstruction​(java.lang.String target,
                                          java.lang.String data)
                                   throws org.xml.sax.SAXException
        Specified by:
        processingInstruction in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException
      • skippedEntity

        public void skippedEntity​(java.lang.String name)
                           throws org.xml.sax.SAXException
        Specified by:
        skippedEntity in interface org.xml.sax.ContentHandler
        Throws:
        org.xml.sax.SAXException