1998-11-11 22:06:16 +00:00
|
|
|
/* -*- 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 nsXMLDocument_h___
|
|
|
|
#define nsXMLDocument_h___
|
|
|
|
|
|
|
|
#include "nsMarkupDocument.h"
|
|
|
|
#include "nsIXMLDocument.h"
|
1998-11-12 07:54:12 +00:00
|
|
|
#include "nsIHTMLContentContainer.h"
|
1998-11-11 22:06:16 +00:00
|
|
|
|
|
|
|
class nsIParser;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
nsIAtom *mPrefix;
|
|
|
|
nsString *mURI;
|
|
|
|
PRInt32 mId;
|
|
|
|
} nsXMLNameSpace;
|
|
|
|
|
|
|
|
class nsXMLDocument : public nsMarkupDocument,
|
1998-11-12 07:54:12 +00:00
|
|
|
public nsIXMLDocument,
|
|
|
|
public nsIHTMLContentContainer
|
1998-11-11 22:06:16 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
nsXMLDocument();
|
|
|
|
virtual ~nsXMLDocument();
|
|
|
|
|
|
|
|
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
|
|
|
|
|
|
|
|
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
|
|
|
NS_IMETHOD_(nsrefcnt) Release(void);
|
|
|
|
|
|
|
|
NS_IMETHOD StartDocumentLoad(nsIURL *aUrl,
|
|
|
|
nsIContentViewerContainer* aContainer,
|
|
|
|
nsIStreamListener **aDocListener,
|
1998-11-12 07:54:12 +00:00
|
|
|
const char* aCommand);
|
1998-11-11 22:06:16 +00:00
|
|
|
|
|
|
|
NS_IMETHOD EndLoad();
|
|
|
|
|
|
|
|
// nsIDOMDocument interface
|
|
|
|
NS_IMETHOD GetDoctype(nsIDOMDocumentType** aDocumentType);
|
|
|
|
NS_IMETHOD CreateCDATASection(const nsString& aData, nsIDOMCDATASection** aReturn);
|
|
|
|
NS_IMETHOD CreateEntityReference(const nsString& aName, nsIDOMEntityReference** aReturn);
|
|
|
|
NS_IMETHOD CreateComment(const nsString& aData, nsIDOMComment** aReturn);
|
|
|
|
NS_IMETHOD CreateProcessingInstruction(const nsString& aTarget, const nsString& aData, nsIDOMProcessingInstruction** aReturn);
|
|
|
|
NS_IMETHOD CreateAttribute(const nsString& aName, nsIDOMAttr** aReturn);
|
|
|
|
NS_IMETHOD CreateElement(const nsString& aTagName,
|
|
|
|
nsIDOMElement** aReturn);
|
|
|
|
NS_IMETHOD CreateTextNode(const nsString& aData, nsIDOMText** aReturn);
|
|
|
|
|
|
|
|
// nsIXMLDocument interface
|
|
|
|
NS_IMETHOD RegisterNameSpace(nsIAtom *aPrefix, const nsString& aURI,
|
1998-11-12 07:54:12 +00:00
|
|
|
PRInt32& aNameSpaceId);
|
1998-11-11 22:06:16 +00:00
|
|
|
|
|
|
|
NS_IMETHOD GetNameSpaceURI(PRInt32 aNameSpaceId, nsString& aURI);
|
|
|
|
NS_IMETHOD GetNameSpacePrefix(PRInt32 aNameSpaceId, nsIAtom*& aPrefix);
|
|
|
|
|
|
|
|
NS_IMETHOD PrologElementAt(PRInt32 aOffset, nsIContent** aContent);
|
|
|
|
NS_IMETHOD PrologCount(PRInt32* aCount);
|
|
|
|
NS_IMETHOD AppendToProlog(nsIContent* aContent);
|
|
|
|
|
|
|
|
NS_IMETHOD EpilogElementAt(PRInt32 aOffset, nsIContent** aContent);
|
|
|
|
NS_IMETHOD EpilogCount(PRInt32* aCount);
|
|
|
|
NS_IMETHOD AppendToEpilog(nsIContent* aContent);
|
|
|
|
|
1998-11-12 07:54:12 +00:00
|
|
|
// nsIHTMLContentContainer
|
1998-11-11 22:06:16 +00:00
|
|
|
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
// For HTML elements in our content model
|
|
|
|
nsIHTMLStyleSheet* mAttrStyleSheet;
|
|
|
|
|
|
|
|
nsVoidArray *mProlog;
|
|
|
|
nsVoidArray *mEpilog;
|
|
|
|
|
|
|
|
nsIParser *mParser;
|
|
|
|
nsVoidArray *mNameSpaces;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // nsXMLDocument_h___
|