Xalan-C++ API Documentation

The Xalan C++ XSLT Processor Version 1.8

Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

StylesheetConstructionContext.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright 1999-2004 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 #if !defined(STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680)
00017 #define STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680
00018 
00019 
00020 
00021 // Base include file.  Must be first.
00022 #include <xalanc/XSLT/XSLTDefinitions.hpp>
00023 
00024 
00025 
00026 #include <xalanc/PlatformSupport/URISupport.hpp>
00027 
00028 
00029 
00030 #include <xalanc/XalanDOM/XalanDOMString.hpp>
00031 
00032 
00033 
00034 #include <xalanc/XPath/XalanQName.hpp>
00035 #include <xalanc/XPath/XPathConstructionContext.hpp>
00036 
00037 
00038 
00039 XALAN_DECLARE_XERCES_CLASS(AttributeList)
00040 XALAN_DECLARE_XERCES_CLASS(DocumentHandler)
00041 
00042 
00043 
00044 XALAN_CPP_NAMESPACE_BEGIN
00045 
00046 
00047 
00048 typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
00049 typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler  DocumentHandlerType;
00050 
00051 
00052 
00053 class AVT;
00054 class AVTPart;
00055 class ElemTemplateElement;
00056 class ExtensionNSHandler;
00057 class PrefixResolver;
00058 class Stylesheet;
00059 class StylesheetRoot;
00060 class XalanDocument;
00061 class XalanNode;
00062 class XPath;
00063 class XSLTInputSource;
00064 
00065 
00066 
00067 //
00068 // An abstract class which provides support for constructing the internal
00069 // representation  of a stylesheet.
00070 //
00071 class XALAN_XSLT_EXPORT StylesheetConstructionContext : public XPathConstructionContext
00072 {
00073 public:
00074 
00075     typedef XalanQName::NamespacesStackType     NamespacesStackType;
00076 
00077 #if defined(XALAN_STRICT_ANSI_HEADERS)
00078     typedef std::size_t     size_type;
00079 #else
00080     typedef size_t          size_type;
00081 #endif
00082 
00087     enum eElementToken
00088     {
00089         ELEMNAME_UNDEFINED = -2,
00090         ELEMNAME_EMPTY = -1,
00091         ELEMNAME_WITH_PARAM,
00092         ELEMNAME_APPLY_TEMPLATES,
00093         ELEMNAME_CHOOSE,
00094         ELEMNAME_COMMENT,
00095         ELEMNAME_COPY,
00096         ELEMNAME_COPY_OF,
00097         ELEMNAME_ATTRIBUTE,
00098         ELEMNAME_ATTRIBUTE_SET,
00099         ELEMNAME_EXTENSION,
00100         ELEMNAME_FOR_EACH,
00101         ELEMNAME_KEY,
00102         ELEMNAME_IF,
00103         ELEMNAME_IMPORT,
00104         ELEMNAME_INCLUDE,
00105         ELEMNAME_CALL_TEMPLATE,
00106         ELEMNAME_PARAM,
00107         ELEMNAME_NUMBER,
00108         ELEMNAME_OTHERWISE,
00109         ELEMNAME_PI,
00110         ELEMNAME_PRESERVE_SPACE,
00111         ELEMNAME_TEMPLATE,
00112         ELEMNAME_SORT,
00113         ELEMNAME_STRIP_SPACE,
00114         ELEMNAME_STYLESHEET,
00115         ELEMNAME_TEXT,
00116         ELEMNAME_VALUE_OF,
00117         ELEMNAME_WHEN,
00118         ELEMNAME_FALLBACK,
00119         ELEMNAME_ELEMENT,
00120 
00121         ELEMNAME_APPLY_IMPORTS,
00122 
00123         ELEMNAME_VARIABLE,
00124         ELEMNAME_MESSAGE,
00125 
00126         ELEMNAME_OUTPUT,
00127         ELEMNAME_DECIMAL_FORMAT,
00128         ELEMNAME_NAMESPACE_ALIAS,
00129 
00130         // This one doesn't really have a name.
00131         // It's used for any literal result
00132         // element.
00133         ELEMNAME_LITERAL_RESULT,
00134 
00135         // This one doesn't really have a name.
00136         // It's used for any literal text in
00137         // the content of a literal result
00138         // element.
00139         ELEMNAME_TEXT_LITERAL_RESULT,
00140 
00141         // This one doesn't really have a name.
00142         // It's used for forward-compatible
00143         // processing.
00144         ELEMNAME_FORWARD_COMPATIBLE,
00145 
00146         // Extension handling.
00147         ELEMNAME_EXTENSION_CALL,
00148         ELEMNAME_EXTENSION_HANDLER
00149     };
00150 
00151     typedef URISupport::URLAutoPtrType  URLAutoPtrType;
00152 
00153     explicit
00154     StylesheetConstructionContext();
00155 
00156     virtual
00157     ~StylesheetConstructionContext();
00158 
00159 
00164     virtual void
00165     reset() = 0;
00166 
00175     virtual StylesheetRoot*
00176     create(const XalanDOMString&    theBaseIdentifier) = 0;
00177 
00186     virtual StylesheetRoot*
00187     create(const XSLTInputSource&   theInputSource) = 0;
00188 
00198     virtual Stylesheet*
00199     create(
00200             StylesheetRoot&         theStylesheetRoot,
00201             const XalanDOMString&   theBaseIdentifier) = 0;
00202 
00209     virtual void
00210     destroy(StylesheetRoot*     theStylesheetRoot) = 0;
00211 
00218     virtual URLAutoPtrType
00219     getURLFromString(const XalanDOMString&  urlString) = 0;
00220 
00227     virtual XalanDOMString
00228     getURLStringFromString(const XalanDOMString&    urlString) = 0;
00229 
00237     virtual URLAutoPtrType
00238     getURLFromString(
00239             const XalanDOMString&   urlString,
00240             const XalanDOMString&   base) = 0;
00241 
00249     virtual XalanDOMString
00250     getURLStringFromString(
00251             const XalanDOMString&   urlString,
00252             const XalanDOMString&   base) = 0;
00253 
00260     virtual const XalanDOMString&
00261     getXSLTNamespaceURI() const = 0;
00262 
00273     virtual XPath*
00274     createMatchPattern(
00275             const LocatorType*      locator,
00276             const XalanDOMString&   str,
00277             const PrefixResolver&   resolver) = 0;
00278 
00289     virtual XPath*
00290     createMatchPattern(
00291             const LocatorType*      locator,
00292             const XalanDOMChar*     str,
00293             const PrefixResolver&   resolver) = 0;
00294 
00305     virtual XPath*
00306     createXPath(
00307             const LocatorType*      locator,
00308             const XalanDOMString&   str,
00309             const PrefixResolver&   resolver) = 0;
00310 
00321     virtual XPath*
00322     createXPath(
00323             const LocatorType*      locator,
00324             const XalanDOMChar*     str,
00325             const PrefixResolver&   resolver) = 0;
00326 
00337     virtual XPath*
00338     createXPath(
00339             const LocatorType*          locator,
00340             const XalanDOMChar*         str,
00341             XalanDOMString::size_type   len,
00342             const PrefixResolver&       resolver) = 0;
00343 
00349     virtual const LocatorType*
00350     getLocatorFromStack() const = 0;
00351 
00357     virtual void
00358     pushLocatorOnStack(const LocatorType*   locator) = 0;
00359 
00363     virtual void
00364     popLocatorStack() = 0;
00365 
00371     virtual const XalanDOMString&
00372     getXalanXSLNameSpaceURL() const = 0;
00373 
00385     virtual XalanDocument*
00386     parseXML(
00387             const XalanDOMString&   urlString,
00388             DocumentHandlerType*    docHandler, 
00389             XalanDocument*          docToRegister) = 0;
00390 
00400     virtual bool
00401     isXMLSpaceAttribute(
00402             const XalanDOMChar*     theAttributeName,
00403             const Stylesheet&       theStylesheet,
00404             const LocatorType*      theLocator = 0) = 0;
00405 
00415     virtual bool
00416     isXSLUseAttributeSetsAttribute(
00417             const XalanDOMChar*     theAttributeName,
00418             const Stylesheet&       theStylesheet,
00419             const LocatorType*      theLocator = 0) = 0;
00420 
00430     virtual bool
00431     isValidQName(
00432             const XalanDOMChar*     theName,
00433             const Stylesheet&       theStylesheet,
00434             const LocatorType*      theLocator = 0) = 0;
00435 
00443     virtual eElementToken
00444     getElementToken(const XalanDOMString&   name) const = 0;
00445 
00451     virtual double
00452     getXSLTVersionSupported() const = 0;
00453 
00454     virtual const XalanDOMString&
00455     getPooledString(const XalanDOMString&   theString) = 0;
00456 
00457     virtual const XalanDOMString&
00458     getPooledString(
00459             const XalanDOMChar*         theString,
00460             XalanDOMString::size_type   theLength = XalanDOMString::npos) = 0;
00461 
00462     virtual XalanDOMString&
00463     getCachedString() = 0;
00464 
00465     virtual bool
00466     releaseCachedString(XalanDOMString&     theString) = 0;
00467 
00475     virtual XalanDOMChar*
00476     allocateXalanDOMCharVector(XalanDOMString::size_type    theLength) = 0;
00477 
00487     virtual XalanDOMChar*
00488     allocateXalanDOMCharVector(
00489             const XalanDOMChar*         theString,
00490             XalanDOMString::size_type   theLength = XalanDOMString::npos,
00491             bool                        fTerminate = true) = 0;
00492 
00502     virtual const AVT*
00503     createAVT(
00504             const LocatorType*      locator,
00505             const XalanDOMChar*     name,
00506             const XalanDOMChar*     stringedValue,
00507             const PrefixResolver&   resolver) = 0;
00508 
00517     virtual const AVTPart*
00518     createAVTPart(
00519             const XalanDOMChar*         theString,
00520             XalanDOMString::size_type   theLength = XalanDOMString::npos) = 0;
00521 
00531     virtual const AVTPart*
00532     createAVTPart(
00533             const LocatorType*          locator,
00534             const XalanDOMChar*         str,
00535             XalanDOMString::size_type   len,
00536             const PrefixResolver&       resolver) = 0;
00537 
00545     virtual const AVT**
00546     allocateAVTPointerVector(size_type  theLength) = 0;
00547 
00555     virtual const AVTPart**
00556     allocateAVTPartPointerVector(size_type  theLength) = 0;
00557 
00567     virtual const XalanQName*
00568     createXalanQName(
00569             const XalanDOMString&       qname,
00570             const NamespacesStackType&  namespaces,
00571             const LocatorType*          locator = 0,
00572             bool                        fUseDefault = false) = 0;
00573 
00583     virtual const XalanQName*
00584     createXalanQName(
00585             const XalanDOMChar*         qname,
00586             const NamespacesStackType&  namespaces,
00587             const LocatorType*          locator = 0,
00588             bool                        fUseDefault = false) = 0;
00589 
00601     virtual const XalanQName**
00602     tokenizeQNames(
00603             size_type&                  count,
00604             const XalanDOMChar*         qnameTokens,
00605             const NamespacesStackType&  namespaces,
00606             const LocatorType*          locator = 0,
00607             bool                        fUseDefault = false) = 0;
00608 
00622     virtual ElemTemplateElement*
00623     createElement(
00624             int                         token,
00625             Stylesheet&                 stylesheetTree,
00626             const AttributeListType&    atts,
00627             const LocatorType*          locator = 0) = 0;
00628 
00642     virtual ElemTemplateElement*
00643     createElement(
00644             int                         token,
00645             Stylesheet&                 stylesheetTree,
00646             const XalanDOMChar*         name,
00647             const AttributeListType&    atts,
00648             const LocatorType*          locator = 0) = 0;
00649 
00664     virtual ElemTemplateElement*
00665     createElement(
00666             Stylesheet&                 stylesheetTree,
00667             const XalanDOMChar*         chars,
00668             XalanDOMString::size_type   length,
00669             bool                        preserveSpace,
00670             bool                        disableOutputEscaping,
00671             const LocatorType*          locator = 0) = 0;
00672 
00687     virtual ElemTemplateElement*
00688     createElement(
00689             Stylesheet&                 stylesheetTree,
00690             const XalanDOMChar*         name,
00691             const AttributeListType&    atts,
00692             ExtensionNSHandler&         handler,
00693             const LocatorType*          locator = 0) = 0;
00694 
00695     // These are inherited from XPathConstructionContext...
00696 
00697     virtual void
00698     error(
00699             const XalanDOMString&       msg,
00700             const XalanNode*            sourceNode = 0,
00701             const ElemTemplateElement*  styleNode = 0) const = 0;
00702 
00703     virtual void
00704     error(
00705             const XalanDOMString&   msg,
00706             const XalanNode*        sourceNode,
00707             const LocatorType*      locator) const = 0;
00708 
00709     virtual void
00710     error(
00711             const char*                 msg,
00712             const XalanNode*            sourceNode = 0,
00713             const ElemTemplateElement*  styleNode = 0) const = 0;
00714 
00715     virtual void
00716     error(
00717             const char*         msg,
00718             const XalanNode*    sourceNode,
00719             const LocatorType*  locator) const = 0;
00720 
00721     virtual void
00722     warn(
00723             const XalanDOMString&       msg,
00724             const XalanNode*            sourceNode = 0,
00725             const ElemTemplateElement*  styleNode = 0) const = 0;
00726 
00727     virtual void
00728     warn(
00729             const XalanDOMString&   msg,
00730             const XalanNode*        sourceNode,
00731             const LocatorType*      locator) const = 0;
00732 
00733     virtual void
00734     warn(
00735             const char*                 msg,
00736             const XalanNode*            sourceNode = 0,
00737             const ElemTemplateElement*  styleNode = 0) const = 0;
00738 
00739     virtual void
00740     warn(
00741             const char*         msg,
00742             const XalanNode*    sourceNode,
00743             const LocatorType*  locator) const = 0;
00744 
00745     virtual void
00746     message(
00747             const XalanDOMString&       msg,
00748             const XalanNode*            sourceNode = 0,
00749             const ElemTemplateElement*  styleNode = 0) const = 0;
00750 
00751     virtual void
00752     message(
00753             const XalanDOMString&   msg,
00754             const XalanNode*        sourceNode,
00755             const LocatorType*      locator) const = 0;
00756 
00757     virtual void
00758     message(
00759             const char*                 msg,
00760             const XalanNode*            sourceNode = 0,
00761             const ElemTemplateElement*  styleNode = 0) const = 0;
00762 
00763     virtual void
00764     message(
00765             const char*         msg,
00766             const XalanNode*    sourceNode,
00767             const LocatorType*  locator) const = 0;
00768 };
00769 
00770 
00771 
00772 XALAN_CPP_NAMESPACE_END
00773 
00774 
00775 
00776 #endif  // STYLESHEETCONSTRUCTIONCONTEXT_HEADER_GUARD_1357924680

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.8
Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.