Fields Summary |
---|
protected static final int | SCANNER_STATE_XML_DECLScanner state: XML declaration. |
protected static final int | SCANNER_STATE_PROLOGScanner state: prolog. |
protected static final int | SCANNER_STATE_TRAILING_MISCScanner state: trailing misc. |
protected static final int | SCANNER_STATE_DTD_INTERNAL_DECLSScanner state: DTD internal declarations. |
protected static final int | SCANNER_STATE_DTD_EXTERNALScanner state: open DTD external subset. |
protected static final int | SCANNER_STATE_DTD_EXTERNAL_DECLSScanner state: DTD external declarations. |
protected static final String | LOAD_EXTERNAL_DTDFeature identifier: load external DTD. |
protected static final String | DISALLOW_DOCTYPE_DECL_FEATUREFeature identifier: load external DTD. |
protected static final String | DTD_SCANNERProperty identifier: DTD scanner. |
protected static final String | VALIDATION_MANAGERproperty identifier: ValidationManager |
protected static final String | NAMESPACE_CONTEXTproperty identifier: NamespaceContext |
private static final String[] | RECOGNIZED_FEATURESRecognized features. |
private static final Boolean[] | FEATURE_DEFAULTSFeature defaults. |
private static final String[] | RECOGNIZED_PROPERTIESRecognized properties. |
private static final Object[] | PROPERTY_DEFAULTSProperty defaults. |
protected XMLDTDScanner | fDTDScannerDTD scanner. |
protected ValidationManager | fValidationManagerValidation manager . |
protected boolean | fScanningDTDScanning DTD. |
protected String | fDoctypeNameDoctype name. |
protected String | fDoctypePublicIdDoctype declaration public identifier. |
protected String | fDoctypeSystemIdDoctype declaration system identifier. |
protected NamespaceContext | fNamespaceContextNamespace support. |
protected boolean | fLoadExternalDTDLoad external DTD. |
protected boolean | fDisallowDoctypeDisallow doctype declaration. |
protected boolean | fSeenDoctypeDeclSeen doctype declaration. |
protected Dispatcher | fXMLDeclDispatcherXML declaration dispatcher. |
protected Dispatcher | fPrologDispatcherProlog dispatcher. |
protected Dispatcher | fDTDDispatcherDTD dispatcher. |
protected Dispatcher | fTrailingMiscDispatcherTrailing miscellaneous section dispatcher. |
private String[] | fStringsArray of 3 strings. |
private XMLString | fStringString. |
private XMLStringBuffer | fStringBufferString buffer. |
private XMLInputSource | fExternalSubsetSourceExternal subset source. |
Methods Summary |
---|
protected Dispatcher | createContentDispatcher()Creates a content dispatcher.
return new ContentDispatcher();
|
public void | endEntity(java.lang.String name, com.sun.org.apache.xerces.internal.xni.Augmentations augs)This method notifies the end of an entity. The DTD has the pseudo-name
of "[dtd]" parameter entity names start with '%'; and general entities
are just specified by their name.
super.endEntity(name, augs);
// call handler
if (fDocumentHandler != null && name.equals("[xml]")) {
fDocumentHandler.endDocument(null);
}
|
public java.lang.Boolean | getFeatureDefault(java.lang.String featureId)Returns the default state for a feature, or null if this
component does not want to report a default value for this
feature.
for (int i = 0; i < RECOGNIZED_FEATURES.length; i++) {
if (RECOGNIZED_FEATURES[i].equals(featureId)) {
return FEATURE_DEFAULTS[i];
}
}
return super.getFeatureDefault(featureId);
|
public java.lang.Object | getPropertyDefault(java.lang.String propertyId)Returns the default state for a property, or null if this
component does not want to report a default value for this
property.
for (int i = 0; i < RECOGNIZED_PROPERTIES.length; i++) {
if (RECOGNIZED_PROPERTIES[i].equals(propertyId)) {
return PROPERTY_DEFAULTS[i];
}
}
return super.getPropertyDefault(propertyId);
|
public java.lang.String[] | getRecognizedFeatures()Returns a list of feature identifiers that are recognized by
this component. This method may return null if no features
are recognized by this component.
String[] featureIds = super.getRecognizedFeatures();
int length = featureIds != null ? featureIds.length : 0;
String[] combinedFeatureIds = new String[length + RECOGNIZED_FEATURES.length];
if (featureIds != null) {
System.arraycopy(featureIds, 0, combinedFeatureIds, 0, featureIds.length);
}
System.arraycopy(RECOGNIZED_FEATURES, 0, combinedFeatureIds, length, RECOGNIZED_FEATURES.length);
return combinedFeatureIds;
|
public java.lang.String[] | getRecognizedProperties()Returns a list of property identifiers that are recognized by
this component. This method may return null if no properties
are recognized by this component.
String[] propertyIds = super.getRecognizedProperties();
int length = propertyIds != null ? propertyIds.length : 0;
String[] combinedPropertyIds = new String[length + RECOGNIZED_PROPERTIES.length];
if (propertyIds != null) {
System.arraycopy(propertyIds, 0, combinedPropertyIds, 0, propertyIds.length);
}
System.arraycopy(RECOGNIZED_PROPERTIES, 0, combinedPropertyIds, length, RECOGNIZED_PROPERTIES.length);
return combinedPropertyIds;
|
protected java.lang.String | getScannerStateName(int state)Returns the scanner state name.
switch (state) {
case SCANNER_STATE_XML_DECL: return "SCANNER_STATE_XML_DECL";
case SCANNER_STATE_PROLOG: return "SCANNER_STATE_PROLOG";
case SCANNER_STATE_TRAILING_MISC: return "SCANNER_STATE_TRAILING_MISC";
case SCANNER_STATE_DTD_INTERNAL_DECLS: return "SCANNER_STATE_DTD_INTERNAL_DECLS";
case SCANNER_STATE_DTD_EXTERNAL: return "SCANNER_STATE_DTD_EXTERNAL";
case SCANNER_STATE_DTD_EXTERNAL_DECLS: return "SCANNER_STATE_DTD_EXTERNAL_DECLS";
}
return super.getScannerStateName(state);
|
public void | reset(com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager componentManager)Resets the component. The component can query the component manager
about any features and properties that affect the operation of the
component.
super.reset(componentManager);
// other settings
fDoctypeName = null;
fDoctypePublicId = null;
fDoctypeSystemId = null;
fSeenDoctypeDecl = false;
fScanningDTD = false;
fExternalSubsetSource = null;
if (!fParserSettings) {
// parser settings have not been changed
fNamespaceContext.reset();
// setup dispatcher
setScannerState(SCANNER_STATE_XML_DECL);
setDispatcher(fXMLDeclDispatcher);
return;
}
// xerces features
try {
fLoadExternalDTD = componentManager.getFeature(LOAD_EXTERNAL_DTD);
}
catch (XMLConfigurationException e) {
fLoadExternalDTD = true;
}
try {
fDisallowDoctype = componentManager.getFeature(DISALLOW_DOCTYPE_DECL_FEATURE);
}
catch (XMLConfigurationException e) {
fDisallowDoctype = false;
}
// xerces properties
fDTDScanner = (XMLDTDScanner)componentManager.getProperty(DTD_SCANNER);
try {
fValidationManager = (ValidationManager)componentManager.getProperty(VALIDATION_MANAGER);
}
catch (XMLConfigurationException e) {
fValidationManager = null;
}
try {
fNamespaceContext = (NamespaceContext)componentManager.getProperty(NAMESPACE_CONTEXT);
}
catch (XMLConfigurationException e) { }
if (fNamespaceContext == null) {
fNamespaceContext = new NamespaceSupport();
}
fNamespaceContext.reset();
// setup dispatcher
setScannerState(SCANNER_STATE_XML_DECL);
setDispatcher(fXMLDeclDispatcher);
|
protected boolean | scanDoctypeDecl()Scans a doctype declaration.
// spaces
if (!fEntityScanner.skipSpaces()) {
reportFatalError("MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL",
null);
}
// root element name
fDoctypeName = fEntityScanner.scanName();
if (fDoctypeName == null) {
reportFatalError("MSG_ROOT_ELEMENT_TYPE_REQUIRED", null);
}
// external id
if (fEntityScanner.skipSpaces()) {
scanExternalID(fStrings, false);
fDoctypeSystemId = fStrings[0];
fDoctypePublicId = fStrings[1];
fEntityScanner.skipSpaces();
}
fHasExternalDTD = fDoctypeSystemId != null;
// Attempt to locate an external subset with an external subset resolver.
if (!fHasExternalDTD && fExternalSubsetResolver != null) {
XMLDTDDescription desc = new XMLDTDDescription(null,
null, fEntityManager.getCurrentResourceIdentifier().getExpandedSystemId(), null, fDoctypeName);
fExternalSubsetSource = fExternalSubsetResolver.getExternalSubset(desc);
fHasExternalDTD = fExternalSubsetSource != null;
}
// call handler
if (fDocumentHandler != null) {
// NOTE: I don't like calling the doctypeDecl callback until
// end of the *full* doctype line (including internal
// subset) is parsed correctly but SAX2 requires that
// it knows the root element name and public and system
// identifier for the startDTD call. -Ac
if (fExternalSubsetSource == null) {
fDocumentHandler.doctypeDecl(fDoctypeName, fDoctypePublicId, fDoctypeSystemId, null);
}
else {
fDocumentHandler.doctypeDecl(fDoctypeName, fExternalSubsetSource.getPublicId(), fExternalSubsetSource.getSystemId(), null);
}
}
// is there an internal subset?
boolean internalSubset = true;
if (!fEntityScanner.skipChar('[")) {
internalSubset = false;
fEntityScanner.skipSpaces();
if (!fEntityScanner.skipChar('>")) {
reportFatalError("DoctypedeclUnterminated", new Object[]{fDoctypeName});
}
fMarkupDepth--;
}
return internalSubset;
|
public void | setFeature(java.lang.String featureId, boolean state)Sets the state of a feature. This method is called by the component
manager any time after reset when a feature changes state.
Note: Components should silently ignore features
that do not affect the operation of the component.
super.setFeature(featureId, state);
// Xerces properties
if (featureId.startsWith(Constants.XERCES_FEATURE_PREFIX)) {
final int suffixLength = featureId.length() - Constants.XERCES_FEATURE_PREFIX.length();
if (suffixLength == Constants.LOAD_EXTERNAL_DTD_FEATURE.length() &&
featureId.endsWith(Constants.LOAD_EXTERNAL_DTD_FEATURE)) {
fLoadExternalDTD = state;
return;
}
else if (suffixLength == Constants.DISALLOW_DOCTYPE_DECL_FEATURE.length() &&
featureId.endsWith(Constants.DISALLOW_DOCTYPE_DECL_FEATURE)) {
fDisallowDoctype = state;
return;
}
}
|
public void | setInputSource(com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource inputSource)Sets the input source.
fEntityManager.setEntityHandler(this);
fEntityManager.startDocumentEntity(inputSource);
//fDocumentSystemId = fEntityManager.expandSystemId(inputSource.getSystemId());
|
public void | setProperty(java.lang.String propertyId, java.lang.Object value)Sets the value of a property. This method is called by the component
manager any time after reset when a property changes value.
Note: Components should silently ignore properties
that do not affect the operation of the component.
super.setProperty(propertyId, value);
// Xerces properties
if (propertyId.startsWith(Constants.XERCES_PROPERTY_PREFIX)) {
final int suffixLength = propertyId.length() - Constants.XERCES_PROPERTY_PREFIX.length();
if (suffixLength == Constants.DTD_SCANNER_PROPERTY.length() &&
propertyId.endsWith(Constants.DTD_SCANNER_PROPERTY)) {
fDTDScanner = (XMLDTDScanner)value;
}
if (suffixLength == Constants.NAMESPACE_CONTEXT_PROPERTY.length() &&
propertyId.endsWith(Constants.NAMESPACE_CONTEXT_PROPERTY)) {
if (value != null) {
fNamespaceContext = (NamespaceContext)value;
}
}
return;
}
|
public void | startEntity(java.lang.String name, com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier identifier, java.lang.String encoding, com.sun.org.apache.xerces.internal.xni.Augmentations augs)This method notifies of the start of an entity. The DTD has the
pseudo-name of "[dtd]" parameter entity names start with '%'; and
general entities are just specified by their name.
super.startEntity(name, identifier, encoding, augs);
// prepare to look for a TextDecl if external general entity
if (!name.equals("[xml]") && fEntityScanner.isExternal()) {
setScannerState(SCANNER_STATE_TEXT_DECL);
}
// call handler
if (fDocumentHandler != null && name.equals("[xml]")) {
fDocumentHandler.startDocument(fEntityScanner, encoding, fNamespaceContext, null);
}
|