/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #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(f61c56b5-ea5b-42b4-ad3c-17416e72e238)] 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 aIndex If the element has an attribute of type ID, then * aAtts[aIndex] is the name of that attribute. Otherwise, aIndex * is -1 * @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 long aIndex, 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); };