| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of the XSL implementation. | 2 * This file is part of the XSL implementation. |
| 3 * | 3 * |
| 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple, Inc. All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple, Inc. All rights reserved. |
| 5 * Copyright (C) 2005, 2006 Alexey Proskuryakov <ap@webkit.org> | 5 * Copyright (C) 2005, 2006 Alexey Proskuryakov <ap@webkit.org> |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 fastFree((void*)*(temp++)); | 219 fastFree((void*)*(temp++)); |
| 220 fastFree((void*)*(temp++)); | 220 fastFree((void*)*(temp++)); |
| 221 } | 221 } |
| 222 fastFree(params); | 222 fastFree(params); |
| 223 } | 223 } |
| 224 | 224 |
| 225 static xsltStylesheetPtr xsltStylesheetPointer(RefPtr<XSLStyleSheet>& cachedStyl
esheet, Node* stylesheetRootNode) | 225 static xsltStylesheetPtr xsltStylesheetPointer(RefPtr<XSLStyleSheet>& cachedStyl
esheet, Node* stylesheetRootNode) |
| 226 { | 226 { |
| 227 if (!cachedStylesheet && stylesheetRootNode) { | 227 if (!cachedStylesheet && stylesheetRootNode) { |
| 228 cachedStylesheet = XSLStyleSheet::createForXSLTProcessor(stylesheetRootN
ode->parentNode() ? stylesheetRootNode->parentNode() : stylesheetRootNode, | 228 cachedStylesheet = XSLStyleSheet::createForXSLTProcessor(stylesheetRootN
ode->parentNode() ? stylesheetRootNode->parentNode() : stylesheetRootNode, |
| 229 stylesheetRootNode->document()->url().string(), | 229 stylesheetRootNode->document().url().string(), |
| 230 stylesheetRootNode->document()->url()); // FIXME: Should we use base
URL here? | 230 stylesheetRootNode->document().url()); // FIXME: Should we use baseU
RL here? |
| 231 | 231 |
| 232 // According to Mozilla documentation, the node must be a Document node,
an xsl:stylesheet or xsl:transform element. | 232 // According to Mozilla documentation, the node must be a Document node,
an xsl:stylesheet or xsl:transform element. |
| 233 // But we just use text content regardless of node type. | 233 // But we just use text content regardless of node type. |
| 234 cachedStylesheet->parseString(createMarkup(stylesheetRootNode)); | 234 cachedStylesheet->parseString(createMarkup(stylesheetRootNode)); |
| 235 } | 235 } |
| 236 | 236 |
| 237 if (!cachedStylesheet || !cachedStylesheet->document()) | 237 if (!cachedStylesheet || !cachedStylesheet->document()) |
| 238 return 0; | 238 return 0; |
| 239 | 239 |
| 240 return cachedStylesheet->compileStyleSheet(); | 240 return cachedStylesheet->compileStyleSheet(); |
| 241 } | 241 } |
| 242 | 242 |
| 243 static inline xmlDocPtr xmlDocPtrFromNode(Node* sourceNode, bool& shouldDelete) | 243 static inline xmlDocPtr xmlDocPtrFromNode(Node* sourceNode, bool& shouldDelete) |
| 244 { | 244 { |
| 245 RefPtr<Document> ownerDocument = sourceNode->document(); | 245 RefPtr<Document> ownerDocument = &sourceNode->document(); |
| 246 bool sourceIsDocument = (sourceNode == ownerDocument.get()); | 246 bool sourceIsDocument = (sourceNode == ownerDocument.get()); |
| 247 | 247 |
| 248 xmlDocPtr sourceDoc = 0; | 248 xmlDocPtr sourceDoc = 0; |
| 249 if (sourceIsDocument && ownerDocument->transformSource()) | 249 if (sourceIsDocument && ownerDocument->transformSource()) |
| 250 sourceDoc = (xmlDocPtr)ownerDocument->transformSource()->platformSource(
); | 250 sourceDoc = (xmlDocPtr)ownerDocument->transformSource()->platformSource(
); |
| 251 if (!sourceDoc) { | 251 if (!sourceDoc) { |
| 252 sourceDoc = (xmlDocPtr)xmlDocPtrForString(ownerDocument->fetcher(), crea
teMarkup(sourceNode), | 252 sourceDoc = (xmlDocPtr)xmlDocPtrForString(ownerDocument->fetcher(), crea
teMarkup(sourceNode), |
| 253 sourceIsDocument ? ownerDocument->url().string() : String()); | 253 sourceIsDocument ? ownerDocument->url().string() : String()); |
| 254 shouldDelete = sourceDoc; | 254 shouldDelete = sourceDoc; |
| 255 } | 255 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 270 if (xmlStrEqual(resultType, (const xmlChar*)"html")) | 270 if (xmlStrEqual(resultType, (const xmlChar*)"html")) |
| 271 return "text/html"; | 271 return "text/html"; |
| 272 if (xmlStrEqual(resultType, (const xmlChar*)"text")) | 272 if (xmlStrEqual(resultType, (const xmlChar*)"text")) |
| 273 return "text/plain"; | 273 return "text/plain"; |
| 274 | 274 |
| 275 return "application/xml"; | 275 return "application/xml"; |
| 276 } | 276 } |
| 277 | 277 |
| 278 bool XSLTProcessor::transformToString(Node* sourceNode, String& mimeType, String
& resultString, String& resultEncoding) | 278 bool XSLTProcessor::transformToString(Node* sourceNode, String& mimeType, String
& resultString, String& resultEncoding) |
| 279 { | 279 { |
| 280 RefPtr<Document> ownerDocument = sourceNode->document(); | 280 RefPtr<Document> ownerDocument = &sourceNode->document(); |
| 281 | 281 |
| 282 setXSLTLoadCallBack(docLoaderFunc, this, ownerDocument->fetcher()); | 282 setXSLTLoadCallBack(docLoaderFunc, this, ownerDocument->fetcher()); |
| 283 xsltStylesheetPtr sheet = xsltStylesheetPointer(m_stylesheet, m_stylesheetRo
otNode.get()); | 283 xsltStylesheetPtr sheet = xsltStylesheetPointer(m_stylesheet, m_stylesheetRo
otNode.get()); |
| 284 if (!sheet) { | 284 if (!sheet) { |
| 285 setXSLTLoadCallBack(0, 0, 0); | 285 setXSLTLoadCallBack(0, 0, 0); |
| 286 m_stylesheet = 0; | 286 m_stylesheet = 0; |
| 287 return false; | 287 return false; |
| 288 } | 288 } |
| 289 m_stylesheet->clearDocuments(); | 289 m_stylesheet->clearDocuments(); |
| 290 | 290 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 | 341 |
| 342 sheet->method = origMethod; | 342 sheet->method = origMethod; |
| 343 setXSLTLoadCallBack(0, 0, 0); | 343 setXSLTLoadCallBack(0, 0, 0); |
| 344 xsltFreeStylesheet(sheet); | 344 xsltFreeStylesheet(sheet); |
| 345 m_stylesheet = 0; | 345 m_stylesheet = 0; |
| 346 | 346 |
| 347 return success; | 347 return success; |
| 348 } | 348 } |
| 349 | 349 |
| 350 } // namespace WebCore | 350 } // namespace WebCore |
| OLD | NEW |