/* -*- 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 "nsISupports.idl" interface nsIScriptError; /** * This interface should be implemented by any content sink that wants * to get output from expat and do something with it; in other words, * by any sink that handles some sort of XML dialect. */ [scriptable, uuid(01f681af-0f22-4725-a914-0d396114daf0)] interface nsIExpatSink : nsISupports { /** * Called to handle the opening tag of an element. * @param aName the fully qualified tagname of the element * @param aAtts the array of attribute names and values. There are * aAttsCount/2 names and aAttsCount/2 values, so the total number of * elements in the array is aAttsCount. The names and values * alternate. Thus, if we number attributes starting with 0, * aAtts[2*k] is the name of the k-th attribute and aAtts[2*k+1] is * the value of that attribute Both explicitly specified attributes * and attributes that are defined to have default values in a DTD are * present in aAtts. * @param aAttsCount the number of elements in aAtts. * @param aLineNumber the line number of the start tag in the data stream. */ void HandleStartElement(in wstring aName, [array, size_is(aAttsCount)] in wstring aAtts, in unsigned long aAttsCount, in unsigned long aLineNumber); /** * Called to handle the closing tag of an element. * @param aName the fully qualified tagname of the element */ void HandleEndElement(in wstring aName); /** * Called to handle a comment * @param aCommentText the text of the comment (not including the * "") */ void HandleComment(in wstring aCommentText); /** * Called to handle a CDATA section * @param aData the text in the CDATA section. This is null-terminated. * @param aLength the length of the aData string */ void HandleCDataSection([size_is(aLength)] in wstring aData, in unsigned long aLength); /** * Called to handle the doctype declaration */ void HandleDoctypeDecl(in AString aSubset, in AString aName, in AString aSystemId, in AString aPublicId, in nsISupports aCatalogData); /** * Called to handle character data. Note that this does NOT get * called for the contents of CDATA sections. * @param aData the data to handle. aData is NOT NULL-TERMINATED. * @param aLength the length of the aData string */ void HandleCharacterData([size_is(aLength)] in wstring aData, in unsigned long aLength); /** * Called to handle a processing instruction * @param aTarget the PI target (e.g. xml-stylesheet) * @param aData all the rest of the data in the PI */ void HandleProcessingInstruction(in wstring aTarget, in wstring aData); /** * Handle the XML Declaration. * * @param aVersion The version string, can be null if not specified. * @param aEncoding The encoding string, can be null if not specified. * @param aStandalone -1, 0, or 1 indicating respectively that there was no * standalone parameter in the declaration, that it was * given as no, or that it was given as yes. */ void HandleXMLDeclaration(in wstring aVersion, in wstring aEncoding, in long aStandalone); /** * Ask the content sink if the expat driver should log an error to the console. * * @param aErrorText Error message to pass to content sink. * @param aSourceText Source text of the document we're parsing. * @param aError Script error object with line number & column number * * @retval True if the expat driver should report the error. */ boolean ReportError(in wstring aErrorText, in wstring aSourceText, in nsIScriptError aError); };