com.sun.msv.scanner.dtd
Class InputEntity

java.lang.Object
  extended by com.sun.msv.scanner.dtd.InputEntity

public class InputEntity
extends java.lang.Object

This is how the parser talks to its input entities, of all kinds. The entities are in a stack.

For internal entities, the character arrays are referenced here, and read from as needed (they're read-only). External entities have mutable buffers, that are read into as needed.

Note: This maps CRLF (and CR) to LF without regard for whether it's in an external (parsed) entity or not. The XML 1.0 spec is inconsistent in explaining EOL handling; this is the sensible way.

Version:
1.4 00/08/05
Author:
David Brownell, Janet Koenig

Method Summary
 void close()
           
 char getc()
          gets the next Java character -- might be part of an XML text character represented by a surrogate pair, or be the end of the entity.
 int getColumnNumber()
          returns -1; maintaining column numbers hurts performance
 java.lang.String getEncoding()
          Returns the name of the encoding in use, else null; the name returned is in as standard a form as we can get.
static InputEntity getInputEntity(DTDEventListener h, java.util.Locale l)
           
 int getLineNumber()
          Returns the current line number in this input source
 java.lang.String getName()
           
 char getNameChar()
          returns the next name char, or NUL ...
 java.lang.String getPublicId()
          Returns the public ID of this input source, if known
 java.lang.String getSystemId()
          Returns the system ID of this input source, if known
 boolean ignorableWhitespace(DTDEventListener handler)
          whitespace in markup (flagged to app, discardable)
 void init(char[] b, java.lang.String name, InputEntity stack, boolean isPE)
           
 void init(org.xml.sax.InputSource in, java.lang.String name, InputEntity stack, boolean isPE)
           
 boolean isDocument()
           
 boolean isEOF()
          returns true iff there's no more data to consume ...
 boolean isInternal()
           
 boolean isParameterEntity()
           
 boolean maybeWhitespace()
          optional grammatical whitespace (discarded)
 boolean parsedContent(DTDEventListener docHandler)
          normal content; whitespace in markup may be handled specially if the parser uses the content model.
 boolean peek(java.lang.String next, char[] chars)
          returns false iff 'next' string isn't as provided, else skips that text and returns true.
 boolean peekc(char c)
          lookahead one character
 InputEntity pop()
           
 java.lang.String rememberText()
           
 void startRemembering()
           
 void ungetc()
          two character pushback is guaranteed
 boolean unparsedContent(DTDEventListener docHandler, boolean ignorableWhitespace, java.lang.String whitespaceInvalidMessage)
          CDATA -- character data, terminated by "]]>" and optionally including unescaped markup delimiters (ampersand and left angle bracket).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInputEntity

public static InputEntity getInputEntity(DTDEventListener h,
                                         java.util.Locale l)

isInternal

public boolean isInternal()

isDocument

public boolean isDocument()

isParameterEntity

public boolean isParameterEntity()

getName

public java.lang.String getName()

init

public void init(org.xml.sax.InputSource in,
                 java.lang.String name,
                 InputEntity stack,
                 boolean isPE)
          throws java.io.IOException,
                 org.xml.sax.SAXException
Throws:
java.io.IOException
org.xml.sax.SAXException

init

public void init(char[] b,
                 java.lang.String name,
                 InputEntity stack,
                 boolean isPE)
          throws org.xml.sax.SAXException
Throws:
org.xml.sax.SAXException

pop

public InputEntity pop()
                throws java.io.IOException
Throws:
java.io.IOException

isEOF

public boolean isEOF()
              throws java.io.IOException,
                     org.xml.sax.SAXException
returns true iff there's no more data to consume ...

Throws:
java.io.IOException
org.xml.sax.SAXException

getEncoding

public java.lang.String getEncoding()
Returns the name of the encoding in use, else null; the name returned is in as standard a form as we can get.


getNameChar

public char getNameChar()
                 throws java.io.IOException,
                        org.xml.sax.SAXException
returns the next name char, or NUL ... faster than getc(), and the common "name or nmtoken must be next" case won't need ungetc().

Throws:
java.io.IOException
org.xml.sax.SAXException

getc

public char getc()
          throws java.io.IOException,
                 org.xml.sax.SAXException
gets the next Java character -- might be part of an XML text character represented by a surrogate pair, or be the end of the entity.

Throws:
java.io.IOException
org.xml.sax.SAXException

peekc

public boolean peekc(char c)
              throws java.io.IOException,
                     org.xml.sax.SAXException
lookahead one character

Throws:
java.io.IOException
org.xml.sax.SAXException

ungetc

public void ungetc()
two character pushback is guaranteed


maybeWhitespace

public boolean maybeWhitespace()
                        throws java.io.IOException,
                               org.xml.sax.SAXException
optional grammatical whitespace (discarded)

Throws:
java.io.IOException
org.xml.sax.SAXException

parsedContent

public boolean parsedContent(DTDEventListener docHandler)
                      throws java.io.IOException,
                             org.xml.sax.SAXException
normal content; whitespace in markup may be handled specially if the parser uses the content model.

content terminates with markup delimiter characters, namely ampersand (&) and left angle bracket (<).

the document handler's characters() method is called on all the content found

Throws:
java.io.IOException
org.xml.sax.SAXException

unparsedContent

public boolean unparsedContent(DTDEventListener docHandler,
                               boolean ignorableWhitespace,
                               java.lang.String whitespaceInvalidMessage)
                        throws java.io.IOException,
                               org.xml.sax.SAXException
CDATA -- character data, terminated by "]]>" and optionally including unescaped markup delimiters (ampersand and left angle bracket). This should otherwise be exactly like character data, modulo differences in error report details.

The document handler's characters() or ignorableWhitespace() methods are invoked on all the character data found

Parameters:
docHandler - gets callbacks for character data
ignorableWhitespace - if true, whitespace characters will be reported using docHandler.ignorableWhitespace(); implicitly, non-whitespace characters will cause validation errors
whitespaceInvalidMessage - if true, ignorable whitespace causes a validity error report as well as a callback
Throws:
java.io.IOException
org.xml.sax.SAXException

ignorableWhitespace

public boolean ignorableWhitespace(DTDEventListener handler)
                            throws java.io.IOException,
                                   org.xml.sax.SAXException
whitespace in markup (flagged to app, discardable)

the document handler's ignorableWhitespace() method is called on all the whitespace found

Throws:
java.io.IOException
org.xml.sax.SAXException

peek

public boolean peek(java.lang.String next,
                    char[] chars)
             throws java.io.IOException,
                    org.xml.sax.SAXException
returns false iff 'next' string isn't as provided, else skips that text and returns true.

NOTE: two alternative string representations are both passed in, since one is faster.

Throws:
java.io.IOException
org.xml.sax.SAXException

startRemembering

public void startRemembering()

rememberText

public java.lang.String rememberText()

getPublicId

public java.lang.String getPublicId()
Returns the public ID of this input source, if known


getSystemId

public java.lang.String getSystemId()
Returns the system ID of this input source, if known


getLineNumber

public int getLineNumber()
Returns the current line number in this input source


getColumnNumber

public int getColumnNumber()
returns -1; maintaining column numbers hurts performance


close

public void close()