зеркало из https://github.com/mozilla/gecko-dev.git
123 строки
4.1 KiB
C++
123 строки
4.1 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.0 (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.
|
|
*/
|
|
#ifndef nsIXMLContentSink_h___
|
|
#define nsIXMLContentSink_h___
|
|
|
|
#include "nsIContentSink.h"
|
|
#include "nsIParserNode.h"
|
|
#include "nsISupports.h"
|
|
|
|
class nsIDocument;
|
|
class nsIURL;
|
|
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:
|
|
/**
|
|
* 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
|
|
* a document type declaration.
|
|
*
|
|
* XXX Should the parser also part the internal subset?
|
|
*
|
|
* @param nsIParserNode reference to parser node interface
|
|
*/
|
|
NS_IMETHOD AddDocTypeDecl(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,
|
|
nsIURL* aURL,
|
|
nsIWebShell* aWebShell);
|
|
|
|
#endif // nsIXMLContentSink_h___
|