XSLStyleSheet.h revision 231d4e3152a9c27a73b6ac7badbe6be673aa3ddf
1dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner/* 2dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * This file is part of the XSL implementation. 3dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * 4dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner * 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner * This library is free software; you can redistribute it and/or 7dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * modify it under the terms of the GNU Library General Public 8dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * License as published by the Free Software Foundation; either 9dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * version 2 of the License, or (at your option) any later version. 10dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * 11a8a118b68fa3ca1632e7280cd6994aa0f8f1eec1Gordon Henriksen * This library is distributed in the hope that it will be useful, 12a8a118b68fa3ca1632e7280cd6994aa0f8f1eec1Gordon Henriksen * but WITHOUT ANY WARRANTY; without even the implied warranty of 13dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * Library General Public License for more details. 15dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * 16dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * You should have received a copy of the GNU Library General Public License 17dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * along with this library; see the file COPYING.LIB. If not, write to 18dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * Boston, MA 02110-1301, USA. 20dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner * 219bf12b5583104c810cfadcdce91edf9efad79973Evan Cheng */ 22dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner 236aae1d6582fe8519c42d9774d670bb93c78e9637Dale Johannesen#ifndef XSLStyleSheet_h 24dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner#define XSLStyleSheet_h 2580f6a507d4e11ba066ad0e53e12ad25ad8cf07baCameron Zwarich 26d5f8684b16057df73771b23e293b400cb327e079Owen Anderson#if ENABLE(XSLT) 27ad80981a106c9d0ec83351e63ee3ac75ed646bf4Andreas Neustifter 28dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner#include "StyleSheet.h" 29dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner 30a1fd5b386dd8eb4c86bfd2b9659c219a1c4f56dbEvan Cheng#if !USE(QXMLQUERY) 31dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner#include <libxml/parser.h> 32dd77df3cbc2301c14f56c9d2cfd412a032c27241Chris Lattner#include <libxslt/transform.h> 33040056fd11693ffc41ce9b777281c71705d0dc1fEric Christopher#endif 34dd77df3cbc2301c14f56c9d2cfd412a032c27241Chris Lattner 35dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner#include <wtf/PassRefPtr.h> 367eb589d3f9294dbfe4d5205045bd8119a9666532Jakob Stoklund Olesen 3703ce042d70c423a41edca0714112a0e06b16493bDan Gohmannamespace WebCore { 389bf12b5583104c810cfadcdce91edf9efad79973Evan Cheng 39e1bcb440dc0ca3c41fda1c0c581abfc4f38ca170Evan Chengclass DocLoader; 40bdcb726fcad1e3fddc70847a2b91d4d4f9396938Evan Chengclass Document; 41dd77df3cbc2301c14f56c9d2cfd412a032c27241Chris Lattnerclass XSLImportRule; 42088a1e84ea985a22efcf907d7789064fee3a97b9Chris Lattner 436c1980b3357207c4d756255bc5e32323eac278dcDan Gohmanclass XSLStyleSheet : public StyleSheet { 44040056fd11693ffc41ce9b777281c71705d0dc1fEric Christopherpublic: 45dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner#if !USE(QXMLQUERY) 46088a1e84ea985a22efcf907d7789064fee3a97b9Chris Lattner static PassRefPtr<XSLStyleSheet> create(XSLImportRule* parentImport, const String& href) 47dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner { 4831ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich return adoptRef(new XSLStyleSheet(parentImport, href)); 49073057f0d0a1e21ab020fa71ff4bd11543faa6d0Cameron Zwarich } 50073057f0d0a1e21ab020fa71ff4bd11543faa6d0Cameron Zwarich#endif 5131ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich static PassRefPtr<XSLStyleSheet> create(Node* parentNode, const String& href) 5231ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich { 5331ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich return adoptRef(new XSLStyleSheet(parentNode, href, false)); 5431ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich } 5531ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich static PassRefPtr<XSLStyleSheet> createEmbedded(Node* parentNode, const String& href) 5631ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich { 5731ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich return adoptRef(new XSLStyleSheet(parentNode, href, true)); 5831ff1333e0651192212cee6e090df2ff57d19b53Cameron Zwarich } 597eb589d3f9294dbfe4d5205045bd8119a9666532Jakob Stoklund Olesen 60e1bcb440dc0ca3c41fda1c0c581abfc4f38ca170Evan Cheng virtual ~XSLStyleSheet(); 61e1bcb440dc0ca3c41fda1c0c581abfc4f38ca170Evan Cheng 62e1bcb440dc0ca3c41fda1c0c581abfc4f38ca170Evan Cheng virtual bool isXSLStyleSheet() const { return true; } 637eb589d3f9294dbfe4d5205045bd8119a9666532Jakob Stoklund Olesen 64e1bcb440dc0ca3c41fda1c0c581abfc4f38ca170Evan Cheng virtual String type() const { return "text/xml"; } 65692bf6b85e0eaed549cd47d67289ab7b28e32651Eric Christopher 663e8b6631e67e01e4960a7ba4668a50c596607473Chris Lattner virtual bool parseString(const String &string, bool strict = true); 67dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner 68dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner virtual bool isLoading(); 69dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner virtual void checkLoaded(); 7080f6a507d4e11ba066ad0e53e12ad25ad8cf07baCameron Zwarich 7104149f7ffd033773adfe85e4acf3f560e29bd47dEvan Cheng void loadChildSheets(); 72ab63152871f4144050d0a58d592a95e089fe40d4Evan Cheng void loadChildSheet(const String& href); 73ab63152871f4144050d0a58d592a95e089fe40d4Evan Cheng 74ab63152871f4144050d0a58d592a95e089fe40d4Evan Cheng DocLoader* docLoader(); 75fe095f39e7009c51d1c86769792ccbcad8cdd2ecMike Stump 768c3527e7a475dd3369a485a4f610d56f7005b7b5Cameron Zwarich Document* ownerDocument() { return m_ownerDocument; } 778c3527e7a475dd3369a485a4f610d56f7005b7b5Cameron Zwarich void setParentStyleSheet(XSLStyleSheet* parent); 788c3527e7a475dd3369a485a4f610d56f7005b7b5Cameron Zwarich 798c3527e7a475dd3369a485a4f610d56f7005b7b5Cameron Zwarich#if USE(QXMLQUERY) 808c3527e7a475dd3369a485a4f610d56f7005b7b5Cameron Zwarich String sheetString() const { return m_sheetString; } 818c3527e7a475dd3369a485a4f610d56f7005b7b5Cameron Zwarich#else 82dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner xmlDocPtr document(); 83ecd94c804a563f2a86572dcf1d2e81f397e19daaNick Lewycky xsltStylesheetPtr compileStyleSheet(); 84c2bbfc18e9adbbdcf5b3375d8d25e2452f7df7f1Dan Gohman xmlDocPtr locateStylesheetSubResource(xmlDocPtr parentDoc, const xmlChar* uri); 85081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson#endif 86081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson 87081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson void clearDocuments(); 88dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner 89692bf6b85e0eaed549cd47d67289ab7b28e32651Eric Christopher void markAsProcessed(); 90ad80981a106c9d0ec83351e63ee3ac75ed646bf4Andreas Neustifter bool processed() const { return m_processed; } 9180f6a507d4e11ba066ad0e53e12ad25ad8cf07baCameron Zwarich 92ad80981a106c9d0ec83351e63ee3ac75ed646bf4Andreas Neustifterprivate: 93ad80981a106c9d0ec83351e63ee3ac75ed646bf4Andreas Neustifter XSLStyleSheet(Node* parentNode, const String& href, bool embedded); 94ad80981a106c9d0ec83351e63ee3ac75ed646bf4Andreas Neustifter#if !USE(QXMLQUERY) 95aa0e52328747d982d6c6e501a205832ad724ff62Dan Gohman XSLStyleSheet(XSLImportRule* parentImport, const String& href); 96aa0e52328747d982d6c6e501a205832ad724ff62Dan Gohman#endif 97aa0e52328747d982d6c6e501a205832ad724ff62Dan Gohman 98aa0e52328747d982d6c6e501a205832ad724ff62Dan Gohman Document* m_ownerDocument; 99dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner bool m_embedded; 100d9c3a0d7cce72ac802516483c4a325b3b31bbc0eChris Lattner bool m_processed; 101d9c3a0d7cce72ac802516483c4a325b3b31bbc0eChris Lattner 102d9c3a0d7cce72ac802516483c4a325b3b31bbc0eChris Lattner#if USE(QXMLQUERY) 103dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner String m_sheetString; 104c061101e03ef6d2ca550f8fe71594a5e1c02e348Cameron Zwarich#else 10588a5c832ac71eb31d2b1bc143817af9248f4c549Chris Lattner xmlDocPtr m_stylesheetDoc; 10688a5c832ac71eb31d2b1bc143817af9248f4c549Chris Lattner bool m_stylesheetDocTaken; 1079bf12b5583104c810cfadcdce91edf9efad79973Evan Cheng#endif 1089bf12b5583104c810cfadcdce91edf9efad79973Evan Cheng 109040056fd11693ffc41ce9b777281c71705d0dc1fEric Christopher XSLStyleSheet* m_parentStyleSheet; 110b00f236b03ea57520f94823780896ebdbc5d8bdcDan Gohman}; 111bdcb726fcad1e3fddc70847a2b91d4d4f9396938Evan Cheng 112fe095f39e7009c51d1c86769792ccbcad8cdd2ecMike Stump} // namespace WebCore 113dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner 114dbe0deca339585dfbaed5951ef0ca2c6a0df173cChris Lattner#endif // ENABLE(XSLT) 115794fd75c67a2cdc128d67342c6d88a504d186896Devang Patel 1161997473cf72957d0e70322e2fe6fe2ab141c58a6Devang Patel#endif // XSLStyleSheet_h 117d13db2c59cc94162d6cf0a04187d408bfef6d4a7Owen Anderson