18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This file is part of the XSL implementation. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004, 2007, 2008 Apple, Inc. All rights reserved. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef XSLTProcessor_h 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define XSLTProcessor_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XSLT) 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Node.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XSLStyleSheet.h" 30231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <wtf/HashMap.h> 31f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/text/StringHash.h> 32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if !USE(QXMLQUERY) 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <libxml/parserInternals.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <libxslt/documents.h> 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Frame; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Document; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass DocumentFragment; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass XSLTProcessor : public RefCounted<XSLTProcessor> { 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static PassRefPtr<XSLTProcessor> create() { return adoptRef(new XSLTProcessor); } 476b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner ~XSLTProcessor(); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setXSLStyleSheet(PassRefPtr<XSLStyleSheet> styleSheet) { m_stylesheet = styleSheet; } 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool transformToString(Node* source, String& resultMIMEType, String& resultString, String& resultEncoding); 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PassRefPtr<Document> createDocumentFromSource(const String& source, const String& sourceEncoding, const String& sourceMIMEType, Node* sourceNode, Frame* frame); 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // DOM methods 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void importStylesheet(PassRefPtr<Node> style) { m_stylesheetRootNode = style; } 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PassRefPtr<DocumentFragment> transformToFragment(Node* source, Document* ouputDoc); 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PassRefPtr<Document> transformToDocument(Node* source); 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setParameter(const String& namespaceURI, const String& localName, const String& value); 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String getParameter(const String& namespaceURI, const String& localName) const; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void removeParameter(const String& namespaceURI, const String& localName); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void clearParameters() { m_parameters.clear(); } 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void reset(); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 65231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if !USE(QXMLQUERY) 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void parseErrorFunc(void* userData, xmlError*); 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void genericErrorFunc(void* userData, const char* msg, ...); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Only for libXSLT callbacks 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project XSLStyleSheet* xslStylesheet() const { return m_stylesheet.get(); } 71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project typedef HashMap<String, String> ParameterMap; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project XSLTProcessor() { } 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<XSLStyleSheet> m_stylesheet; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Node> m_stylesheetRootNode; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ParameterMap m_parameters; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 87