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/XPath.hpp> 00036 #include <xalanc/XPath/XPathConstructionContext.hpp> 00037 00038 00039 00040 XALAN_DECLARE_XERCES_CLASS(AttributeList) 00041 XALAN_DECLARE_XERCES_CLASS(DocumentHandler) 00042 00043 00044 00045 XALAN_CPP_NAMESPACE_BEGIN 00046 00047 00048 00049 typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList AttributeListType; 00050 typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler DocumentHandlerType; 00051 00052 00053 00054 class AVT; 00055 class AVTPart; 00056 class ElemTemplate; 00057 class ElemTemplateElement; 00058 class ExtensionNSHandler; 00059 class PrefixResolver; 00060 class Stylesheet; 00061 class StylesheetRoot; 00062 class XalanDocument; 00063 class XalanMatchPatternData; 00064 class XalanNode; 00065 class XSLTInputSource; 00066 00067 00068 00069 // 00070 // An abstract class which provides support for constructing the internal 00071 // representation of a stylesheet. 00072 // 00073 class XALAN_XSLT_EXPORT StylesheetConstructionContext : public XPathConstructionContext 00074 { 00075 public: 00076 00077 typedef XalanQName::NamespacesStackType NamespacesStackType; 00078 00079 #if defined(XALAN_STRICT_ANSI_HEADERS) 00080 typedef std::size_t size_type; 00081 #else 00082 typedef size_t size_type; 00083 #endif 00084 00089 enum eElementToken 00090 { 00091 ELEMNAME_UNDEFINED = -2, 00092 ELEMNAME_EMPTY = -1, 00093 ELEMNAME_WITH_PARAM, 00094 ELEMNAME_APPLY_TEMPLATES, 00095 ELEMNAME_CHOOSE, 00096 ELEMNAME_COMMENT, 00097 ELEMNAME_COPY, 00098 ELEMNAME_COPY_OF, 00099 ELEMNAME_ATTRIBUTE, 00100 ELEMNAME_ATTRIBUTE_SET, 00101 ELEMNAME_EXTENSION, 00102 ELEMNAME_FOR_EACH, 00103 ELEMNAME_KEY, 00104 ELEMNAME_IF, 00105 ELEMNAME_IMPORT, 00106 ELEMNAME_INCLUDE, 00107 ELEMNAME_CALL_TEMPLATE, 00108 ELEMNAME_PARAM, 00109 ELEMNAME_NUMBER, 00110 ELEMNAME_OTHERWISE, 00111 ELEMNAME_PI, 00112 ELEMNAME_PRESERVE_SPACE, 00113 ELEMNAME_TEMPLATE, 00114 ELEMNAME_SORT, 00115 ELEMNAME_STRIP_SPACE, 00116 ELEMNAME_STYLESHEET, 00117 ELEMNAME_TEXT, 00118 ELEMNAME_VALUE_OF, 00119 ELEMNAME_WHEN, 00120 ELEMNAME_FALLBACK, 00121 ELEMNAME_ELEMENT, 00122 00123 ELEMNAME_APPLY_IMPORTS, 00124 00125 ELEMNAME_VARIABLE, 00126 ELEMNAME_MESSAGE, 00127 00128 ELEMNAME_OUTPUT, 00129 ELEMNAME_DECIMAL_FORMAT, 00130 ELEMNAME_NAMESPACE_ALIAS, 00131 00132 // This one doesn't really have a name. 00133 // It's used for any literal result 00134 // element. 00135 ELEMNAME_LITERAL_RESULT, 00136 00137 // This one doesn't really have a name. 00138 // It's used for any literal text in 00139 // the content of a literal result 00140 // element. 00141 ELEMNAME_TEXT_LITERAL_RESULT, 00142 00143 // This one doesn't really have a name. 00144 // It's used for forward-compatible 00145 // processing. 00146 ELEMNAME_FORWARD_COMPATIBLE, 00147 00148 // Extension handling. 00149 ELEMNAME_EXTENSION_CALL, 00150 ELEMNAME_EXTENSION_HANDLER 00151 }; 00152 00153 typedef URISupport::URLAutoPtrType URLAutoPtrType; 00154 00155 explicit 00156 StylesheetConstructionContext(MemoryManagerType& theManager); 00157 00158 virtual 00159 ~StylesheetConstructionContext(); 00160 00161 00166 virtual void 00167 reset() = 0; 00168 00177 virtual StylesheetRoot* 00178 create(const XalanDOMString& theBaseIdentifier) = 0; 00179 00188 virtual StylesheetRoot* 00189 create(const XSLTInputSource& theInputSource) = 0; 00190 00200 virtual Stylesheet* 00201 create( 00202 StylesheetRoot& theStylesheetRoot, 00203 const XalanDOMString& theBaseIdentifier) = 0; 00204 00211 virtual void 00212 destroy(StylesheetRoot* theStylesheetRoot) = 0; 00213 00220 virtual URLAutoPtrType 00221 getURLFromString(const XalanDOMString& urlString) = 0; 00222 00229 virtual XalanDOMString& 00230 getURLStringFromString(const XalanDOMString& urlString, 00231 XalanDOMString& theResult) = 0; 00232 00240 virtual URLAutoPtrType 00241 getURLFromString( 00242 const XalanDOMString& urlString, 00243 const XalanDOMString& base) = 0; 00244 00252 virtual XalanDOMString& 00253 getURLStringFromString( 00254 const XalanDOMString& urlString, 00255 const XalanDOMString& base, 00256 XalanDOMString& theResult) = 0; 00257 00264 virtual const XalanDOMString& 00265 getXSLTNamespaceURI() const = 0; 00266 00277 virtual XPath* 00278 createMatchPattern( 00279 const LocatorType* locator, 00280 const XalanDOMString& str, 00281 const PrefixResolver& resolver) = 0; 00282 00293 virtual XPath* 00294 createMatchPattern( 00295 const LocatorType* locator, 00296 const XalanDOMChar* str, 00297 const PrefixResolver& resolver) = 0; 00298 00309 virtual XPath* 00310 createXPath( 00311 const LocatorType* locator, 00312 const XalanDOMString& str, 00313 const PrefixResolver& resolver) = 0; 00314 00325 virtual XPath* 00326 createXPath( 00327 const LocatorType* locator, 00328 const XalanDOMChar* str, 00329 const PrefixResolver& resolver) = 0; 00330 00341 virtual XPath* 00342 createXPath( 00343 const LocatorType* locator, 00344 const XalanDOMChar* str, 00345 XalanDOMString::size_type len, 00346 const PrefixResolver& resolver) = 0; 00347 00353 virtual const LocatorType* 00354 getLocatorFromStack() const = 0; 00355 00361 virtual void 00362 pushLocatorOnStack(const LocatorType* locator) = 0; 00363 00367 virtual void 00368 popLocatorStack() = 0; 00369 00375 virtual const XalanDOMString& 00376 getXalanXSLNameSpaceURL() const = 0; 00377 00389 virtual XalanDocument* 00390 parseXML( 00391 const XalanDOMString& urlString, 00392 DocumentHandlerType* docHandler, 00393 XalanDocument* docToRegister) = 0; 00394 00404 virtual bool 00405 isXMLSpaceAttribute( 00406 const XalanDOMChar* theAttributeName, 00407 const Stylesheet& theStylesheet, 00408 const LocatorType* theLocator = 0) = 0; 00409 00419 virtual bool 00420 isXSLUseAttributeSetsAttribute( 00421 const XalanDOMChar* theAttributeName, 00422 const Stylesheet& theStylesheet, 00423 const LocatorType* theLocator = 0) = 0; 00424 00434 virtual bool 00435 isValidQName( 00436 const XalanDOMChar* theName, 00437 const Stylesheet& theStylesheet, 00438 const LocatorType* theLocator = 0) = 0; 00439 00447 virtual eElementToken 00448 getElementToken(const XalanDOMString& name) const = 0; 00449 00455 virtual double 00456 getXSLTVersionSupported() const = 0; 00457 00458 virtual const XalanDOMString& 00459 getPooledString(const XalanDOMString& theString) = 0; 00460 00461 virtual const XalanDOMString& 00462 getPooledString( 00463 const XalanDOMChar* theString, 00464 XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; 00465 00466 virtual XalanDOMString& 00467 getCachedString() = 0; 00468 00469 virtual bool 00470 releaseCachedString(XalanDOMString& theString) = 0; 00471 00479 virtual XalanDOMChar* 00480 allocateXalanDOMCharVector(XalanDOMString::size_type theLength) = 0; 00481 00491 virtual XalanDOMChar* 00492 allocateXalanDOMCharVector( 00493 const XalanDOMChar* theString, 00494 XalanDOMString::size_type theLength = XalanDOMString::npos, 00495 bool fTerminate = true) = 0; 00496 00506 virtual const AVT* 00507 createAVT( 00508 const LocatorType* locator, 00509 const XalanDOMChar* name, 00510 const XalanDOMChar* stringedValue, 00511 const PrefixResolver& resolver) = 0; 00512 00521 virtual const AVTPart* 00522 createAVTPart( 00523 const XalanDOMChar* theString, 00524 XalanDOMString::size_type theLength = XalanDOMString::npos) = 0; 00525 00535 virtual const AVTPart* 00536 createAVTPart( 00537 const LocatorType* locator, 00538 const XalanDOMChar* str, 00539 XalanDOMString::size_type len, 00540 const PrefixResolver& resolver) = 0; 00541 00549 virtual const AVT** 00550 allocateAVTPointerVector(size_type theLength) = 0; 00551 00559 virtual const AVTPart** 00560 allocateAVTPartPointerVector(size_type theLength) = 0; 00561 00571 virtual const XalanQName* 00572 createXalanQName( 00573 const XalanDOMString& qname, 00574 const NamespacesStackType& namespaces, 00575 const LocatorType* locator = 0, 00576 bool fUseDefault = false) = 0; 00577 00587 virtual const XalanQName* 00588 createXalanQName( 00589 const XalanDOMChar* qname, 00590 const NamespacesStackType& namespaces, 00591 const LocatorType* locator = 0, 00592 bool fUseDefault = false) = 0; 00593 00605 virtual const XalanQName** 00606 tokenizeQNames( 00607 size_type& count, 00608 const XalanDOMChar* qnameTokens, 00609 const NamespacesStackType& namespaces, 00610 const LocatorType* locator = 0, 00611 bool fUseDefault = false) = 0; 00612 00626 virtual ElemTemplateElement* 00627 createElement( 00628 int token, 00629 Stylesheet& stylesheetTree, 00630 const AttributeListType& atts, 00631 const LocatorType* locator = 0) = 0; 00632 00646 virtual ElemTemplateElement* 00647 createElement( 00648 int token, 00649 Stylesheet& stylesheetTree, 00650 const XalanDOMChar* name, 00651 const AttributeListType& atts, 00652 const LocatorType* locator = 0) = 0; 00653 00668 virtual ElemTemplateElement* 00669 createElement( 00670 Stylesheet& stylesheetTree, 00671 const XalanDOMChar* chars, 00672 XalanDOMString::size_type length, 00673 bool preserveSpace, 00674 bool disableOutputEscaping, 00675 const LocatorType* locator = 0) = 0; 00676 00691 virtual ElemTemplateElement* 00692 createElement( 00693 Stylesheet& stylesheetTree, 00694 const XalanDOMChar* name, 00695 const AttributeListType& atts, 00696 ExtensionNSHandler& handler, 00697 const LocatorType* locator = 0) = 0; 00698 00715 virtual const XalanMatchPatternData* 00716 createXalanMatchPatternData( 00717 const ElemTemplate& theTemplate, 00718 size_type thePosition, 00719 const XalanDOMString& theTargetString, 00720 const XPath& theMatchPattern, 00721 const XalanDOMString& thePatternString, 00722 XPath::eMatchScore thePriority) = 0; 00723 00724 00725 // These are inherited from XPathConstructionContext... 00726 00727 virtual void 00728 error( 00729 const XalanDOMString& msg, 00730 const XalanNode* sourceNode = 0, 00731 const ElemTemplateElement* styleNode = 0) const = 0; 00732 00733 virtual void 00734 error( 00735 const XalanDOMString& msg, 00736 const XalanNode* sourceNode, 00737 const LocatorType* locator) const = 0; 00738 00739 virtual void 00740 warn( 00741 const XalanDOMString& msg, 00742 const XalanNode* sourceNode = 0, 00743 const ElemTemplateElement* styleNode = 0) const = 0; 00744 00745 virtual void 00746 warn( 00747 const XalanDOMString& msg, 00748 const XalanNode* sourceNode, 00749 const LocatorType* locator) const = 0; 00750 00751 virtual void 00752 message( 00753 const XalanDOMString& msg, 00754 const XalanNode* sourceNode = 0, 00755 const ElemTemplateElement* styleNode = 0) const = 0; 00756 00757 virtual void 00758 message( 00759 const XalanDOMString& msg, 00760 const XalanNode* sourceNode, 00761 const LocatorType* locator) const = 0; 00762 00763 }; 00764 00765 00766 00767 XALAN_CPP_NAMESPACE_END 00768 00769 00770 00771 #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.9 |
|