diff options
Diffstat (limited to 'parser/xml/nsISAXXMLReader.idl')
-rw-r--r-- | parser/xml/nsISAXXMLReader.idl | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/parser/xml/nsISAXXMLReader.idl b/parser/xml/nsISAXXMLReader.idl new file mode 100644 index 000000000..8dedcc3f6 --- /dev/null +++ b/parser/xml/nsISAXXMLReader.idl @@ -0,0 +1,207 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsIStreamListener.idl" + +interface nsIInputStream; +interface nsIRequestObserver; +interface nsIURI; + +interface nsISAXContentHandler; +interface nsISAXDTDHandler; +interface nsISAXEntityResolver; +interface nsISAXErrorHandler; +interface nsISAXLexicalHandler; +interface nsIMozSAXXMLDeclarationHandler; + +/** + * Interface for reading an XML document using callbacks. + * + * nsISAXXMLReader is the interface that an XML parser's SAX2 + * driver must implement. This interface allows an application to set + * and query features and properties in the parser, to register event + * handlers for document processing, and to initiate a document + * parse. + */ +[scriptable, uuid(5b1de802-9091-454f-9972-5753c0d0c70e)] +interface nsISAXXMLReader : nsIStreamListener { + + /** + * The base URI. + */ + attribute nsIURI baseURI; + + /** + * 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. + */ + attribute nsISAXContentHandler contentHandler; + + /** + * 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. + */ + attribute nsISAXDTDHandler dtdHandler; + + + /** + * 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. + */ + attribute nsISAXErrorHandler errorHandler; + + /** + * A handler for the (optional) XML declaration of a document. + * <?xml version='1.0'?> + * + * @note This is not part of the SAX standard. + */ + attribute nsIMozSAXXMLDeclarationHandler declarationHandler; + + /** + * If the application does not register a lexical handler, all + * lexical events (e.g. startDTD) 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. + */ + attribute nsISAXLexicalHandler lexicalHandler; + + /** + * Set the value of a feature flag. + * + * The feature name is any fully-qualified URI. It is possible + * for an XMLReader to expose a feature value but to be unable to + * change the current value. Some feature values may be immutable + * or mutable only in specific contexts, such as before, during, or + * after a parse. + * + * All XMLReaders are required to support setting + * http://xml.org/sax/features/namespaces to true and + * http://xml.org/sax/features/namespace-prefixes to false. + * + * @param name String flag for a parser feature. + * @param value Turn the feature on/off. + * + * @note This is currently supported only for + * http://xml.org/sax/features/namespace-prefixes . All other + * features will result in a NOT_IMPLEMENTED exception. + */ + void setFeature(in AString name, in boolean value); + + /** + * Look up the value of a feature flag. + * + * The feature name is any fully-qualified URI. It is + * possible for an XMLReader to recognize a feature name but + * temporarily be unable to return its value. + * Some feature values may be available only in specific + * contexts, such as before, during, or after a parse. + * + * All XMLReaders are required to recognize the + * http://xml.org/sax/features/namespaces and the + * http://xml.org/sax/features/namespace-prefixes feature names. + * + * @param name String flag for a parser feature. + * + * @note This is currently supported only for + * http://xml.org/sax/features/namespace-prefixes . All other + * features will result in a NOT_IMPLEMENTED exception. + */ + boolean getFeature(in AString name); + + /** + * Set the value of a property. NOT CURRENTLY IMPLEMENTED. + * + * The property name is any fully-qualified URI. It is possible + * for an XMLReader to recognize a property name but to be unable to + * change the current value. Some property values may be immutable + * or mutable only in specific contexts, such as before, during, or + * after a parse. + * + * XMLReaders are not required to recognize setting any specific + * property names, though a core set is defined by SAX2. + * + * This method is also the standard mechanism for setting + * extended handlers. + * + * @param name String flag for a parser feature + * @param value Turn the feature on/off. + */ + void setProperty(in AString name, in nsISupports value); + + /** + * Look up the value of a property. NOT CURRENTLY IMPLEMENTED. + * + * The property name is any fully-qualified URI. It is + * possible for an XMLReader to recognize a property name but + * temporarily be unable to return its value. + * Some property values may be available only in specific + * contexts, such as before, during, or after a parse. + * + * XMLReaders are not required to recognize any specific + * property names, though an initial core set is documented for + * SAX2. + * + * Implementors are free (and encouraged) to invent their own properties, + * using names built on their own URIs. + * + * @param name The property name, which is a fully-qualified URI. + * @return The current value of the property. + */ + boolean getProperty(in AString name); + + /** + * + * @param str The UTF16 string to be parsed + * @param contentType The content type of the string (see parseFromStream) + * + */ + void parseFromString(in AString str, in string contentType); + + /** + * + * @param stream The byte stream whose contents are parsed + * @param charset The character set that was used to encode the byte + * stream. NULL if not specified. + * @param contentType The content type of the string - either text/xml, + * application/xml, or application/xhtml+xml. + * Must not be NULL. + * + */ + void parseFromStream(in nsIInputStream stream, + in string charset, + in string contentType); + + /** + * Begin an asynchronous parse. This method initializes the parser, + * and must be called before any nsIStreamListener methods. It is + * then the caller's duty to call nsIStreamListener methods to drive + * the parser. Once this method is called, the caller must not call + * one of the other parse methods. + * + * @param observer The nsIRequestObserver to notify upon start or stop. + * Can be NULL. + */ + void parseAsync(in nsIRequestObserver observer); +}; |