org.daisy.zedval.engine
Class XmlFile

java.lang.Object
  extended byjava.io.File
      extended byorg.daisy.zedval.engine.ZedFile
          extended byorg.daisy.zedval.engine.ManifestFile
              extended byorg.daisy.zedval.engine.XmlFile
All Implemented Interfaces:
java.lang.Comparable, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, org.xml.sax.ext.LexicalHandler, Referring, java.io.Serializable
Direct Known Subclasses:
NcxFile, PackageFile, ResourceFile, SmilFile, TextFile

public abstract class XmlFile
extends ManifestFile
implements org.xml.sax.ContentHandler, org.xml.sax.ErrorHandler, org.xml.sax.EntityResolver, org.xml.sax.ext.LexicalHandler, org.xml.sax.DTDHandler, Referring

An XmlFile object represents a single XML document file

This class includes default, do-nothing methods to implement the SAX ContentHandler interface (The appropriate ones will be overridden by the subclasses).

This class also implements the SAX EntityResolver interface as a way of substituting local DTDs for known, internet-based system identifiers. It uses the org.daisy.util.xml.catalog.CatalogEntityResolver for this purpose.

Each XMLfile is validated on parse; any validation errors are caught and stored in local hashsets for later retrieval by testprocessors.

Author:
James Pritchett, Markus Gylling
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.daisy.zedval.engine.ManifestFile
MIME_JPEG, MIME_MP3, MIME_NCX, MIME_PACKAGE, MIME_PNG, MIME_RESOURCE, MIME_SMIL, MIME_SVG, MIME_TEXT, MIME_WAV, MIME_AAC
 
Fields inherited from class java.io.File
pathSeparator, pathSeparatorChar, separator, separatorChar
 
Constructor Summary
XmlFile(java.lang.String fullPath, java.lang.String id, java.lang.String mimeType)
           
 
Method Summary
 void characters(char[] ch, int start, int length)
           
 void comment(char[] ch, int start, int length)
           
 void endCDATA()
           
 void endDocument()
           
 void endDTD()
           
 void endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)
           
 void endEntity(java.lang.String name)
           
 void endPrefixMapping(java.lang.String prefix)
           
 void error(org.xml.sax.SAXParseException e)
          Handles errors thrown by SAX parser (meaning document is not valid internally)
 void fatalError(org.xml.sax.SAXParseException e)
          Handles fatal errors thrown by SAX parser (meaning document is not well-formed)
 java.util.Collection getAllValidationErrors()
           
 java.lang.String getDoctypeName()
          Returns the name given in the DOCTYPE (if any)
 java.lang.String getDoctypePublicId()
          Returns the public id given in the DOCTYPE (if any)
 java.lang.String getDoctypeSystemId()
          Returns the system id given in the DOCTYPE (if any)
 java.lang.String getRootElementLocalName()
           
 java.lang.String getRootElementNsURI()
           
 java.util.Collection getValidationErrors()
           
 java.util.Collection getValidationFatalErrors()
           
 java.util.Collection getValidationWarnings()
           
 XmlFileElement getXmlFileElementById(java.lang.String idValue)
           
 java.util.Collection getXmlFileElements()
           
 boolean hasIDValue(java.lang.String idValue)
           
 void ignorableWhitespace(char[] ch, int start, int length)
           
 void initialize()
          Does all basic integrity tests
 boolean isParsed()
          Has this file been parsed?
 boolean isValid()
          Is this file valid to the DTD?
 boolean isValidated()
          Has this file been parsed with validation on?
 boolean isWellFormed()
          Is this file well-formed XML?
 void notationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
           
 void processingInstruction(java.lang.String target, java.lang.String data)
           
 org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId)
           
 void setDocumentLocator(org.xml.sax.Locator locator)
           
 void skippedEntity(java.lang.String name)
           
 void startCDATA()
           
 void startDocument()
           
 void startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
           
 void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts)
           
 void startEntity(java.lang.String name)
           
 void startPrefixMapping(java.lang.String prefix, java.lang.String uri)
           
 java.lang.String toString()
           
 void unparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)
           
 void warning(org.xml.sax.SAXParseException e)
          Handles warnings thrown by SAX parser
 
Methods inherited from class org.daisy.zedval.engine.ManifestFile
getId, getMimeType, getPackage, setID, setMimeType, setPackage
 
Methods inherited from class org.daisy.zedval.engine.ZedFile
getName
 
Methods inherited from class java.io.File
canRead, canWrite, compareTo, compareTo, createNewFile, createTempFile, createTempFile, delete, deleteOnExit, equals, exists, getAbsoluteFile, getAbsolutePath, getCanonicalFile, getCanonicalPath, getParent, getParentFile, getPath, hashCode, isAbsolute, isDirectory, isFile, isHidden, lastModified, length, list, list, listFiles, listFiles, listFiles, listRoots, mkdir, mkdirs, renameTo, setLastModified, setReadOnly, toURI, toURL
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.daisy.zedval.engine.Referring
getFileRefs
 

Constructor Detail

XmlFile

public XmlFile(java.lang.String fullPath,
               java.lang.String id,
               java.lang.String mimeType)
Parameters:
id - id from package file manifest
fullPath - File path
mimeType - File MIME type as given in package manifest
Method Detail

initialize

public void initialize()
                throws ZedFileInitializationException
Does all basic integrity tests

Throws:
ZedFileInitializationException

isWellFormed

public boolean isWellFormed()
Is this file well-formed XML?

Returns:
true if wellformed, false if malformed OR not yet parsed

isValid

public boolean isValid()
Is this file valid to the DTD?

Returns:
true if valid, false if invalid OR not yet parsed OR malformed

isParsed

public boolean isParsed()
Has this file been parsed?

Returns:
true if has been parsed, false otherwise

isValidated

public boolean isValidated()
Has this file been parsed with validation on?

Returns:
true if has been parsed with validation on, false otherwise

getValidationErrors

public java.util.Collection getValidationErrors()
Returns:
an empty or non-empty collection of SAXParseExceptions caught via the SAX Errhandler error method
See Also:
isValid()

getValidationFatalErrors

public java.util.Collection getValidationFatalErrors()
Returns:
an empty or non-empty collection of SAXParseExceptions caught via the SAX Errhandler fatalError method
See Also:
isWellFormed()

getValidationWarnings

public java.util.Collection getValidationWarnings()
Returns:
an empty or non-empty collection of SAXParseExceptions caught via the SAX Errhandler warning method

getAllValidationErrors

public java.util.Collection getAllValidationErrors()
Returns:
an empty or non-empty collection of SAXParseExceptions caught via the SAX Errhandler error, fatalError and warning methods

getDoctypeName

public java.lang.String getDoctypeName()
Returns the name given in the DOCTYPE (if any)

Returns:
DOCTYPE name string

getDoctypePublicId

public java.lang.String getDoctypePublicId()
Returns the public id given in the DOCTYPE (if any)

Returns:
DOCTYPE public id string

getDoctypeSystemId

public java.lang.String getDoctypeSystemId()
Returns the system id given in the DOCTYPE (if any)

Returns:
DOCTYPE system id string

characters

public void characters(char[] ch,
                       int start,
                       int length)
Specified by:
characters in interface org.xml.sax.ContentHandler

endDocument

public void endDocument()
Specified by:
endDocument in interface org.xml.sax.ContentHandler

endElement

public void endElement(java.lang.String namespaceURI,
                       java.lang.String localName,
                       java.lang.String qName)
Specified by:
endElement in interface org.xml.sax.ContentHandler

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)
Specified by:
endPrefixMapping in interface org.xml.sax.ContentHandler

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
Specified by:
ignorableWhitespace in interface org.xml.sax.ContentHandler

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.String data)
Specified by:
processingInstruction in interface org.xml.sax.ContentHandler

setDocumentLocator

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

skippedEntity

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

startDocument

public void startDocument()
Specified by:
startDocument in interface org.xml.sax.ContentHandler

startElement

public void startElement(java.lang.String namespaceURI,
                         java.lang.String localName,
                         java.lang.String qName,
                         org.xml.sax.Attributes atts)
Specified by:
startElement in interface org.xml.sax.ContentHandler

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.String uri)
Specified by:
startPrefixMapping in interface org.xml.sax.ContentHandler

startDTD

public void startDTD(java.lang.String name,
                     java.lang.String publicId,
                     java.lang.String systemId)
Specified by:
startDTD in interface org.xml.sax.ext.LexicalHandler

comment

public void comment(char[] ch,
                    int start,
                    int length)
Specified by:
comment in interface org.xml.sax.ext.LexicalHandler

endCDATA

public void endCDATA()
Specified by:
endCDATA in interface org.xml.sax.ext.LexicalHandler

endDTD

public void endDTD()
Specified by:
endDTD in interface org.xml.sax.ext.LexicalHandler

endEntity

public void endEntity(java.lang.String name)
Specified by:
endEntity in interface org.xml.sax.ext.LexicalHandler

startCDATA

public void startCDATA()
Specified by:
startCDATA in interface org.xml.sax.ext.LexicalHandler

startEntity

public void startEntity(java.lang.String name)
Specified by:
startEntity in interface org.xml.sax.ext.LexicalHandler

notationDecl

public void notationDecl(java.lang.String name,
                         java.lang.String publicId,
                         java.lang.String systemId)
                  throws org.xml.sax.SAXException
Specified by:
notationDecl in interface org.xml.sax.DTDHandler
Throws:
org.xml.sax.SAXException

unparsedEntityDecl

public void unparsedEntityDecl(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String systemId,
                               java.lang.String notationName)
                        throws org.xml.sax.SAXException
Specified by:
unparsedEntityDecl in interface org.xml.sax.DTDHandler
Throws:
org.xml.sax.SAXException

error

public void error(org.xml.sax.SAXParseException e)
Handles errors thrown by SAX parser (meaning document is not valid internally)

Specified by:
error in interface org.xml.sax.ErrorHandler
Parameters:
e - The SAX exception thrown

warning

public void warning(org.xml.sax.SAXParseException e)
Handles warnings thrown by SAX parser

Specified by:
warning in interface org.xml.sax.ErrorHandler
Parameters:
e - The SAX exception thrown

fatalError

public void fatalError(org.xml.sax.SAXParseException e)
Handles fatal errors thrown by SAX parser (meaning document is not well-formed)

Specified by:
fatalError in interface org.xml.sax.ErrorHandler
Parameters:
e - The SAX exception thrown

resolveEntity

public org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
                                             java.lang.String systemId)
Specified by:
resolveEntity in interface org.xml.sax.EntityResolver

toString

public java.lang.String toString()
Overrides:
toString in class ManifestFile

getRootElementLocalName

public java.lang.String getRootElementLocalName()
Returns:
Returns the root element localname, null if not set

getRootElementNsURI

public java.lang.String getRootElementNsURI()
Returns:
Returns the root element namespace uri, null if not set

hasIDValue

public boolean hasIDValue(java.lang.String idValue)
Parameters:
idValue - a string that may or may not be the value of an attribute named id in this XmlFile
Returns:
true if this XmlFile has the value on an attribute named id, false otherwise

getXmlFileElementById

public XmlFileElement getXmlFileElementById(java.lang.String idValue)
Parameters:
idValue - a string that may or may not be the value of an attribute named id in this XmlFile
Returns:
an XmlFileElement that matches the inparam id value, null if no match

getXmlFileElements

public java.util.Collection getXmlFileElements()
Returns:
a Collection<XmlFileElement> representing a serialized startelement stream of this XmlFile