Mozilla/mozilla/layout/xml/document/public/nsIXMLContentSink.h
dmose%mozilla.org 92d791b7b0 updated license boilerplate to xPL 1.1, a=chofmann@netscape.com,r=endico@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@52908 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-06 03:40:37 +00:00

119 lines
3.9 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape 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/NPL/
*
* 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 Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
#ifndef nsIXMLContentSink_h___
#define nsIXMLContentSink_h___
#include "nsIContentSink.h"
#include "nsIParserNode.h"
#include "nsISupports.h"
class nsIDocument;
class nsIURI;
class nsIWebShell;
#define NS_IXMLCONTENT_SINK_IID \
{ 0xa6cf90c9, 0x15b3, 0x11d2, \
{ 0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32 } }
/**
* This interface represents a content sink for generic XML files.
* The goal of this sink is to deal with XML documents that do not
* have pre-built semantics, though it may also be implemented for
* cases in which semantics are hard-wired.
*
* The expectation is that the parser has already performed
* well-formedness and validity checking.
*
* XXX The expectation is that entity expansion will be done by the sink
* itself. This would require, however, that the sink has the ability
* to query the parser for entity replacement text.
*
* XXX This interface does not contain a mechanism for the sink to
* get specific schema/DTD information from the parser. This information
* may be necessary for entity expansion. It is also necessary for
* building the DOM portions that relate to the schema.
*
* XXX This interface does not deal with the presence of an external
* subset. It seems possible that this could be dealt with completely
* at the parser level.
*/
class nsIXMLContentSink : public nsIContentSink {
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXMLCONTENT_SINK_IID)
/**
* This method is called by the parser when it encounters
* the XML declaration for a document.
*
* @param nsIParserNode reference to parser node interface
*/
NS_IMETHOD AddXMLDecl(const nsIParserNode& aNode)=0;
/**
* This method is called by the parser when it encounters
* character data - either regular CDATA or a marked CDATA
* section.
*
* XXX Could be removed in favor of nsIContentSink::AddLeaf
*
* @param nsIParserNode reference to parser node interface
*/
NS_IMETHOD AddCharacterData(const nsIParserNode& aNode)=0;
/**
* This method is called by the parser when it encounters
* an unparsed entity (i.e. NDATA)
*
* @param nsIParserNode reference to parser node interface
*/
NS_IMETHOD AddUnparsedEntity(const nsIParserNode& aNode)=0;
/**
* This method is called by the parser when it encounters
* a notation.
*
* @param nsIParserNode reference to parser node interface
*/
NS_IMETHOD AddNotation(const nsIParserNode& aNode)=0;
/**
* This method is called by the parser when it encounters
* an entity reference. Note that the expectation is that
* the content sink itself will expand the entity reference
* in the content model.
*
* @param nsIParserNode reference to parser node interface
*/
NS_IMETHOD AddEntityReference(const nsIParserNode& aNode)=0;
};
extern nsresult NS_NewXMLContentSink(nsIXMLContentSink** aInstancePtrResult,
nsIDocument* aDoc,
nsIURI* aURL,
nsIWebShell* aWebShell);
#endif // nsIXMLContentSink_h___