com.sun.msv.reader.dtd
Class DTDReader

java.lang.Object
  |
  +--com.sun.msv.reader.dtd.DTDReader
All Implemented Interfaces:
DTDEventListener, EventListener

public class DTDReader
extends Object
implements DTDEventListener

constructs RELAXModule object that exactly matches to the parsed DTD. Note that this class does NOT extend GrammarReader, because DTD is not written in XML format.

Author:
Kohsuke KAWAGUCHI

Field Summary
static String ERR_UNDECLARED_PREFIX
           
static String ERR_UNDEFINED_ELEMENT
           
static String WRN_ATTEMPT_TO_USE_NAMESPACE
           
 
Fields inherited from interface com.sun.msv.scanner.dtd.DTDEventListener
CHOICE, CONTENT_MODEL_ANY, CONTENT_MODEL_CHILDREN, CONTENT_MODEL_EMPTY, CONTENT_MODEL_MIXED, OCCURENCE_ONCE, OCCURENCE_ONE_OR_MORE, OCCURENCE_ZERO_OR_MORE, OCCURENCE_ZERO_OR_ONE, SEQUENCE, USE_FIXED, USE_IMPLIED, USE_NORMAL, USE_REQUIRED
 
Constructor Summary
DTDReader(GrammarReaderController controller, String targetNamespace, ExpressionPool pool)
           
 
Method Summary
 void attributeDecl(String elementName, String attributeName, String attributeType, String[] enums, short attributeUse, String defaultValue)
           
 void characters(char[] ch, int start, int length)
          Receive notification of character data.
 void childElement(String elementName, short occurence)
           
 void comment(String n)
          Receive notification that a comment has been read.
 void connector(short type)
           
 void endCDATA()
          Receive notification that the CDATA section finished.
 void endContentModel(String elementName, short type)
          receives notification that parsing of content model is finished.
 void endDTD()
          Receive notification of the end of a DTD.
 void endModelGroup(short occurence)
           
 void error(SAXParseException e)
           
 void externalGeneralEntityDecl(String n, String p, String s)
          Receive notification of an external parsed general entity declaration event.
 void externalParameterEntityDecl(String n, String p, String s)
          Receive notification of an external parameter entity declaration event.
 void fatalError(SAXParseException e)
           
 void ignorableWhitespace(char[] ch, int start, int length)
          Receive notification of ignorable whitespace in element content.
 void internalGeneralEntityDecl(String n, String v)
          Receive notification of a internal general entity declaration event.
 void internalParameterEntityDecl(String n, String v)
          Receive notification of a internal parameter entity declaration event.
 boolean isUnparsedEntity(String entityName)
           
 void mixedElement(String elementName)
          receives notification of child element of mixed content model.
 void notationDecl(String name, String publicId, String systemId)
          Receive notification of a Notation Declaration.
static TREXGrammar parse(InputSource source, GrammarReaderController controller)
           
static TREXGrammar parse(InputSource source, GrammarReaderController controller, String targetNamespace, ExpressionPool pool)
           
 void processingInstruction(String target, String data)
          Receive notification of a Processing Instruction.
 String resolveNamespacePrefix(String prefix)
           
 void setDocumentLocator(Locator loc)
           
 void startCDATA()
          Receive notification that a CDATA section is beginning.
 void startContentModel(String elementName, short type)
          receives notification that parsing of content model is beginning.
 void startDTD(InputEntity in)
          Receive notification of the beginning of the DTD.
 void startModelGroup()
           
 void unparsedEntityDecl(String name, String publicId, String systemId, String notationName)
          Receive notification of an unparsed entity declaration.
 void warning(SAXParseException e)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ERR_UNDEFINED_ELEMENT

public static final String ERR_UNDEFINED_ELEMENT

WRN_ATTEMPT_TO_USE_NAMESPACE

public static final String WRN_ATTEMPT_TO_USE_NAMESPACE

ERR_UNDECLARED_PREFIX

public static final String ERR_UNDECLARED_PREFIX
Constructor Detail

DTDReader

public DTDReader(GrammarReaderController controller,
                 String targetNamespace,
                 ExpressionPool pool)
Method Detail

parse

public static TREXGrammar parse(InputSource source,
                                GrammarReaderController controller)

parse

public static TREXGrammar parse(InputSource source,
                                GrammarReaderController controller,
                                String targetNamespace,
                                ExpressionPool pool)

setDocumentLocator

public void setDocumentLocator(Locator loc)
Specified by:
setDocumentLocator in interface DTDEventListener

startContentModel

public void startContentModel(String elementName,
                              short type)
Description copied from interface: DTDEventListener
receives notification that parsing of content model is beginning.
Specified by:
startContentModel in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
elementName - name of the element whose content model is going to be defined.
contentModelType - CONTENT_MODEL_EMPTY this element has EMPTY content model. This notification will be immediately followed by the corresponding endContentModel. CONTENT_MODEL_ANY this element has ANY content model. This notification will be immediately followed by the corresponding endContentModel. CONTENT_MODEL_MIXED this element has mixed content model. #PCDATA will not be reported. each child element will be reported by mixedElement method. CONTENT_MODEL_CHILDREN this elemen has child content model. The actual content model will be reported by childElement, startModelGroup, endModelGroup, and connector methods.

endContentModel

public void endContentModel(String elementName,
                            short type)
Description copied from interface: DTDEventListener
receives notification that parsing of content model is finished.
Specified by:
endContentModel in interface DTDEventListener

childElement

public void childElement(String elementName,
                         short occurence)
Specified by:
childElement in interface DTDEventListener

mixedElement

public void mixedElement(String elementName)
Description copied from interface: DTDEventListener
receives notification of child element of mixed content model. this method is called for each child element.
Specified by:
mixedElement in interface DTDEventListener

startModelGroup

public void startModelGroup()
Specified by:
startModelGroup in interface DTDEventListener

endModelGroup

public void endModelGroup(short occurence)
Specified by:
endModelGroup in interface DTDEventListener

connector

public void connector(short type)
               throws SAXException
Specified by:
connector in interface DTDEventListener

attributeDecl

public void attributeDecl(String elementName,
                          String attributeName,
                          String attributeType,
                          String[] enums,
                          short attributeUse,
                          String defaultValue)
                   throws SAXException
Specified by:
attributeDecl in interface DTDEventListener

endDTD

public void endDTD()
            throws SAXException
Description copied from interface: DTDEventListener
Receive notification of the end of a DTD. The parser will invoke this method only once.
Specified by:
endDTD in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Throws:
SAXException. -  
See Also:
DTDEventListener.startDTD(com.sun.msv.scanner.dtd.InputEntity)

fatalError

public void fatalError(SAXParseException e)
                throws SAXException
Specified by:
fatalError in interface DTDEventListener

error

public void error(SAXParseException e)
           throws SAXException
Specified by:
error in interface DTDEventListener

warning

public void warning(SAXParseException e)
             throws SAXException
Specified by:
warning in interface DTDEventListener

isUnparsedEntity

public boolean isUnparsedEntity(String entityName)

resolveNamespacePrefix

public String resolveNamespacePrefix(String prefix)

processingInstruction

public void processingInstruction(String target,
                                  String data)
                           throws SAXException
Description copied from interface: DTDEventListener
Receive notification of a Processing Instruction. Processing instructions contain information meaningful to the application.
Specified by:
processingInstruction in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
target - The target of the proceessing instruction which should have meaning to the application.
data - The instruction itself which should contain valid XML characters.
Throws:
SAXException -  

notationDecl

public void notationDecl(String name,
                         String publicId,
                         String systemId)
                  throws SAXException
Description copied from interface: DTDEventListener
Receive notification of a Notation Declaration. Notation declarations are used by elements and entities for identifying embedded non-XML data.
Specified by:
notationDecl in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
name - The notation name, referred to by entities and elements.
publicId - The public identifier
systemId - The system identifier

unparsedEntityDecl

public void unparsedEntityDecl(String name,
                               String publicId,
                               String systemId,
                               String notationName)
                        throws SAXException
Description copied from interface: DTDEventListener
Receive notification of an unparsed entity declaration. Unparsed entities are non-XML data.
Specified by:
unparsedEntityDecl in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
name - The name of the unparsed entity.
publicId - The public identifier
systemId - The system identifier
notationName - The associated notation

externalGeneralEntityDecl

public void externalGeneralEntityDecl(String n,
                                      String p,
                                      String s)
                               throws SAXException
Description copied from interface: DTDEventListener
Receive notification of an external parsed general entity declaration event.

If a system identifier is present, and it is a relative URL, the parser will have resolved it fully before passing it through this method to a listener.

Specified by:
externalGeneralEntityDecl in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
name - The entity name.
publicId - The entity's public identifier, or null if none was given.
systemId - The entity's system identifier.
Throws:
SAXException. -  
See Also:
DTDEventListener.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

internalGeneralEntityDecl

public void internalGeneralEntityDecl(String n,
                                      String v)
                               throws SAXException
Description copied from interface: DTDEventListener
Receive notification of a internal general entity declaration event.
Specified by:
internalGeneralEntityDecl in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
name - The internal general entity name.
value - The value of the entity, which may include unexpanded entity references. Character references will have been expanded.
Throws:
SAXException. -  
See Also:
DTDEventListener.externalGeneralEntityDecl(java.lang.String, java.lang.String, java.lang.String)

externalParameterEntityDecl

public void externalParameterEntityDecl(String n,
                                        String p,
                                        String s)
                                 throws SAXException
Description copied from interface: DTDEventListener
Receive notification of an external parameter entity declaration event.

If a system identifier is present, and it is a relative URL, the parser will have resolved it fully before passing it through this method to a listener.

Specified by:
externalParameterEntityDecl in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
name - The parameter entity name.
publicId - The entity's public identifier, or null if none was given.
systemId - The entity's system identifier.
Throws:
SAXException. -  
See Also:
DTDEventListener.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

internalParameterEntityDecl

public void internalParameterEntityDecl(String n,
                                        String v)
                                 throws SAXException
Description copied from interface: DTDEventListener
Receive notification of a internal parameter entity declaration event.
Specified by:
internalParameterEntityDecl in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
name - The internal parameter entity name.
value - The value of the entity, which may include unexpanded entity references. Character references will have been expanded.
Throws:
SAXException. -  
See Also:
DTDEventListener.externalParameterEntityDecl(java.lang.String, java.lang.String, java.lang.String)

startDTD

public void startDTD(InputEntity in)
              throws SAXException
Description copied from interface: DTDEventListener
Receive notification of the beginning of the DTD.
Specified by:
startDTD in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
in - Current input entity.
See Also:
DTDEventListener.endDTD()

comment

public void comment(String n)
             throws SAXException
Description copied from interface: DTDEventListener
Receive notification that a comment has been read.

Note that processing instructions are the mechanism designed to hold information for consumption by applications, not comments. XML systems may rely on applications being able to access information found in processing instructions; this is not true of comments, which are typically discarded.

Specified by:
comment in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
text - the text within the comment delimiters.
Throws:
SAXException -  

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws SAXException
Description copied from interface: DTDEventListener
Receive notification of character data.

The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

The application must not attempt to read from the array outside of the specified range.

Note that some parsers will report whitespace using the ignorableWhitespace() method rather than this one (validating parsers must do so).

Specified by:
characters in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
ch - The characters from the DTD.
start - The start position in the array.
length - The number of characters to read from the array.
Throws:
SAXException -  
See Also:
DTDEventListener.ignorableWhitespace(char[], int, int)

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
                         throws SAXException
Description copied from interface: DTDEventListener
Receive notification of ignorable whitespace in element content.

Validating Parsers must use this method to report each chunk of ignorable whitespace (see the W3C XML 1.0 recommendation, section 2.10): non-validating parsers may also use this method if they are capable of parsing and using content models.

SAX parsers may return all contiguous whitespace in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

The application must not attempt to read from the array outside of the specified range.

Specified by:
ignorableWhitespace in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Parameters:
ch - The characters from the DTD.
start - The start position in the array.
length - The number of characters to read from the array.
Throws:
SAXException -  
See Also:
DTDEventListener.characters(char[], int, int)

startCDATA

public void startCDATA()
                throws SAXException
Description copied from interface: DTDEventListener
Receive notification that a CDATA section is beginning. Data in a CDATA section is is reported through the appropriate event, either characters() or ignorableWhitespace.
Specified by:
startCDATA in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Throws:
SAXException -  
See Also:
DTDEventListener.endCDATA()

endCDATA

public void endCDATA()
              throws SAXException
Description copied from interface: DTDEventListener
Receive notification that the CDATA section finished.
Specified by:
endCDATA in interface DTDEventListener
Following copied from interface: com.sun.msv.scanner.dtd.DTDEventListener
Throws:
SAXException -  
See Also:
DTDEventListener.startCDATA()