Methods Summary |
---|
public void | attributeDecl(java.lang.String elementName, java.lang.String attributeName, java.lang.String type, java.lang.String[] enumeration, java.lang.String defaultType, org.apache.xerces.xni.XMLString defaultValue, org.apache.xerces.xni.XMLString nonNormalizedDefaultValue, org.apache.xerces.xni.Augmentations augs)An attribute declaration.
try {
// SAX2 extension
if (fDeclHandler != null) {
// used as a key to detect duplicate attribute definitions.
String elemAttr = new StringBuffer(elementName).append("<").append(attributeName).toString();
if(fDeclaredAttrs.get(elemAttr) != null) {
// we aren't permitted to return duplicate attribute definitions
return;
}
fDeclaredAttrs.put(elemAttr, Boolean.TRUE);
if (type.equals("NOTATION") ||
type.equals("ENUMERATION")) {
StringBuffer str = new StringBuffer();
if (type.equals("NOTATION")) {
str.append(type);
str.append(" (");
}
else {
str.append("(");
}
for (int i = 0; i < enumeration.length; i++) {
str.append(enumeration[i]);
if (i < enumeration.length - 1) {
str.append('|");
}
}
str.append(')");
type = str.toString();
}
String value = (defaultValue==null) ? null : defaultValue.toString();
fDeclHandler.attributeDecl(elementName, attributeName,
type, defaultType, value);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | characters(org.apache.xerces.xni.XMLString text, org.apache.xerces.xni.Augmentations augs)Character content.
// if type is union (XML Schema) it is possible that we receive
// character call with empty data
if (text.length == 0) {
return;
}
try {
// SAX1
if (fDocumentHandler != null) {
// REVISIT: should we support schema-normalized-value for SAX1 events
//
fDocumentHandler.characters(text.ch, text.offset, text.length);
}
// SAX2
if (fContentHandler != null) {
fContentHandler.characters(text.ch, text.offset, text.length);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | comment(org.apache.xerces.xni.XMLString text, org.apache.xerces.xni.Augmentations augs)A comment.
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.comment(text.ch, 0, text.length);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | doctypeDecl(java.lang.String rootElement, java.lang.String publicId, java.lang.String systemId, org.apache.xerces.xni.Augmentations augs)Notifies of the presence of the DOCTYPE line in the document.
fInDTD = true;
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.startDTD(rootElement, publicId, systemId);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
// is there a DeclHandler?
if(fDeclHandler != null) {
fDeclaredAttrs = new SymbolHash();
}
|
public void | elementDecl(java.lang.String name, java.lang.String contentModel, org.apache.xerces.xni.Augmentations augs)An element declaration.
try {
// SAX2 extension
if (fDeclHandler != null) {
fDeclHandler.elementDecl(name, contentModel);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endCDATA(org.apache.xerces.xni.Augmentations augs)The end of a CDATA section.
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.endCDATA();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endDTD(org.apache.xerces.xni.Augmentations augs)The end of the DTD.
fInDTD = false;
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.endDTD();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
if(fDeclaredAttrs != null) {
// help out the GC
fDeclaredAttrs.clear();
}
|
public void | endDocument(org.apache.xerces.xni.Augmentations augs)The end of the document.
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.endDocument();
}
// SAX2
if (fContentHandler != null) {
fContentHandler.endDocument();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endElement(org.apache.xerces.xni.QName element, org.apache.xerces.xni.Augmentations augs)The end of an element.
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.endElement(element.rawname);
}
// SAX2
if (fContentHandler != null) {
fAugmentations = augs;
String uri = element.uri != null ? element.uri : "";
String localpart = fNamespaces ? element.localpart : "";
fContentHandler.endElement(uri, localpart,
element.rawname);
if (fNamespaces) {
endNamespaceMapping();
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endExternalSubset(org.apache.xerces.xni.Augmentations augs)The end of the DTD external subset.
endParameterEntity("[dtd]", augs);
|
public void | endGeneralEntity(java.lang.String name, org.apache.xerces.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 entity
names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the end of the document entity by calling the
endEntity method with the entity name "[xml]" after calling
the endDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report endEntity if this entity was actually read.
if (augs == null || !Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.endEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
protected final void | endNamespaceMapping()Send endPrefixMapping events
int count = fNamespaceContext.getDeclaredPrefixCount();
if (count > 0) {
for (int i = 0; i < count; i++) {
fContentHandler.endPrefixMapping(fNamespaceContext.getDeclaredPrefixAt(i));
}
}
|
public void | endParameterEntity(java.lang.String name, org.apache.xerces.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 entity
names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the end of the document entity by calling the
endEntity method with the entity name "[xml]" after calling
the endDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report endEntity if this entity was actually read.
if (augs == null || !Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// SAX2 extension
if (fLexicalHandler != null && fLexicalHandlerParameterEntities) {
fLexicalHandler.endEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | externalEntityDecl(java.lang.String name, org.apache.xerces.xni.XMLResourceIdentifier identifier, org.apache.xerces.xni.Augmentations augs)An external entity declaration.
try {
// SAX2 extension
if (fDeclHandler != null) {
String publicId = identifier.getPublicId();
String systemId = fResolveDTDURIs ?
identifier.getExpandedSystemId() : identifier.getLiteralSystemId();
fDeclHandler.externalEntityDecl(name, publicId, systemId);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public org.apache.xerces.xs.AttributePSVI | getAttributePSVI(int index)
return (AttributePSVI)fAttributesProxy.fAttributes.getAugmentations(index).getItem(Constants.ATTRIBUTE_PSVI);
|
public org.apache.xerces.xs.AttributePSVI | getAttributePSVIByName(java.lang.String uri, java.lang.String localname)
return (AttributePSVI)fAttributesProxy.fAttributes.getAugmentations(uri, localname).getItem(Constants.ATTRIBUTE_PSVI);
|
public org.xml.sax.ContentHandler | getContentHandler()Return the current content handler.
return fContentHandler;
|
public org.xml.sax.DTDHandler | getDTDHandler()Return the current DTD handler.
return fDTDHandler;
|
protected org.xml.sax.ext.DeclHandler | getDeclHandler()Returns the DTD declaration event handler.
return fDeclHandler;
|
public org.apache.xerces.xs.ElementPSVI | getElementPSVI()
return (fAugmentations != null)?(ElementPSVI)fAugmentations.getItem(Constants.ELEMENT_PSVI):null;
|
public org.xml.sax.EntityResolver | getEntityResolver()Return the current entity resolver.
EntityResolver entityResolver = null;
try {
XMLEntityResolver xmlEntityResolver =
(XMLEntityResolver)fConfiguration.getProperty(ENTITY_RESOLVER);
if (xmlEntityResolver != null) {
if (xmlEntityResolver instanceof EntityResolverWrapper) {
entityResolver =
((EntityResolverWrapper) xmlEntityResolver).getEntityResolver();
}
else if (xmlEntityResolver instanceof EntityResolver2Wrapper) {
entityResolver =
((EntityResolver2Wrapper) xmlEntityResolver).getEntityResolver();
}
}
}
catch (XMLConfigurationException e) {
// do nothing
}
return entityResolver;
|
public org.xml.sax.ErrorHandler | getErrorHandler()Return the current error handler.
ErrorHandler errorHandler = null;
try {
XMLErrorHandler xmlErrorHandler =
(XMLErrorHandler)fConfiguration.getProperty(ERROR_HANDLER);
if (xmlErrorHandler != null &&
xmlErrorHandler instanceof ErrorHandlerWrapper) {
errorHandler = ((ErrorHandlerWrapper)xmlErrorHandler).getErrorHandler();
}
}
catch (XMLConfigurationException e) {
// do nothing
}
return errorHandler;
|
public boolean | getFeature(java.lang.String featureId)Query the state of a feature.
Query the current state of any feature in a SAX2 parser. The
parser might not recognize the feature.
try {
//
// SAX2 Features
//
if (featureId.startsWith(Constants.SAX_FEATURE_PREFIX)) {
final int suffixLength = featureId.length() - Constants.SAX_FEATURE_PREFIX.length();
// http://xml.org/sax/features/namespace-prefixes
// controls the reporting of raw prefixed names and Namespace
// declarations (xmlns* attributes): when this feature is false
// (the default), raw prefixed names may optionally be reported,
// and xmlns* attributes must not be reported.
//
if (suffixLength == Constants.NAMESPACE_PREFIXES_FEATURE.length() &&
featureId.endsWith(Constants.NAMESPACE_PREFIXES_FEATURE)) {
return fNamespacePrefixes;
}
// http://xml.org/sax/features/string-interning
// controls the use of java.lang.String#intern() for strings
// passed to SAX handlers.
//
if (suffixLength == Constants.STRING_INTERNING_FEATURE.length() &&
featureId.endsWith(Constants.STRING_INTERNING_FEATURE)) {
return true;
}
// http://xml.org/sax/features/is-standalone
// reports whether the document specified a standalone document declaration.
//
if (suffixLength == Constants.IS_STANDALONE_FEATURE.length() &&
featureId.endsWith(Constants.IS_STANDALONE_FEATURE)) {
return fStandalone;
}
// http://xml.org/sax/features/xml-1.1
// reports whether the parser supports both XML 1.1 and XML 1.0.
//
if (suffixLength == Constants.XML_11_FEATURE.length() &&
featureId.endsWith(Constants.XML_11_FEATURE)) {
return (fConfiguration instanceof XML11Configurable);
}
// http://xml.org/sax/features/lexical-handler/parameter-entities
// controls whether the beginning and end of parameter entities
// will be reported to the LexicalHandler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE.length() &&
featureId.endsWith(Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE)) {
return fLexicalHandlerParameterEntities;
}
// http://xml.org/sax/features/resolve-dtd-uris
// controls whether system identifiers will be absolutized relative to
// their base URIs before reporting.
if (suffixLength == Constants.RESOLVE_DTD_URIS_FEATURE.length() &&
featureId.endsWith(Constants.RESOLVE_DTD_URIS_FEATURE)) {
return fResolveDTDURIs;
}
// http://xml.org/sax/features/xmlns-uris
// controls whether the parser reports that namespace declaration
// attributes as being in the namespace: http://www.w3.org/2000/xmlns/
//
if (suffixLength == Constants.XMLNS_URIS_FEATURE.length() &&
featureId.endsWith(Constants.XMLNS_URIS_FEATURE)) {
return fXMLNSURIs;
}
// http://xml.org/sax/features/unicode-normalization-checking
// controls whether Unicode normalization checking is performed
// as per Appendix B of the XML 1.1 specification
//
if (suffixLength == Constants.UNICODE_NORMALIZATION_CHECKING_FEATURE.length() &&
featureId.endsWith(Constants.UNICODE_NORMALIZATION_CHECKING_FEATURE)) {
// REVISIT: Allow this feature to be set once Unicode normalization
// checking is supported -- mrglavas.
return false;
}
// http://xml.org/sax/features/use-entity-resolver2
// controls whether the methods of an object implementing
// org.xml.sax.ext.EntityResolver2 will be used by the parser.
//
if (suffixLength == Constants.USE_ENTITY_RESOLVER2_FEATURE.length() &&
featureId.endsWith(Constants.USE_ENTITY_RESOLVER2_FEATURE)) {
return fUseEntityResolver2;
}
// http://xml.org/sax/features/use-attributes2
// reports whether Attributes objects passed to startElement also implement
// the org.xml.sax.ext.Attributes2 interface.
// http://xml.org/sax/features/use-locator2
// reports whether Locator objects passed to setDocumentLocator also implement
// the org.xml.sax.ext.Locator2 interface.
//
if ((suffixLength == Constants.USE_ATTRIBUTES2_FEATURE.length() &&
featureId.endsWith(Constants.USE_ATTRIBUTES2_FEATURE)) ||
(suffixLength == Constants.USE_LOCATOR2_FEATURE.length() &&
featureId.endsWith(Constants.USE_LOCATOR2_FEATURE))) {
return true;
}
//
// Drop through and perform default processing
//
}
//
// Xerces Features
//
/*
else if (featureId.startsWith(XERCES_FEATURES_PREFIX)) {
//
// Drop through and perform default processing
//
}
*/
return fConfiguration.getFeature(featureId);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-supported", new Object [] {identifier}));
}
}
|
protected org.xml.sax.ext.LexicalHandler | getLexicalHandler()Returns the lexical handler.
return fLexicalHandler;
|
public java.lang.Object | getProperty(java.lang.String propertyId)Query the value of a property.
Return the current value of a property in a SAX2 parser.
The parser might not recognize the property.
try {
//
// SAX2 core properties
//
if (propertyId.startsWith(Constants.SAX_PROPERTY_PREFIX)) {
final int suffixLength = propertyId.length() - Constants.SAX_PROPERTY_PREFIX.length();
//
// http://xml.org/sax/properties/document-xml-version
// Value type: java.lang.String
// Access: read-only
// The literal string describing the actual XML version of the document.
//
if (suffixLength == Constants.DOCUMENT_XML_VERSION_PROPERTY.length() &&
propertyId.endsWith(Constants.DOCUMENT_XML_VERSION_PROPERTY)) {
return fVersion;
}
//
// http://xml.org/sax/properties/lexical-handler
// Value type: org.xml.sax.ext.LexicalHandler
// Access: read/write, pre-parse only
// Set the lexical event handler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.LEXICAL_HANDLER_PROPERTY)) {
return getLexicalHandler();
}
//
// http://xml.org/sax/properties/declaration-handler
// Value type: org.xml.sax.ext.DeclHandler
// Access: read/write, pre-parse only
// Set the DTD declaration event handler.
//
if (suffixLength == Constants.DECLARATION_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.DECLARATION_HANDLER_PROPERTY)) {
return getDeclHandler();
}
//
// http://xml.org/sax/properties/dom-node
// Value type: DOM Node
// Access: read-only
// Get the DOM node currently being visited, if the SAX parser is
// iterating over a DOM tree. If the parser recognises and
// supports this property but is not currently visiting a DOM
// node, it should return null (this is a good way to check for
// availability before the parse begins).
//
if (suffixLength == Constants.DOM_NODE_PROPERTY.length() &&
propertyId.endsWith(Constants.DOM_NODE_PROPERTY)) {
// we are not iterating a DOM tree
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"dom-node-read-not-supported", null));
}
//
// Drop through and perform default processing
//
}
//
// Xerces properties
//
/*
else if (propertyId.startsWith(XERCES_PROPERTIES_PREFIX)) {
//
// Drop through and perform default processing
//
}
*/
//
// Perform default processing
//
return fConfiguration.getProperty(propertyId);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-supported", new Object [] {identifier}));
}
}
|
public void | ignorableWhitespace(org.apache.xerces.xni.XMLString text, org.apache.xerces.xni.Augmentations augs)Ignorable whitespace. For this method to be called, the document
source must have some way of determining that the text containing
only whitespace characters should be considered ignorable. For
example, the validator can determine if a length of whitespace
characters in the document are ignorable based on the element
content model.
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.ignorableWhitespace(text.ch, text.offset, text.length);
}
// SAX2
if (fContentHandler != null) {
fContentHandler.ignorableWhitespace(text.ch, text.offset, text.length);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | internalEntityDecl(java.lang.String name, org.apache.xerces.xni.XMLString text, org.apache.xerces.xni.XMLString nonNormalizedText, org.apache.xerces.xni.Augmentations augs)An internal entity declaration.
try {
// SAX2 extensions
if (fDeclHandler != null) {
fDeclHandler.internalEntityDecl(name, text.toString());
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | notationDecl(java.lang.String name, org.apache.xerces.xni.XMLResourceIdentifier identifier, org.apache.xerces.xni.Augmentations augs)A notation declaration
try {
// SAX1 and SAX2
if (fDTDHandler != null) {
String publicId = identifier.getPublicId();
String systemId = fResolveDTDURIs ?
identifier.getExpandedSystemId() : identifier.getLiteralSystemId();
fDTDHandler.notationDecl(name, publicId, systemId);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | parse(java.lang.String systemId)Parses the input source specified by the given system identifier.
This method is equivalent to the following:
parse(new InputSource(systemId));
// parse document
XMLInputSource source = new XMLInputSource(null, systemId, null);
try {
parse(source);
}
// wrap XNI exceptions as SAX exceptions
catch (XMLParseException e) {
Exception ex = e.getException();
if (ex == null || ex instanceof CharConversionException) {
// must be a parser exception; mine it for locator info
// and throw a SAXParseException
Locator2Impl locatorImpl = new Locator2Impl();
// since XMLParseExceptions know nothing about encoding,
// we cannot return anything meaningful in this context.
// We *could* consult the LocatorProxy, but the
// application can do this itself if it wishes to possibly
// be mislead.
locatorImpl.setXMLVersion(fVersion);
locatorImpl.setPublicId(e.getPublicId());
locatorImpl.setSystemId(e.getExpandedSystemId());
locatorImpl.setLineNumber(e.getLineNumber());
locatorImpl.setColumnNumber(e.getColumnNumber());
throw (ex == null) ?
new SAXParseException(e.getMessage(), locatorImpl) :
new SAXParseException(e.getMessage(), locatorImpl, ex);
}
if (ex instanceof SAXException) {
// why did we create an XMLParseException?
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
catch (XNIException e) {
Exception ex = e.getException();
if (ex == null) {
throw new SAXException(e.getMessage());
}
if (ex instanceof SAXException) {
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
|
public void | parse(org.xml.sax.InputSource inputSource)parse
// parse document
try {
XMLInputSource xmlInputSource =
new XMLInputSource(inputSource.getPublicId(),
inputSource.getSystemId(),
null);
xmlInputSource.setByteStream(inputSource.getByteStream());
xmlInputSource.setCharacterStream(inputSource.getCharacterStream());
xmlInputSource.setEncoding(inputSource.getEncoding());
parse(xmlInputSource);
}
// wrap XNI exceptions as SAX exceptions
catch (XMLParseException e) {
Exception ex = e.getException();
if (ex == null || ex instanceof CharConversionException) {
// must be a parser exception; mine it for locator info
// and throw a SAXParseException
Locator2Impl locatorImpl = new Locator2Impl();
// since XMLParseExceptions know nothing about encoding,
// we cannot return anything meaningful in this context.
// We *could* consult the LocatorProxy, but the
// application can do this itself if it wishes to possibly
// be mislead.
locatorImpl.setXMLVersion(fVersion);
locatorImpl.setPublicId(e.getPublicId());
locatorImpl.setSystemId(e.getExpandedSystemId());
locatorImpl.setLineNumber(e.getLineNumber());
locatorImpl.setColumnNumber(e.getColumnNumber());
throw (ex == null) ?
new SAXParseException(e.getMessage(), locatorImpl) :
new SAXParseException(e.getMessage(), locatorImpl, ex);
}
if (ex instanceof SAXException) {
// why did we create an XMLParseException?
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
catch (XNIException e) {
Exception ex = e.getException();
if (ex == null) {
throw new SAXException(e.getMessage());
}
if (ex instanceof SAXException) {
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
|
public void | processingInstruction(java.lang.String target, org.apache.xerces.xni.XMLString data, org.apache.xerces.xni.Augmentations augs)A processing instruction. Processing instructions consist of a
target name and, optionally, text data. The data is only meaningful
to the application.
Typically, a processing instruction's data will contain a series
of pseudo-attributes. These pseudo-attributes follow the form of
element attributes but are not parsed or presented
to the application as anything other than text. The application is
responsible for parsing the data.
//
// REVISIT - I keep running into SAX apps that expect
// null data to be an empty string, which is contrary
// to the comment for this method in the SAX API.
//
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.processingInstruction(target,
data.toString());
}
// SAX2
if (fContentHandler != null) {
fContentHandler.processingInstruction(target, data.toString());
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | reset()Reset all components before parsing.
super.reset();
// reset state
fInDTD = false;
fVersion = "1.0";
fStandalone = false;
// features
fNamespaces = fConfiguration.getFeature(NAMESPACES);
fAugmentations = null;
fDeclaredAttrs = null;
|
public void | setContentHandler(org.xml.sax.ContentHandler contentHandler)Allow an application to register a content event handler.
If the application does not register a content handler, all
content events reported by the SAX parser will be silently
ignored.
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
fContentHandler = contentHandler;
|
public void | setDTDHandler(org.xml.sax.DTDHandler dtdHandler)Allow an application to register a DTD event handler.
If the application does not register a DTD handler, all DTD
events reported by the SAX parser will be silently ignored.
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
fDTDHandler = dtdHandler;
|
protected void | setDeclHandler(org.xml.sax.ext.DeclHandler handler)Set the DTD declaration event handler.
This method is the equivalent to the property:
http://xml.org/sax/properties/declaration-handler
if (fParseInProgress) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-parsing-supported",
new Object [] {"http://xml.org/sax/properties/declaration-handler"}));
}
fDeclHandler = handler;
|
public void | setDocumentHandler(org.xml.sax.DocumentHandler documentHandler)Allow an application to register a document event handler.
If the application does not register a document handler, all
document events reported by the SAX parser will be silently
ignored (this is the default behaviour implemented by
HandlerBase).
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
fDocumentHandler = documentHandler;
|
public void | setEntityResolver(org.xml.sax.EntityResolver resolver)Sets the resolver used to resolve external entities. The EntityResolver
interface supports resolution of public and system identifiers.
try {
XMLEntityResolver xer = (XMLEntityResolver) fConfiguration.getProperty(ENTITY_RESOLVER);
if (fUseEntityResolver2 && resolver instanceof EntityResolver2) {
if (xer instanceof EntityResolver2Wrapper) {
EntityResolver2Wrapper er2w = (EntityResolver2Wrapper) xer;
er2w.setEntityResolver((EntityResolver2) resolver);
}
else {
fConfiguration.setProperty(ENTITY_RESOLVER,
new EntityResolver2Wrapper((EntityResolver2) resolver));
}
}
else {
if (xer instanceof EntityResolverWrapper) {
EntityResolverWrapper erw = (EntityResolverWrapper) xer;
erw.setEntityResolver(resolver);
}
else {
fConfiguration.setProperty(ENTITY_RESOLVER,
new EntityResolverWrapper(resolver));
}
}
}
catch (XMLConfigurationException e) {
// do nothing
}
|
public void | setErrorHandler(org.xml.sax.ErrorHandler errorHandler)Allow an application to register an error event handler.
If the application does not register an error handler, all
error events reported by the SAX parser will be silently
ignored; however, normal processing may not continue. It is
highly recommended that all SAX applications implement an
error handler to avoid unexpected bugs.
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
try {
XMLErrorHandler xeh = (XMLErrorHandler) fConfiguration.getProperty(ERROR_HANDLER);
if (xeh instanceof ErrorHandlerWrapper) {
ErrorHandlerWrapper ehw = (ErrorHandlerWrapper) xeh;
ehw.setErrorHandler(errorHandler);
}
else {
fConfiguration.setProperty(ERROR_HANDLER,
new ErrorHandlerWrapper(errorHandler));
}
}
catch (XMLConfigurationException e) {
// do nothing
}
|
public void | setFeature(java.lang.String featureId, boolean state)Set the state of any feature in a SAX2 parser. The parser
might not recognize the feature, and if it does recognize
it, it might not be able to fulfill the request.
try {
//
// SAX2 Features
//
if (featureId.startsWith(Constants.SAX_FEATURE_PREFIX)) {
final int suffixLength = featureId.length() - Constants.SAX_FEATURE_PREFIX.length();
// http://xml.org/sax/features/namespaces
if (suffixLength == Constants.NAMESPACES_FEATURE.length() &&
featureId.endsWith(Constants.NAMESPACES_FEATURE)) {
fConfiguration.setFeature(featureId, state);
fNamespaces = state;
return;
}
// http://xml.org/sax/features/namespace-prefixes
// controls the reporting of raw prefixed names and Namespace
// declarations (xmlns* attributes): when this feature is false
// (the default), raw prefixed names may optionally be reported,
// and xmlns* attributes must not be reported.
//
if (suffixLength == Constants.NAMESPACE_PREFIXES_FEATURE.length() &&
featureId.endsWith(Constants.NAMESPACE_PREFIXES_FEATURE)) {
fNamespacePrefixes = state;
return;
}
// http://xml.org/sax/features/string-interning
// controls the use of java.lang.String#intern() for strings
// passed to SAX handlers.
//
if (suffixLength == Constants.STRING_INTERNING_FEATURE.length() &&
featureId.endsWith(Constants.STRING_INTERNING_FEATURE)) {
if (!state) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"false-not-supported", new Object [] {featureId}));
}
return;
}
// http://xml.org/sax/features/lexical-handler/parameter-entities
// controls whether the beginning and end of parameter entities
// will be reported to the LexicalHandler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE.length() &&
featureId.endsWith(Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE)) {
fLexicalHandlerParameterEntities = state;
return;
}
// http://xml.org/sax/features/resolve-dtd-uris
// controls whether system identifiers will be absolutized relative to
// their base URIs before reporting.
//
if (suffixLength == Constants.RESOLVE_DTD_URIS_FEATURE.length() &&
featureId.endsWith(Constants.RESOLVE_DTD_URIS_FEATURE)) {
fResolveDTDURIs = state;
return;
}
// http://xml.org/sax/features/unicode-normalization-checking
// controls whether Unicode normalization checking is performed
// as per Appendix B of the XML 1.1 specification
//
if (suffixLength == Constants.UNICODE_NORMALIZATION_CHECKING_FEATURE.length() &&
featureId.endsWith(Constants.UNICODE_NORMALIZATION_CHECKING_FEATURE)) {
// REVISIT: Allow this feature to be set once Unicode normalization
// checking is supported -- mrglavas.
if (state) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"true-not-supported", new Object [] {featureId}));
}
return;
}
// http://xml.org/sax/features/xmlns-uris
// controls whether the parser reports that namespace declaration
// attributes as being in the namespace: http://www.w3.org/2000/xmlns/
//
if (suffixLength == Constants.XMLNS_URIS_FEATURE.length() &&
featureId.endsWith(Constants.XMLNS_URIS_FEATURE)) {
fXMLNSURIs = state;
return;
}
// http://xml.org/sax/features/use-entity-resolver2
// controls whether the methods of an object implementing
// org.xml.sax.ext.EntityResolver2 will be used by the parser.
//
if (suffixLength == Constants.USE_ENTITY_RESOLVER2_FEATURE.length() &&
featureId.endsWith(Constants.USE_ENTITY_RESOLVER2_FEATURE)) {
if (state != fUseEntityResolver2) {
fUseEntityResolver2 = state;
// Refresh EntityResolver wrapper.
setEntityResolver(getEntityResolver());
}
return;
}
//
// Read only features.
//
// http://xml.org/sax/features/is-standalone
// reports whether the document specified a standalone document declaration.
// http://xml.org/sax/features/use-attributes2
// reports whether Attributes objects passed to startElement also implement
// the org.xml.sax.ext.Attributes2 interface.
// http://xml.org/sax/features/use-locator2
// reports whether Locator objects passed to setDocumentLocator also implement
// the org.xml.sax.ext.Locator2 interface.
// http://xml.org/sax/features/xml-1.1
// reports whether the parser supports both XML 1.1 and XML 1.0.
if ((suffixLength == Constants.IS_STANDALONE_FEATURE.length() &&
featureId.endsWith(Constants.IS_STANDALONE_FEATURE)) ||
(suffixLength == Constants.USE_ATTRIBUTES2_FEATURE.length() &&
featureId.endsWith(Constants.USE_ATTRIBUTES2_FEATURE)) ||
(suffixLength == Constants.USE_LOCATOR2_FEATURE.length() &&
featureId.endsWith(Constants.USE_LOCATOR2_FEATURE)) ||
(suffixLength == Constants.XML_11_FEATURE.length() &&
featureId.endsWith(Constants.XML_11_FEATURE))) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-read-only", new Object [] {featureId}));
}
//
// Drop through and perform default processing
//
}
//
// Xerces Features
//
/*
else if (featureId.startsWith(XERCES_FEATURES_PREFIX)) {
String feature = featureId.substring(XERCES_FEATURES_PREFIX.length());
//
// Drop through and perform default processing
//
}
*/
//
// Default handling
//
fConfiguration.setFeature(featureId, state);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-supported", new Object [] {identifier}));
}
}
|
protected void | setLexicalHandler(org.xml.sax.ext.LexicalHandler handler)Set the lexical event handler.
This method is the equivalent to the property:
http://xml.org/sax/properties/lexical-handler
if (fParseInProgress) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-parsing-supported",
new Object [] {"http://xml.org/sax/properties/lexical-handler"}));
}
fLexicalHandler = handler;
|
public void | setLocale(java.util.Locale locale)Set the locale to use for messages.
//REVISIT:this methods is not part of SAX2 interfaces, we should throw exception
//if any application uses SAX2 and sets locale also. -nb
fConfiguration.setLocale(locale);
|
public void | setProperty(java.lang.String propertyId, java.lang.Object value)Set the value of any property in a SAX2 parser. The parser
might not recognize the property, and if it does recognize
it, it might not support the requested value.
try {
//
// SAX2 core properties
//
if (propertyId.startsWith(Constants.SAX_PROPERTY_PREFIX)) {
final int suffixLength = propertyId.length() - Constants.SAX_PROPERTY_PREFIX.length();
//
// http://xml.org/sax/properties/lexical-handler
// Value type: org.xml.sax.ext.LexicalHandler
// Access: read/write, pre-parse only
// Set the lexical event handler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.LEXICAL_HANDLER_PROPERTY)) {
try {
setLexicalHandler((LexicalHandler)value);
}
catch (ClassCastException e) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"incompatible-class", new Object [] {propertyId, "org.xml.sax.ext.LexicalHandler"}));
}
return;
}
//
// http://xml.org/sax/properties/declaration-handler
// Value type: org.xml.sax.ext.DeclHandler
// Access: read/write, pre-parse only
// Set the DTD declaration event handler.
//
if (suffixLength == Constants.DECLARATION_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.DECLARATION_HANDLER_PROPERTY)) {
try {
setDeclHandler((DeclHandler)value);
}
catch (ClassCastException e) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"incompatible-class", new Object [] {propertyId, "org.xml.sax.ext.DeclHandler"}));
}
return;
}
//
// http://xml.org/sax/properties/dom-node
// Value type: DOM Node
// Access: read-only
// Get the DOM node currently being visited, if the SAX parser is
// iterating over a DOM tree. If the parser recognises and
// supports this property but is not currently visiting a DOM
// node, it should return null (this is a good way to check for
// availability before the parse begins).
// http://xml.org/sax/properties/document-xml-version
// Value type: java.lang.String
// Access: read-only
// The literal string describing the actual XML version of the document.
//
if ((suffixLength == Constants.DOM_NODE_PROPERTY.length() &&
propertyId.endsWith(Constants.DOM_NODE_PROPERTY)) ||
(suffixLength == Constants.DOCUMENT_XML_VERSION_PROPERTY.length() &&
propertyId.endsWith(Constants.DOCUMENT_XML_VERSION_PROPERTY))) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-read-only", new Object [] {propertyId}));
}
//
// Drop through and perform default processing
//
}
//
// Xerces Properties
//
/*
else if (propertyId.startsWith(XERCES_PROPERTIES_PREFIX)) {
//
// Drop through and perform default processing
//
}
*/
//
// Perform default processing
//
fConfiguration.setProperty(propertyId, value);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-supported", new Object [] {identifier}));
}
}
|
public void | startCDATA(org.apache.xerces.xni.Augmentations augs)The start of a CDATA section.
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.startCDATA();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | startDocument(org.apache.xerces.xni.XMLLocator locator, java.lang.String encoding, org.apache.xerces.xni.NamespaceContext namespaceContext, org.apache.xerces.xni.Augmentations augs)The start of the document.
fNamespaceContext = namespaceContext;
try {
// SAX1
if (fDocumentHandler != null) {
if (locator != null) {
fDocumentHandler.setDocumentLocator(new LocatorProxy(locator));
}
fDocumentHandler.startDocument();
}
// SAX2
if (fContentHandler != null) {
if (locator != null) {
fContentHandler.setDocumentLocator(new LocatorProxy(locator));
}
fContentHandler.startDocument();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | startElement(org.apache.xerces.xni.QName element, org.apache.xerces.xni.XMLAttributes attributes, org.apache.xerces.xni.Augmentations augs)The start of an element. If the document specifies the start element
by using an empty tag, then the startElement method will immediately
be followed by the endElement method, with no intervening methods.
try {
// SAX1
if (fDocumentHandler != null) {
// REVISIT: should we support schema-normalized-value for SAX1 events
//
fAttributesProxy.setAttributes(attributes);
fDocumentHandler.startElement(element.rawname, fAttributesProxy);
}
// SAX2
if (fContentHandler != null) {
if (fNamespaces) {
// send prefix mapping events
startNamespaceMapping();
// REVISIT: It should not be necessary to iterate over the attribute
// list when the set of [namespace attributes] is empty for this
// element. This should be computable from the NamespaceContext, but
// since we currently don't report the mappings for the xml prefix
// we cannot use the declared prefix count for the current context
// to skip this section. -- mrglavas
int len = attributes.getLength();
if (!fNamespacePrefixes) {
for (int i = len - 1; i >= 0; --i) {
attributes.getName(i, fQName);
if ((fQName.prefix == XMLSymbols.PREFIX_XMLNS) ||
(fQName.rawname == XMLSymbols.PREFIX_XMLNS)) {
// remove namespace declaration attributes
attributes.removeAttributeAt(i);
}
}
}
else if (!fXMLNSURIs) {
for (int i = len - 1; i >= 0; --i) {
attributes.getName(i, fQName);
if ((fQName.prefix == XMLSymbols.PREFIX_XMLNS) ||
(fQName.rawname == XMLSymbols.PREFIX_XMLNS)) {
// localpart should be empty string as per SAX documentation:
// http://www.saxproject.org/?selected=namespaces
fQName.prefix = "";
fQName.uri = "";
fQName.localpart = "";
attributes.setName(i, fQName);
}
}
}
}
fAugmentations = augs;
String uri = element.uri != null ? element.uri : "";
String localpart = fNamespaces ? element.localpart : "";
fAttributesProxy.setAttributes(attributes);
fContentHandler.startElement(uri, localpart, element.rawname,
fAttributesProxy);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | startExternalSubset(org.apache.xerces.xni.XMLResourceIdentifier identifier, org.apache.xerces.xni.Augmentations augs)The start of the DTD external subset.
startParameterEntity("[dtd]", null, null, augs);
|
public void | startGeneralEntity(java.lang.String name, org.apache.xerces.xni.XMLResourceIdentifier identifier, java.lang.String encoding, org.apache.xerces.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 entity names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the start of the document entity by calling the
startEntity method with the entity name "[xml]" before calling
the startDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report startEntity if this entity was actually read.
if (augs != null && Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// report skipped entity to content handler
if (fContentHandler != null) {
fContentHandler.skippedEntity(name);
}
}
else {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.startEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
protected final void | startNamespaceMapping()Send startPrefixMapping events
int count = fNamespaceContext.getDeclaredPrefixCount();
if (count > 0) {
String prefix = null;
String uri = null;
for (int i = 0; i < count; i++) {
prefix = fNamespaceContext.getDeclaredPrefixAt(i);
uri = fNamespaceContext.getURI(prefix);
fContentHandler.startPrefixMapping(prefix,
(uri == null) ? "" : uri);
}
}
|
public void | startParameterEntity(java.lang.String name, org.apache.xerces.xni.XMLResourceIdentifier identifier, java.lang.String encoding, org.apache.xerces.xni.Augmentations augs)This method notifies of the start of parameter entity. The DTD has the
pseudo-name of "[dtd]" parameter entity names start with '%'; and
general entity names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the start of the document entity by calling the
startEntity method with the entity name "[xml]" before calling
the startDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report startEntity if this entity was actually read.
if (augs != null && Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// report skipped entity to content handler
if (fContentHandler != null) {
fContentHandler.skippedEntity(name);
}
}
else {
// SAX2 extension
if (fLexicalHandler != null && fLexicalHandlerParameterEntities) {
fLexicalHandler.startEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | unparsedEntityDecl(java.lang.String name, org.apache.xerces.xni.XMLResourceIdentifier identifier, java.lang.String notation, org.apache.xerces.xni.Augmentations augs)An unparsed entity declaration.
try {
// SAX2 extension
if (fDTDHandler != null) {
String publicId = identifier.getPublicId();
String systemId = fResolveDTDURIs ?
identifier.getExpandedSystemId() : identifier.getLiteralSystemId();
fDTDHandler.unparsedEntityDecl(name, publicId, systemId, notation);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | xmlDecl(java.lang.String version, java.lang.String encoding, java.lang.String standalone, org.apache.xerces.xni.Augmentations augs)Notifies of the presence of an XMLDecl line in the document. If
present, this method will be called immediately following the
startDocument call.
// the version need only be set once; if
// document's XML 1.0|1.1, that's how it'll stay
fVersion = version;
fStandalone = "yes".equals(standalone);
|