com.ctc.wstx.dtd
Class MinimalDTDReader

java.lang.Object
  extended by com.ctc.wstx.io.WstxInputData
      extended by com.ctc.wstx.sr.StreamScanner
          extended by com.ctc.wstx.dtd.MinimalDTDReader
All Implemented Interfaces:
InputConfigFlags, ParsingErrorMsgs, InputProblemReporter
Direct Known Subclasses:
FullDTDReader

public class MinimalDTDReader
extends StreamScanner

Minimal DTD reader implementation that only knows how to skip internal DTD subsets.


Field Summary
 
Fields inherited from class com.ctc.wstx.sr.StreamScanner
CHAR_CR_LF_OR_NULL, CHAR_FIRST_PURE_TEXT, CHAR_LOWEST_LEGAL_LOCALNAME_CHAR, INT_CR_LF_OR_NULL, mCfgNormalizeLFs, mCfgNsEnabled, mCfgReplaceEntities, mConfig, mCurrDepth, mCurrName, mDocXmlVersion, mInput, mInputTopDepth, mNameBuffer, mRootInput, mTokenInputCol, mTokenInputRow, mTokenInputTotal, SAX_COMPAT_MODE
 
Fields inherited from class com.ctc.wstx.io.WstxInputData
CHAR_NULL, CHAR_SPACE, INT_NULL, INT_SPACE, MAX_UNICODE_CHAR, mCurrInputProcessed, mCurrInputRow, mCurrInputRowStart, mInputBuffer, mInputLen, mInputPtr, mXml11
 
Fields inherited from interface com.ctc.wstx.cfg.InputConfigFlags
CFG_AUTO_CLOSE_INPUT, CFG_CACHE_DTDS, CFG_CACHE_DTDS_BY_PUBLIC_ID, CFG_COALESCE_TEXT, CFG_INTERN_NS_URIS, CFG_LAZY_PARSING, CFG_NAMESPACE_AWARE, CFG_NORMALIZE_ATTR_VALUES, CFG_NORMALIZE_LFS, CFG_PRESERVE_LOCATION, CFG_REPLACE_ENTITY_REFS, CFG_REPORT_CDATA, CFG_REPORT_PROLOG_WS, CFG_SUPPORT_DTD, CFG_SUPPORT_DTDPP, CFG_SUPPORT_EXTERNAL_ENTITIES, CFG_VALIDATE_AGAINST_DTD, CFG_VALIDATE_TEXT_CHARS, CFG_XMLID_TYPING, CFG_XMLID_UNIQ_CHECKS
 
Fields inherited from interface com.ctc.wstx.cfg.ParsingErrorMsgs
SUFFIX_EOF_EXP_NAME, SUFFIX_IN_ATTR_VALUE, SUFFIX_IN_CDATA, SUFFIX_IN_CLOSE_ELEMENT, SUFFIX_IN_COMMENT, SUFFIX_IN_DEF_ATTR_VALUE, SUFFIX_IN_DOC, SUFFIX_IN_DTD, SUFFIX_IN_DTD_EXTERNAL, SUFFIX_IN_DTD_INTERNAL, SUFFIX_IN_ELEMENT, SUFFIX_IN_ENTITY_REF, SUFFIX_IN_EPILOG, SUFFIX_IN_NAME, SUFFIX_IN_PROC_INSTR, SUFFIX_IN_PROLOG, SUFFIX_IN_TEXT, SUFFIX_IN_XML_DECL
 
Constructor Summary
protected MinimalDTDReader(WstxInputSource input, ReaderConfig cfg, boolean isExt)
          Common initialization part of int/ext subset constructors.
 
Method Summary
protected  char dtdNextChar()
           
protected  char dtdNextFromCurr()
           
 EntityDecl findEntity(java.lang.String entName)
          Method that may need to be called by attribute default value validation code, during parsing....
protected  EntityDecl findEntity(java.lang.String id, java.lang.Object arg)
          Abstract method for sub-classes to implement, for finding a declared general or parsed entity.
protected  java.lang.String getErrorMsg()
           
 javax.xml.stream.Location getLocation()
          What DTD reader returns doesn't really matter, so let's just return perceived start location (different from what stream readers actually do)
protected  char getNextSkippingPEs()
           
protected  char handleExpandedSurrogate(char first, char second)
          Method called when a character entity needs to expand to a pair of 16-bit surrogate characters.
protected  void handleIncompleteEntityProblem(WstxInputSource closing)
          Since improper entity/PE nesting is VC, not WFC, let's not react to this failure at all when only skipping the DTD subset.
protected  void handleUndeclaredEntity(java.lang.String id)
          This is a VC, not WFC, nothing to do when skipping through DTD in non-supporting mode.
protected  void skipComment()
           
protected  void skipCommentContent()
           
protected  void skipInternalSubset()
          Method that will skip through internal DTD subset, without doing any parsing, except for trying to match end of subset properly.
static void skipInternalSubset(WstxInputData srcData, WstxInputSource input, ReaderConfig cfg)
          Method that just skims through structure of internal subset, but without doing any sort of validation, or parsing of contents.
protected  void skipPI()
           
 
Methods inherited from class com.ctc.wstx.sr.StreamScanner
closeAllInput, constructFromIoe, constructNullCharException, constructWfcException, doReportProblem, ensureInput, expandBy50Pct, expandEntity, fullyResolveEntity, getCurrentInput, getCurrentLocation, getLastCharLocation, getNameBuffer, getNext, getNextAfterWS, getNextChar, getNextCharAfterWS, getNextCharFromCurrent, getNextInCurrAfterWS, getNextInCurrAfterWS, getSource, getStartLocation, getSystemId, initInputSource, inputInBuffer, loadMore, loadMore, loadMoreFromCurrent, loadMoreFromCurrent, markLF, markLF, parseEntityName, parseFNameForError, parseFullName, parseFullName, parseFullName2, parseLocalName, parseLocalName2, parsePublicId, parseSystemId, parseUntil, peekNext, pushback, reportProblem, reportProblem, reportProblem, reportProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, reportValidationProblem, resolveCharOnlyEntity, resolveNonCharEntity, resolveSimpleEntity, skipCRLF, skipFullName, throwFromIOE, throwFromStrE, throwIllegalCall, throwInvalidSpace, throwInvalidSpace, throwLazyError, throwNullChar, throwNullParent, throwParseError, throwParseError, throwParseError, throwUnexpectedChar, throwUnexpectedEOB, throwUnexpectedEOF, throwWfcException, tokenTypeDesc
 
Methods inherited from class com.ctc.wstx.io.WstxInputData
copyBufferStateFrom, findIllegalNameChar, findIllegalNmtokenChar, getCharDesc, isNameChar, isNameChar, isNameStartChar, isNameStartChar, isSpaceChar
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MinimalDTDReader

protected MinimalDTDReader(WstxInputSource input,
                           ReaderConfig cfg,
                           boolean isExt)
Common initialization part of int/ext subset constructors.

Method Detail

skipInternalSubset

public static void skipInternalSubset(WstxInputData srcData,
                                      WstxInputSource input,
                                      ReaderConfig cfg)
                               throws java.io.IOException,
                                      javax.xml.stream.XMLStreamException
Method that just skims through structure of internal subset, but without doing any sort of validation, or parsing of contents. Method may still throw an exception, if skipping causes EOF or there's an I/O problem.

Parameters:
srcData - Link back to the input buffer shared with the owning stream reader.
Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

getLocation

public final javax.xml.stream.Location getLocation()
What DTD reader returns doesn't really matter, so let's just return perceived start location (different from what stream readers actually do)

Specified by:
getLocation in interface InputProblemReporter
Specified by:
getLocation in class StreamScanner

findEntity

protected EntityDecl findEntity(java.lang.String id,
                                java.lang.Object arg)
Description copied from class: StreamScanner
Abstract method for sub-classes to implement, for finding a declared general or parsed entity.

Specified by:
findEntity in class StreamScanner
Parameters:
id - Identifier of the entity to find
arg - Optional argument passed from caller; needed by DTD reader.

handleUndeclaredEntity

protected void handleUndeclaredEntity(java.lang.String id)
                               throws javax.xml.stream.XMLStreamException
This is a VC, not WFC, nothing to do when skipping through DTD in non-supporting mode.

Specified by:
handleUndeclaredEntity in class StreamScanner
Throws:
javax.xml.stream.XMLStreamException

handleIncompleteEntityProblem

protected void handleIncompleteEntityProblem(WstxInputSource closing)
                                      throws javax.xml.stream.XMLStreamException
Since improper entity/PE nesting is VC, not WFC, let's not react to this failure at all when only skipping the DTD subset.

Specified by:
handleIncompleteEntityProblem in class StreamScanner
Throws:
javax.xml.stream.XMLStreamException

handleExpandedSurrogate

protected char handleExpandedSurrogate(char first,
                                       char second)
Description copied from class: StreamScanner
Method called when a character entity needs to expand to a pair of 16-bit surrogate characters. The exact mechanism to relay this information back is different for some use cases (specifically, when dealing with internal entity expansion).

Specified by:
handleExpandedSurrogate in class StreamScanner

findEntity

public EntityDecl findEntity(java.lang.String entName)
Method that may need to be called by attribute default value validation code, during parsing....

03-Dec-2004, TSa: This is not particularly elegant: should be able to pass the information some other way. But for now it works and is necessary.


skipInternalSubset

protected void skipInternalSubset()
                           throws java.io.IOException,
                                  javax.xml.stream.XMLStreamException
Method that will skip through internal DTD subset, without doing any parsing, except for trying to match end of subset properly.

Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

dtdNextFromCurr

protected char dtdNextFromCurr()
                        throws java.io.IOException,
                               javax.xml.stream.XMLStreamException
Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

dtdNextChar

protected char dtdNextChar()
                    throws java.io.IOException,
                           javax.xml.stream.XMLStreamException
Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

getNextSkippingPEs

protected char getNextSkippingPEs()
                           throws java.io.IOException,
                                  javax.xml.stream.XMLStreamException
Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

skipComment

protected void skipComment()
                    throws java.io.IOException,
                           javax.xml.stream.XMLStreamException
Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

skipCommentContent

protected void skipCommentContent()
                           throws java.io.IOException,
                                  javax.xml.stream.XMLStreamException
Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

skipPI

protected void skipPI()
               throws java.io.IOException,
                      javax.xml.stream.XMLStreamException
Throws:
java.io.IOException
javax.xml.stream.XMLStreamException

getErrorMsg

protected java.lang.String getErrorMsg()