00001 /* 00002 * The Apache Software License, Version 1.1 00003 * 00004 * 00005 * Copyright (c) 1999-2002 The Apache Software Foundation. All rights 00006 * reserved. 00007 * 00008 * Redistribution and use in source and binary forms, with or without 00009 * modification, are permitted provided that the following conditions 00010 * are met: 00011 * 00012 * 1. Redistributions of source code must retain the above copyright 00013 * notice, this list of conditions and the following disclaimer. 00014 * 00015 * 2. Redistributions in binary form must reproduce the above copyright 00016 * notice, this list of conditions and the following disclaimer in 00017 * the documentation and/or other materials provided with the 00018 * distribution. 00019 * 00020 * 3. The end-user documentation included with the redistribution, 00021 * if any, must include the following acknowledgment: 00022 * "This product includes software developed by the 00023 * Apache Software Foundation (http://www.apache.org/)." 00024 * Alternately, this acknowledgment may appear in the software itself, 00025 * if and wherever such third-party acknowledgments normally appear. 00026 * 00027 * 4. The names "Xalan" and "Apache Software Foundation" must 00028 * not be used to endorse or promote products derived from this 00029 * software without prior written permission. For written 00030 * permission, please contact apache@apache.org. 00031 * 00032 * 5. Products derived from this software may not be called "Apache", 00033 * nor may "Apache" appear in their name, without prior written 00034 * permission of the Apache Software Foundation. 00035 * 00036 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 00037 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00038 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00039 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 00040 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00041 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00042 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 00043 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00044 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00045 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 00046 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00047 * SUCH DAMAGE. 00048 * ==================================================================== 00049 * 00050 * This software consists of voluntary contributions made by many 00051 * individuals on behalf of the Apache Software Foundation and was 00052 * originally based on software copyright (c) 1999, International 00053 * Business Machines, Inc., http://www.ibm.com. For more 00054 * information on the Apache Software Foundation, please see 00055 * <http://www.apache.org/>. 00056 * 00057 * @author <a href="mailto:david_n_bertoni@lotus.com">David N. Bertoni</a> 00058 */ 00059 #if !defined(STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680) 00060 #define STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680 00061 00062 00063 00064 // Base include file. Must be first. 00065 #include <xalanc/XSLT/XSLTDefinitions.hpp> 00066 00067 00068 00069 #include <xalanc/PlatformSupport/URISupport.hpp> 00070 00071 00072 00073 #include <xalanc/XalanDOM/XalanDOMString.hpp> 00074 00075 00076 00077 #include <xalanc/XPath/XalanQName.hpp> 00078 #include <xalanc/XPath/XPathConstructionContext.hpp> 00079 00080 00081 00082 XALAN_DECLARE_XERCES_CLASS(AttributeList) 00083 XALAN_DECLARE_XERCES_CLASS(DocumentHandler) 00084 00085 00086 00087 XALAN_CPP_NAMESPACE_BEGIN 00088 00089 00090 00091 typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; 00092 typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler DocumentHandlerType; 00093 00094 00095 00096 class AVT; 00097 class AVTPart; 00098 class ElemTemplateElement; 00099 class ExtensionNSHandler; 00100 class PrefixResolver; 00101 class Stylesheet; 00102 class StylesheetRoot; 00103 class XalanDocument; 00104 class XalanNode; 00105 class XPath; 00106 class XSLTInputSource; 00107 00108 00109 00110 // 00111 // An abstract class which provides support for constructing the internal 00112 // representation of a stylesheet. 00113 // 00114 class XALAN_XSLT_EXPORT StylesheetConstructionContext : public XPathConstructionContext 00115 { 00116 public: 00117 00118 typedef XalanQName::NamespacesStackType NamespacesStackType; 00119 00120 #if defined(XALAN_STRICT_ANSI_HEADERS) 00121 typedef std::size_t size_type; 00122 #else 00123 typedef size_t size_type; 00124 #endif 00125 00130 enum eElementToken 00131 { 00132 ELEMNAME_UNDEFINED = -2, 00133 ELEMNAME_EMPTY = -1, 00134 ELEMNAME_WITH_PARAM, 00135 ELEMNAME_APPLY_TEMPLATES, 00136 ELEMNAME_CHOOSE, 00137 ELEMNAME_COMMENT, 00138 ELEMNAME_COPY, 00139 ELEMNAME_COPY_OF, 00140 ELEMNAME_ATTRIBUTE, 00141 ELEMNAME_ATTRIBUTE_SET, 00142 ELEMNAME_EXTENSION, 00143 ELEMNAME_FOR_EACH, 00144 ELEMNAME_KEY, 00145 ELEMNAME_IF, 00146 ELEMNAME_IMPORT, 00147 ELEMNAME_INCLUDE, 00148 ELEMNAME_CALL_TEMPLATE, 00149 ELEMNAME_PARAM, 00150 ELEMNAME_NUMBER, 00151 ELEMNAME_OTHERWISE, 00152 ELEMNAME_PI, 00153 ELEMNAME_PRESERVE_SPACE, 00154 ELEMNAME_TEMPLATE, 00155 ELEMNAME_SORT, 00156 ELEMNAME_STRIP_SPACE, 00157 ELEMNAME_STYLESHEET, 00158 ELEMNAME_TEXT, 00159 ELEMNAME_VALUE_OF, 00160 ELEMNAME_WHEN, 00161 ELEMNAME_FALLBACK, 00162 ELEMNAME_ELEMENT, 00163 00164 ELEMNAME_APPLY_IMPORTS, 00165 00166 ELEMNAME_VARIABLE, 00167 ELEMNAME_MESSAGE, 00168 00169 ELEMNAME_OUTPUT, 00170 ELEMNAME_DECIMAL_FORMAT, 00171 ELEMNAME_NAMESPACE_ALIAS, 00172 00173 // This one doesn't really have a name. 00174 // It's used for any literal result 00175 // element. 00176 ELEMNAME_LITERAL_RESULT, 00177 00178 // This one doesn't really have a name. 00179 // It's used for any literal text in 00180 // the content of a literal result 00181 // element. 00182 ELEMNAME_TEXT_LITERAL_RESULT, 00183 00184 // Extension handling. 00185 ELEMNAME_EXTENSION_CALL, 00186 ELEMNAME_EXTENSION_HANDLER 00187 }; 00188 00189 typedef URISupport::URLAutoPtrType URLAutoPtrType; 00190 00191 explicit 00192 StylesheetConstructionContext(); 00193 00194 virtual 00195 ~StylesheetConstructionContext(); 00196 00197 00202 virtual void 00203 reset() = 0; 00204 00213 virtual StylesheetRoot* 00214 create(const XalanDOMString& theBaseIdentifier) = 0; 00215 00224 virtual StylesheetRoot* 00225 create(const XSLTInputSource& theInputSource) = 0; 00226 00236 virtual Stylesheet* 00237 create( 00238 StylesheetRoot& theStylesheetRoot, 00239 const XalanDOMString& theBaseIdentifier) = 0; 00240 00247 virtual void 00248 destroy(StylesheetRoot* theStylesheetRoot) = 0; 00249 00256 virtual URLAutoPtrType 00257 getURLFromString(const XalanDOMString& urlString) = 0; 00258 00265 virtual XalanDOMString 00266 getURLStringFromString(const XalanDOMString& urlString) = 0; 00267 00275 virtual URLAutoPtrType 00276 getURLFromString( 00277 const XalanDOMString& urlString, 00278 const XalanDOMString& base) = 0; 00279 00287 virtual XalanDOMString 00288 getURLStringFromString( 00289 const XalanDOMString& urlString, 00290 const XalanDOMString& base) = 0; 00291 00298 virtual const XalanDOMString& 00299 getXSLTNamespaceURI() const = 0; 00300 00311 virtual XPath* 00312 createMatchPattern( 00313 const LocatorType* locator, 00314 const XalanDOMString& str, 00315 const PrefixResolver& resolver) = 0; 00316 00327 virtual XPath* 00328 createMatchPattern( 00329 const LocatorType* locator, 00330 const XalanDOMChar* str, 00331 const PrefixResolver& resolver) = 0; 00332 00343 virtual XPath* 00344 createXPath( 00345 const LocatorType* locator, 00346 const XalanDOMString& str, 00347 const PrefixResolver& resolver) = 0; 00348 00359 virtual XPath* 00360 createXPath( 00361 const LocatorType* locator, 00362 const XalanDOMChar* str, 00363 const PrefixResolver& resolver) = 0; 00364 00375 virtual XPath* 00376 createXPath( 00377 const LocatorType* locator, 00378 const XalanDOMChar* str, 00379 XalanDOMString::size_type len, 00380 const PrefixResolver& resolver) = 0; 00381 00387 virtual const LocatorType* 00388 getLocatorFromStack() const = 0; 00389 00395 virtual void 00396 pushLocatorOnStack(const LocatorType* locator) = 0; 00397 00401 virtual void 00402 popLocatorStack() = 0; 00403 00409 virtual const XalanDOMString& 00410 getXalanXSLNameSpaceURL() const = 0; 00411 00423 virtual XalanDocument* 00424 parseXML( 00425 const XalanDOMString& urlString, 00426 DocumentHandlerType* docHandler, 00427 XalanDocument* docToRegister) = 0; 00428 00438 virtual bool 00439 isXMLSpaceAttribute( 00440 const XalanDOMChar* theAttributeName, 00441 const Stylesheet& theStylesheet, 00442 const LocatorType* theLocator = 0) = 0; 00443 00453 virtual bool 00454 isXSLUseAttributeSetsAttribute( 00455 const XalanDOMChar* theAttributeName, 00456 const Stylesheet& theStylesheet, 00457 const LocatorType* theLocator = 0) = 0; 00458 00468 virtual bool 00469 isValidQName( 00470 const XalanDOMChar* theName, 00471 const Stylesheet& theStylesheet, 00472 const LocatorType* theLocator = 0) = 0; 00473 00481 virtual eElementToken 00482 getElementToken(const XalanDOMString& name) const = 0; 00483 00489 virtual double 00490 getXSLTVersionSupported() const = 0; 00491 00492 virtual const XalanDOMString& 00493 getPooledString(const XalanDOMString& theString) = 0; 00494 00495 virtual const XalanDOMString& 00496 getPooledString( 00497 const XalanDOMChar* theString, 00498 XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; 00499 00500 virtual XalanDOMString& 00501 getCachedString() = 0; 00502 00503 virtual bool 00504 releaseCachedString(XalanDOMString& theString) = 0; 00505 00513 virtual XalanDOMChar* 00514 allocateXalanDOMCharVector(XalanDOMString::size_type theLength) = 0; 00515 00525 virtual XalanDOMChar* 00526 allocateXalanDOMCharVector( 00527 const XalanDOMChar* theString, 00528 XalanDOMString::size_type theLength = XalanDOMString::npos, 00529 bool fTerminate = true) = 0; 00530 00540 virtual const AVT* 00541 createAVT( 00542 const LocatorType* locator, 00543 const XalanDOMChar* name, 00544 const XalanDOMChar* stringedValue, 00545 const PrefixResolver& resolver) = 0; 00546 00555 virtual const AVTPart* 00556 createAVTPart( 00557 const XalanDOMChar* theString, 00558 XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; 00559 00569 virtual const AVTPart* 00570 createAVTPart( 00571 const LocatorType* locator, 00572 const XalanDOMChar* str, 00573 XalanDOMString::size_type len, 00574 const PrefixResolver& resolver) = 0; 00575 00583 virtual const AVT** 00584 allocateAVTPointerVector(size_type theLength) = 0; 00585 00593 virtual const AVTPart** 00594 allocateAVTPartPointerVector(size_type theLength) = 0; 00595 00605 virtual const XalanQName* 00606 createXalanQName( 00607 const XalanDOMString& qname, 00608 const NamespacesStackType& namespaces, 00609 const LocatorType* locator = 0, 00610 bool fUseDefault = false) = 0; 00611 00621 virtual const XalanQName* 00622 createXalanQName( 00623 const XalanDOMChar* qname, 00624 const NamespacesStackType& namespaces, 00625 const LocatorType* locator = 0, 00626 bool fUseDefault = false) = 0; 00627 00639 virtual const XalanQName** 00640 tokenizeQNames( 00641 size_type& count, 00642 const XalanDOMChar* qnameTokens, 00643 const NamespacesStackType& namespaces, 00644 const LocatorType* locator = 0, 00645 bool fUseDefault = false) = 0; 00646 00660 virtual ElemTemplateElement* 00661 createElement( 00662 int token, 00663 Stylesheet& stylesheetTree, 00664 const AttributeListType& atts, 00665 const LocatorType* locator = 0) = 0; 00666 00679 virtual ElemTemplateElement* 00680 createElement( 00681 Stylesheet& stylesheetTree, 00682 const XalanDOMChar* name, 00683 const AttributeListType& atts, 00684 const LocatorType* locator = 0) = 0; 00685 00700 virtual ElemTemplateElement* 00701 createElement( 00702 Stylesheet& stylesheetTree, 00703 const XalanDOMChar* chars, 00704 XalanDOMString::size_type length, 00705 bool preserveSpace, 00706 bool disableOutputEscaping, 00707 const LocatorType* locator = 0) = 0; 00708 00723 virtual ElemTemplateElement* 00724 createElement( 00725 Stylesheet& stylesheetTree, 00726 const XalanDOMChar* name, 00727 const AttributeListType& atts, 00728 ExtensionNSHandler& handler, 00729 const LocatorType* locator = 0) = 0; 00730 00731 // These are inherited from XPathConstructionContext... 00732 00733 virtual void 00734 error( 00735 const XalanDOMString& msg, 00736 const XalanNode* sourceNode = 0, 00737 const ElemTemplateElement* styleNode = 0) const = 0; 00738 00739 virtual void 00740 error( 00741 const XalanDOMString& msg, 00742 const XalanNode* sourceNode, 00743 const LocatorType* locator) const = 0; 00744 00745 virtual void 00746 error( 00747 const char* msg, 00748 const XalanNode* sourceNode = 0, 00749 const ElemTemplateElement* styleNode = 0) const = 0; 00750 00751 virtual void 00752 error( 00753 const char* msg, 00754 const XalanNode* sourceNode, 00755 const LocatorType* locator) const = 0; 00756 00757 virtual void 00758 warn( 00759 const XalanDOMString& msg, 00760 const XalanNode* sourceNode = 0, 00761 const ElemTemplateElement* styleNode = 0) const = 0; 00762 00763 virtual void 00764 warn( 00765 const XalanDOMString& msg, 00766 const XalanNode* sourceNode, 00767 const LocatorType* locator) const = 0; 00768 00769 virtual void 00770 warn( 00771 const char* msg, 00772 const XalanNode* sourceNode = 0, 00773 const ElemTemplateElement* styleNode = 0) const = 0; 00774 00775 virtual void 00776 warn( 00777 const char* msg, 00778 const XalanNode* sourceNode, 00779 const LocatorType* locator) const = 0; 00780 00781 virtual void 00782 message( 00783 const XalanDOMString& msg, 00784 const XalanNode* sourceNode = 0, 00785 const ElemTemplateElement* styleNode = 0) const = 0; 00786 00787 virtual void 00788 message( 00789 const XalanDOMString& msg, 00790 const XalanNode* sourceNode, 00791 const LocatorType* locator) const = 0; 00792 00793 virtual void 00794 message( 00795 const char* msg, 00796 const XalanNode* sourceNode = 0, 00797 const ElemTemplateElement* styleNode = 0) const = 0; 00798 00799 virtual void 00800 message( 00801 const char* msg, 00802 const XalanNode* sourceNode, 00803 const LocatorType* locator) const = 0; 00804 }; 00805 00806 00807 00808 XALAN_CPP_NAMESPACE_END 00809 00810 00811 00812 #endif // STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680
Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.
![]() |
Xalan-C++ XSLT Processor Version 1.6 |
|