org.apache.xerces.validators.dtd
Class DTDGrammar

java.lang.Object
  |
  +--org.apache.xerces.validators.common.Grammar
        |
        +--org.apache.xerces.validators.dtd.DTDGrammar
All Implemented Interfaces:
XMLContentSpec.Provider, XMLDTDScanner.EventHandler

public class DTDGrammar
extends Grammar
implements XMLDTDScanner.EventHandler

A DTD grammar. This class is an EventHandler to receive callbacks from the XMLDTDScanner. When the callbacks are received, the grammar structures are directly populated from the callback information.

In addition to being a recipient of scanner callbacks, the DTD grammar class can act as a pass-through filter for the DTD events. This is useful for parsers that must expose the DTD information to the application. (e.g. SAX2 DeclHandler callbacks.)

Version:
$Id: DTDGrammar.java 317378 2001-07-20 17:27:54Z lmartin $
Author:
Andy Clark

Fields inherited from class org.apache.xerces.validators.common.Grammar
TOP_LEVEL_SCOPE
 
Constructor Summary
DTDGrammar(StringPool stringPool)
          Default constructor.
 
Method Summary
 int addAttDef(QName elementDecl, QName attributeDecl, int attType, boolean attList, int enumeration, int attDefaultType, int attDefaultValue, boolean isExternal)
          Add an attribute definition
 int addContentSpecNode(int nodeType, int nodeValue)
          Create an XMLContentSpec for a single non-leaf
 int addContentSpecNode(int nodeType, int leftNodeIndex, int rightNodeIndex)
          Create an XMLContentSpec for a two child leaf
 int addElementDecl(QName elementDecl)
          Add an element declaration (forward reference)
 int addElementDecl(QName elementDecl, int contentSpecType, int contentSpec, boolean isExternal)
          Add an element declaration
 int addExternalEntityDecl(int name, int publicId, int systemId)
          Add a declaration for an entity
 int addExternalPEDecl(int name, int publicId, int systemId)
          Add a declaration for an external parameter entity
 int addInternalEntityDecl(int name, int value)
          Add a declaration for an internal entity
 int addInternalPEDecl(int name, int value)
          Add a declaration for an internal parameter entity
 void addNameToEnumeration(int enumIndex, int elementType, int attrName, int nameIndex, boolean isNotationType)
          Add a name to an enumeration
 int addNotationDecl(int notationName, int publicId, int systemId)
          Add a declaration for a notation
 int addUniqueLeafNode(int nameIndex)
          create an XMLContentSpec for a leaf
 int addUnparsedEntityDecl(int name, int publicId, int systemId, int notationName)
          Add a declaration for an unparsed entity
 void callComment(int data)
          Called when a comment has been scanned
 void callEndDTD()
          End of DTD.
 void callProcessingInstruction(int piTarget, int piData)
          Called when a processing instruction has been scanned
 void callStartDTD()
          Start of DTD.
 void callTextDecl(int version, int encoding)
          Signal the Text declaration of an external entity.
 void doctypeDecl(QName rootElement, int publicId, int systemId)
          Called when the doctype decl is scanned
 void endEntityDecl()
          End the scope of an entity declaration.
 void endEnumeration(int enumIndex)
          Finish processing an enumeration
 boolean getAttributeDeclIsExternal(int attributeDeclIndex)
           
 java.lang.String getContentSpecNodeAsString(int nodeIndex)
          Create a string representation of an XMLContentSpec tree
 int getElementDeclIndex(QName element, int scopeIndex)
          public int getElementDeclIndex(int localpartIndex, int scopeIndex) { //System.out.println("getElementDeclIndex: "+localpartIndex+", "+scopeIndex); return super.getElementDeclIndex(localpartIndex, scopeIndex); } public int getElementDeclIndex(int uriIndex, int localpartIndex, int scopeIndex) { //System.out.println("!!! getElementDeclIndex: "+uriIndex+", "+localpartIndex+", "+scopeIndex); return super.getElementDeclIndex(localpartIndex, -1); } /
 boolean getElementDeclIsExternal(int elementDeclIndex)
           
 boolean getRootElementQName(QName root)
           
 void internalSubset(int internalSubset)
          Supports DOM Level 2 internalSubset additions.
protected  boolean isDTD()
           
protected  void putElementNameMapping(QName name, int scope, int elementDeclIndex)
           
 void reset(StringPool stringPool)
          Resets the DTD grammar.
 void setElementDeclDTD(int elementDeclIndex, XMLElementDecl elementDecl)
           
 void setElementDeclIsExternal(int elementDeclIndex, boolean isExternal)
          public void setContentSpecLeaf(int contentSpecIndex, QName elementName) { fTempContentSpec.setValues(XMLContentSpec.CONTENTSPECNODE_LEAF, elementName.rawname, -1); super.setContentSpec(contentSpecIndex, fTempContentSpec); } /
 boolean startEntityDecl(boolean isPE, int entityName)
          Start the scope of an entity declaration.
 int startEnumeration()
          Called when the scanner start scanning an enumeration
 void startReadingFromExternalSubset(int publicId, int systemId)
          Called when the DTDScanner starts reading from the external subset
 void stopReadingFromExternalSubset()
          Called when the DTDScanner stop reading from the external subset
 
Methods inherited from class org.apache.xerces.validators.common.Grammar
clearContentModel, convertContentSpecTree, createAttributeDecl, createContentSpec, createElementDecl, existContentModel, getAttributeDecl, getContentModel, getContentSpec, getElementContentModel, getElementDecl, getElementDeclIndex, getElementDeclIndex, getFirstAttributeDeclIndex, getGrammarDocument, getNextAttributeDeclIndex, printAttributes, printElements, setAttributeDecl, setContentSpec, setElementDecl, setFirstAttributeDeclIndex, setGrammarDocument
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DTDGrammar

public DTDGrammar(StringPool stringPool)
Default constructor.
Method Detail

reset

public void reset(StringPool stringPool)
Resets the DTD grammar.

callStartDTD

public void callStartDTD()
                  throws java.lang.Exception
Start of DTD.
Specified by:
callStartDTD in interface XMLDTDScanner.EventHandler

callEndDTD

public void callEndDTD()
                throws java.lang.Exception
End of DTD.
Specified by:
callEndDTD in interface XMLDTDScanner.EventHandler

callTextDecl

public void callTextDecl(int version,
                         int encoding)
                  throws java.lang.Exception
Signal the Text declaration of an external entity.
Specified by:
callTextDecl in interface XMLDTDScanner.EventHandler
Parameters:
version - the handle in the string pool for the version number
encoding - the handle in the string pool for the encoding
Throws:
java.lang.Exception -  

doctypeDecl

public void doctypeDecl(QName rootElement,
                        int publicId,
                        int systemId)
                 throws java.lang.Exception
Called when the doctype decl is scanned
Specified by:
doctypeDecl in interface XMLDTDScanner.EventHandler
Parameters:
rootElementType - handle of the rootElement
publicId - StringPool handle of the public id
systemId - StringPool handle of the system id
Throws:
java.lang.Exception -  

startReadingFromExternalSubset

public void startReadingFromExternalSubset(int publicId,
                                           int systemId)
                                    throws java.lang.Exception
Called when the DTDScanner starts reading from the external subset
Specified by:
startReadingFromExternalSubset in interface XMLDTDScanner.EventHandler
Parameters:
publicId - StringPool handle of the public id
systemId - StringPool handle of the system id
Throws:
java.lang.Exception -  

stopReadingFromExternalSubset

public void stopReadingFromExternalSubset()
                                   throws java.lang.Exception
Called when the DTDScanner stop reading from the external subset
Specified by:
stopReadingFromExternalSubset in interface XMLDTDScanner.EventHandler
Throws:
java.lang.Exception -  

addElementDecl

public int addElementDecl(QName elementDecl)
                   throws java.lang.Exception
Add an element declaration (forward reference)
Specified by:
addElementDecl in interface XMLDTDScanner.EventHandler
Parameters:
handle - to the name of the element being declared
Returns:
handle to the element whose declaration was added
Throws:
java.lang.Exception -  

addElementDecl

public int addElementDecl(QName elementDecl,
                          int contentSpecType,
                          int contentSpec,
                          boolean isExternal)
                   throws java.lang.Exception
Add an element declaration
Specified by:
addElementDecl in interface XMLDTDScanner.EventHandler
Parameters:
handle - to the name of the element being declared
contentSpecType - handle to the type name of the content spec
ContentSpec - handle to the content spec node for the contentSpecType
Returns:
handle to the element declaration that was added
Throws:
java.lang.Exception -  

putElementNameMapping

protected void putElementNameMapping(QName name,
                                     int scope,
                                     int elementDeclIndex)
Overrides:
putElementNameMapping in class Grammar

getElementDeclIndex

public int getElementDeclIndex(QName element,
                               int scopeIndex)
public int getElementDeclIndex(int localpartIndex, int scopeIndex) { //System.out.println("getElementDeclIndex: "+localpartIndex+", "+scopeIndex); return super.getElementDeclIndex(localpartIndex, scopeIndex); } public int getElementDeclIndex(int uriIndex, int localpartIndex, int scopeIndex) { //System.out.println("!!! getElementDeclIndex: "+uriIndex+", "+localpartIndex+", "+scopeIndex); return super.getElementDeclIndex(localpartIndex, -1); } /
Overrides:
getElementDeclIndex in class Grammar

setElementDeclDTD

public void setElementDeclDTD(int elementDeclIndex,
                              XMLElementDecl elementDecl)

setElementDeclIsExternal

public void setElementDeclIsExternal(int elementDeclIndex,
                                     boolean isExternal)
public void setContentSpecLeaf(int contentSpecIndex, QName elementName) { fTempContentSpec.setValues(XMLContentSpec.CONTENTSPECNODE_LEAF, elementName.rawname, -1); super.setContentSpec(contentSpecIndex, fTempContentSpec); } /

getElementDeclIsExternal

public boolean getElementDeclIsExternal(int elementDeclIndex)

getAttributeDeclIsExternal

public boolean getAttributeDeclIsExternal(int attributeDeclIndex)

getRootElementQName

public boolean getRootElementQName(QName root)

addAttDef

public int addAttDef(QName elementDecl,
                     QName attributeDecl,
                     int attType,
                     boolean attList,
                     int enumeration,
                     int attDefaultType,
                     int attDefaultValue,
                     boolean isExternal)
              throws java.lang.Exception
Add an attribute definition
Specified by:
addAttDef in interface XMLDTDScanner.EventHandler
Parameters:
handle - to the element whose attribute is being declared
attName - StringPool handle to the attribute name being declared
attType - type of the attribute
enumeration - StringPool handle of the attribute's enumeration list (if any)
attDefaultType - an integer value denoting the DefaultDecl value
attDefaultValue - StringPool handle of this attribute's default value
Returns:
handle to the attribute definition
Throws:
java.lang.Exception -  

addUniqueLeafNode

public int addUniqueLeafNode(int nameIndex)
                      throws java.lang.Exception
create an XMLContentSpec for a leaf
Specified by:
addUniqueLeafNode in interface XMLDTDScanner.EventHandler
Parameters:
nameIndex - StringPool handle to the name (Element) for the node
Returns:
handle to the newly create XMLContentSpec
Throws:
java.lang.Exception -  

addContentSpecNode

public int addContentSpecNode(int nodeType,
                              int nodeValue)
                       throws java.lang.Exception
Create an XMLContentSpec for a single non-leaf
Specified by:
addContentSpecNode in interface XMLDTDScanner.EventHandler
Parameters:
nodeType - the type of XMLContentSpec to create - from XMLContentSpec.CONTENTSPECNODE_*
nodeValue - handle to an XMLContentSpec
Returns:
handle to the newly create XMLContentSpec
Throws:
java.lang.Exception -  

addContentSpecNode

public int addContentSpecNode(int nodeType,
                              int leftNodeIndex,
                              int rightNodeIndex)
                       throws java.lang.Exception
Create an XMLContentSpec for a two child leaf
Specified by:
addContentSpecNode in interface XMLDTDScanner.EventHandler
Parameters:
nodeType - the type of XMLContentSpec to create - from XMLContentSpec.CONTENTSPECNODE_*
leftNodeIndex - handle to an XMLContentSpec
rightNodeIndex - handle to an XMLContentSpec
Returns:
handle to the newly create XMLContentSpec
Throws:
java.lang.Exception -  

getContentSpecNodeAsString

public java.lang.String getContentSpecNodeAsString(int nodeIndex)
                                            throws java.lang.Exception
Create a string representation of an XMLContentSpec tree
Specified by:
getContentSpecNodeAsString in interface XMLDTDScanner.EventHandler
Parameters:
handle - to an XMLContentSpec
Returns:
String representation of the content spec tree
Throws:
java.lang.Exception -  

startEntityDecl

public boolean startEntityDecl(boolean isPE,
                               int entityName)
                        throws java.lang.Exception
Start the scope of an entity declaration.
Specified by:
startEntityDecl in interface XMLDTDScanner.EventHandler
Returns:
true on success; otherwise false if the entity declaration is recursive.
Throws:
java.lang.Exception -  

endEntityDecl

public void endEntityDecl()
                   throws java.lang.Exception
End the scope of an entity declaration.
Specified by:
endEntityDecl in interface XMLDTDScanner.EventHandler
Throws:
java.lang.Exception -  

addInternalPEDecl

public int addInternalPEDecl(int name,
                             int value)
                      throws java.lang.Exception
Add a declaration for an internal parameter entity
Specified by:
addInternalPEDecl in interface XMLDTDScanner.EventHandler
Parameters:
name - StringPool handle of the parameter entity name
value - StringPool handle of the parameter entity value
Returns:
handle to the parameter entity declaration
Throws:
java.lang.Exception -  

addExternalPEDecl

public int addExternalPEDecl(int name,
                             int publicId,
                             int systemId)
                      throws java.lang.Exception
Add a declaration for an external parameter entity
Specified by:
addExternalPEDecl in interface XMLDTDScanner.EventHandler
Parameters:
name - StringPool handle of the parameter entity name
publicId - StringPool handle of the publicId
systemId - StringPool handle of the systemId
Returns:
handle to the parameter entity declaration
Throws:
java.lang.Exception -  

addInternalEntityDecl

public int addInternalEntityDecl(int name,
                                 int value)
                          throws java.lang.Exception
Add a declaration for an internal entity
Specified by:
addInternalEntityDecl in interface XMLDTDScanner.EventHandler
Parameters:
name - StringPool handle of the entity name
value - StringPool handle of the entity value
Returns:
handle to the entity declaration
Throws:
java.lang.Exception -  

addExternalEntityDecl

public int addExternalEntityDecl(int name,
                                 int publicId,
                                 int systemId)
                          throws java.lang.Exception
Add a declaration for an entity
Specified by:
addExternalEntityDecl in interface XMLDTDScanner.EventHandler
Parameters:
name - StringPool handle of the entity name
publicId - StringPool handle of the publicId
systemId - StringPool handle of the systemId
Returns:
handle to the entity declaration
Throws:
java.lang.Exception -  

addUnparsedEntityDecl

public int addUnparsedEntityDecl(int name,
                                 int publicId,
                                 int systemId,
                                 int notationName)
                          throws java.lang.Exception
Add a declaration for an unparsed entity
Specified by:
addUnparsedEntityDecl in interface XMLDTDScanner.EventHandler
Parameters:
name - StringPool handle of the entity name
publicId - StringPool handle of the publicId
systemId - StringPool handle of the systemId
notationName - StringPool handle of the notationName
Returns:
handle to the entity declaration
Throws:
java.lang.Exception -  

startEnumeration

public int startEnumeration()
                     throws java.lang.Exception
Called when the scanner start scanning an enumeration
Specified by:
startEnumeration in interface XMLDTDScanner.EventHandler
Returns:
StringPool handle to a string list that will hold the enumeration names
Throws:
java.lang.Exception -  

addNameToEnumeration

public void addNameToEnumeration(int enumIndex,
                                 int elementType,
                                 int attrName,
                                 int nameIndex,
                                 boolean isNotationType)
                          throws java.lang.Exception
Add a name to an enumeration
Specified by:
addNameToEnumeration in interface XMLDTDScanner.EventHandler
Parameters:
enumIndex - StringPool handle to the string list for the enumeration
elementType - handle to the element that owns the attribute with the enumeration
attrName - StringPool handle to the name of the attribut with the enumeration
nameIndex - StringPool handle to the name to be added to the enumeration
isNotationType - true if the enumeration is an enumeration of NOTATION names
Throws:
java.lang.Exception -  

endEnumeration

public void endEnumeration(int enumIndex)
                    throws java.lang.Exception
Finish processing an enumeration
Specified by:
endEnumeration in interface XMLDTDScanner.EventHandler
Parameters:
enumIndex - handle to the string list which holds the enumeration to be finshed.
Throws:
java.lang.Exception -  

addNotationDecl

public int addNotationDecl(int notationName,
                           int publicId,
                           int systemId)
                    throws java.lang.Exception
Add a declaration for a notation
Specified by:
addNotationDecl in interface XMLDTDScanner.EventHandler
Parameters:
notationName -  
publicId -  
systemId -  
Returns:
handle to the notation declaration
Throws:
java.lang.Exception -  

callComment

public void callComment(int data)
                 throws java.lang.Exception
Called when a comment has been scanned
Specified by:
callComment in interface XMLDTDScanner.EventHandler
Parameters:
data - StringPool handle of the comment text
Throws:
java.lang.Exception -  

callProcessingInstruction

public void callProcessingInstruction(int piTarget,
                                      int piData)
                               throws java.lang.Exception
Called when a processing instruction has been scanned
Specified by:
callProcessingInstruction in interface XMLDTDScanner.EventHandler
Parameters:
piTarget - StringPool handle of the PI target
piData - StringPool handle of the PI data
Throws:
java.lang.Exception -  

internalSubset

public void internalSubset(int internalSubset)
                    throws java.lang.Exception
Supports DOM Level 2 internalSubset additions. Called when the internal subset is completely scanned.
Specified by:
internalSubset in interface XMLDTDScanner.EventHandler

isDTD

protected boolean isDTD()
Overrides:
isDTD in class Grammar


Copyright © 1999-2001 Apache XML Project. All Rights Reserved.