mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Add a first version of the TransformDocument method.
This commit is contained in:
parent
d7c2810dca
commit
e190736293
@ -35,7 +35,7 @@
|
||||
* Nathan Pride, npride@wavo.com
|
||||
* -- fixed a document base issue
|
||||
*
|
||||
* $Id: XSLTProcessor.cpp,v 1.10 2000/04/21 02:20:26 nisheeth%netscape.com Exp $
|
||||
* $Id: XSLTProcessor.cpp,v 1.11 2000/05/02 22:03:54 Peter.VanderBeken%pandora.be Exp $
|
||||
*/
|
||||
|
||||
#include "XSLTProcessor.h"
|
||||
@ -48,7 +48,7 @@
|
||||
/**
|
||||
* XSLTProcessor is a class for Processing XSL styelsheets
|
||||
* @author <a href="mailto:kvisco@ziplink.net">Keith Visco</a>
|
||||
* @version $Revision: 1.10 $ $Date: 2000/04/21 02:20:26 $
|
||||
* @version $Revision: 1.11 $ $Date: 2000/05/02 22:03:54 $
|
||||
**/
|
||||
|
||||
/**
|
||||
@ -1590,7 +1590,66 @@ XSLTProcessor::TransformDocument(nsIDOMElement* aSourceDOM,
|
||||
nsIDOMDocument* aOutputDoc,
|
||||
nsIObserver* aObserver)
|
||||
{
|
||||
return NS_OK;
|
||||
nsCOMPtr<nsIDOMNode> sourceDOMNode;
|
||||
nsCOMPtr<nsIDOMDocument> sourceDOMDocument;
|
||||
nsCOMPtr<nsIDOMDocument> styleDOMDocument;
|
||||
|
||||
aSourceDOM->GetOwnerDocument(getter_AddRefs(sourceDOMDocument));
|
||||
Document sourceDocument(sourceDOMDocument);
|
||||
Node sourceNode(aSourceDOM, &sourceDocument);
|
||||
|
||||
aStyleDOM->GetOwnerDocument(getter_AddRefs(styleDOMDocument));
|
||||
Document xslDocument(styleDOMDocument);
|
||||
Element styleElement(aStyleDOM, &xslDocument);
|
||||
|
||||
Document resultDocument(aOutputDoc);
|
||||
|
||||
//-- create a new ProcessorState
|
||||
ProcessorState ps(xslDocument, resultDocument);
|
||||
|
||||
nsCOMPtr<nsIDocument> sourceNsDocument = do_QueryInterface(sourceDOMDocument);
|
||||
nsCOMPtr<nsIURI> docURL;
|
||||
|
||||
sourceNsDocument->GetBaseURL(*getter_AddRefs(docURL));
|
||||
if (docURL) {
|
||||
char* urlString;
|
||||
|
||||
docURL->GetSpec(&urlString);
|
||||
DOMString documentBase(urlString);
|
||||
//cout << "documentbase: " << documentBase << endl;
|
||||
ps.setDocumentBase(documentBase);
|
||||
nsCRT::free(urlString);
|
||||
}
|
||||
else
|
||||
ps.setDocumentBase("");
|
||||
|
||||
|
||||
//-- add error observers
|
||||
|
||||
//------------------------------------------------------/
|
||||
//- index templates and process top level xsl elements -/
|
||||
//------------------------------------------------------/
|
||||
|
||||
processTopLevel(&styleElement, &ps);
|
||||
|
||||
//---------------------------------------/
|
||||
//- Process root of XML source document -/
|
||||
//---------------------------------------/
|
||||
process(&sourceNode, &sourceNode, &ps);
|
||||
|
||||
/*
|
||||
Uncomment and add #include "printers.h" to see the output document
|
||||
in the log.
|
||||
|
||||
XMLPrinter outputprinter;
|
||||
outputprinter.setUseFormat(MB_TRUE);
|
||||
|
||||
cout << endl << "--- Result document ---" << endl;
|
||||
outputprinter.print(&resultDocument);
|
||||
cout << endl;
|
||||
*/
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user