Xalan-C++ API Reference
1.12.0
xalanc
XSLT
ExtensionNSHandler.hpp
Go to the documentation of this file.
1
/*
2
* Licensed to the Apache Software Foundation (ASF) under one
3
* or more contributor license agreements. See the NOTICE file
4
* distributed with this work for additional information
5
* regarding copyright ownership. The ASF licenses this file
6
* to you under the Apache License, Version 2.0 (the "License");
7
* you may not use this file except in compliance with the License.
8
* You may obtain a copy of the License at
9
*
10
* http://www.apache.org/licenses/LICENSE-2.0
11
*
12
* Unless required by applicable law or agreed to in writing, software
13
* distributed under the License is distributed on an "AS IS" BASIS,
14
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
* See the License for the specific language governing permissions and
16
* limitations under the License.
17
*/
18
#if !defined(XALAN_EXTENSIONNSHANDLER_HEADER_GUARD)
19
#define XALAN_EXTENSIONNSHANDLER_HEADER_GUARD
20
21
22
// Base include file. Must be first.
23
#include "
XSLTDefinitions.hpp
"
24
25
26
27
// Base class
28
#include "
ExtensionFunctionHandler.hpp
"
29
30
31
32
#include <
xalanc/Include/XalanSet.hpp
>
33
34
35
36
#include <
xalanc/XalanDOM/XalanDOMString.hpp
>
37
38
39
40
#include <
xalanc/PlatformSupport/DOMStringHelper.hpp
>
41
42
43
44
namespace
XALAN_CPP_NAMESPACE
{
45
46
47
48
class
Stylesheet;
49
class
StylesheetExecutionContext;
50
class
XalanElement;
51
class
XalanNode;
52
class
XalanQName;
53
54
55
56
class
XALAN_XSLT_EXPORT
ExtensionNSHandler
:
public
ExtensionFunctionHandler
57
{
58
public
:
59
60
/**
61
* Construct a new extension namespace handler for a given extension NS.
62
* This doesn't do anything - just hang on to the namespace URI.
63
*
64
* @param namespaceUri extension namespace URI being implemented
65
*/
66
ExtensionNSHandler
(
67
const
XalanDOMString
& namespaceUri,
68
MemoryManager& theManager);
69
70
static
ExtensionNSHandler
*
71
create(
72
const
XalanDOMString
& namespaceUri,
73
MemoryManager& theManager);
74
75
/**
76
* Construct a new extension namespace handler given all the information
77
* needed.
78
*
79
* @param namespaceUri extension namespace URI being implemented
80
* @param elemNames string containing list of elements of extension NS
81
* @param funcNames string containing list of functions of extension NS
82
* @param lang language of code implementing the extension
83
* @param srcURL value of src attribute (if any) - treated as a URL
84
* or a classname depending on the value of lang. If
85
* srcURL is not null, then scriptSrc is ignored.
86
* @param scriptSrc the actual script code (if any)
87
*/
88
ExtensionNSHandler
(
89
MemoryManager& theManager,
90
const
XalanDOMString
& namespaceUri,
91
const
XalanDOMString
& elemNames,
92
const
XalanDOMString
& funcNames,
93
const
XalanDOMString
& lang,
94
const
XalanDOMString
& srcURL,
95
const
XalanDOMString
& src);
96
97
/**
98
* Set function local parts of extension NS. Super does the work; I
99
* just record that a component desc has been loaded.
100
*
101
* @param functions whitespace separated list of function names defined
102
* by this extension namespace
103
*/
104
virtual
void
105
setFunctions(
const
XalanDOMString
& funcNames);
106
107
/**
108
* Set the script data for this extension NS. Deferred to super for
109
* actual work - only record that a component desc has been loaded.
110
*
111
* @param lang language of the script
112
* @param srcURL value of src attribute (if any) - treated as a URL
113
* or a classname depending on the value of lang. If
114
* srcURL is not null, then scriptSrc is ignored.
115
* @param scriptSrc the actual script code (if any)
116
*/
117
virtual
void
118
setScript(
119
const
XalanDOMString
& lang,
120
const
XalanDOMString
& srcURL,
121
const
XalanDOMString
& scriptSrc);
122
123
/**
124
* Set element local parts of extension NS.
125
*
126
* @param elemNames whitespace separated list of element names defined
127
* by this extension namespace
128
*/
129
void
130
setElements(
const
XalanDOMString
& elemNames);
131
132
/**
133
* Tests whether a certain element name is known within this namespace.
134
*
135
* @param element name of the element being tested
136
* @return true if known, false if not
137
*/
138
bool
139
isElementAvailable (
const
XalanDOMString
& element)
const
;
140
141
/**
142
* Process a call to this extension namespace via an element. As a side
143
* effect, the results are sent to the XSLTProcessor's result tree.
144
*
145
* @param localPart element name's local part
146
* @param element extension element being processed
147
* @param stylesheetTree compiled stylesheet tree
148
* @param mode current mode
149
* @param sourceTree root of the source tree (but don't assume it's a
150
* document)
151
* @param sourceNode current context node
152
* @exception XSLProcessorException thrown if something goes wrong
153
* while running the extension handler
154
* @exception MalformedURLException if loading trouble
155
* @exception FileNotFoundException if loading trouble
156
* @exception IOException if loading trouble
157
* @exception SAXException if parsing trouble
158
*/
159
void
160
processElement (
161
StylesheetExecutionContext
& executionContext,
162
const
XalanDOMString
& localPart,
163
const
XalanElement
* element,
164
Stylesheet
& stylesheetTree,
165
const
XalanNode
* sourceTree,
166
const
XalanNode
* sourceNode,
167
const
XalanQName
& mode);
168
169
protected
:
170
171
/**
172
* Start the component up by executing any script that needs to run
173
* at startup time. This needs to happen before any functions can be
174
* called on the component.
175
*
176
*/
177
virtual
void
178
startupComponent();
179
180
private
:
181
182
typedef
XalanSet<XalanDOMString>
ExtensionSetType
;
183
184
// Extension elements of this namespace
185
ExtensionSetType
m_elements;
186
187
// True when info from the component description has been loaded. This gets
188
// set as soon as any of the info has been specified. If this is false,
189
// when processElement or processFunction is called it will use the
190
// namespace URI as a URL and try to load that location as the component
191
// description
192
bool
m_componentDescLoaded;
193
194
/**
195
* Load the component spec for this extension namespace taking the URI
196
* of this namespace as the URL to read from.
197
*/
198
void
199
loadComponentDescription();
200
201
/**
202
* extract the text nodes and CDATA content children of the given
203
* elem and return as a string. Any other types of node children
204
* are ignored
205
*
206
* @param elem element whose text and cdata children are to be
207
* concatenated together.
208
*
209
* @return string resulting from concatanating the text/cdata child
210
* nodes' values.
211
*/
212
static
XalanDOMString
&
213
getScriptString(
const
XalanElement
& elem,
XalanDOMString
& theResult);
214
};
215
216
217
218
}
219
220
221
222
#endif // XALAN_EXTENSIONNSHANDLER_HEADER_GUARD
xalanc::ExtensionNSHandler
Definition:
ExtensionNSHandler.hpp:56
xalanc::XalanSet< XalanDOMString >
XALAN_CPP_NAMESPACE
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
Definition:
XalanVersion.hpp:76
ExtensionFunctionHandler.hpp
xalanc::StylesheetExecutionContext
Definition:
StylesheetExecutionContext.hpp:106
xalanc::XalanNode
Definition:
XalanNode.hpp:38
XalanDOMString.hpp
XALAN_XSLT_EXPORT
#define XALAN_XSLT_EXPORT
Definition:
XSLTDefinitions.hpp:27
xalanc::ExtensionFunctionHandler
Class handling an extension namespace for XPath.
Definition:
ExtensionFunctionHandler.hpp:58
DOMStringHelper.hpp
XSLTDefinitions.hpp
xalanc::XalanElement
Definition:
XalanElement.hpp:44
xalanc::Stylesheet
This class represents the base stylesheet or an "import" stylesheet.
Definition:
Stylesheet.hpp:86
xalanc::XalanQName
Class to represent a qualified name.
Definition:
XalanQName.hpp:70
xalanc::XalanDOMString
Definition:
XalanDOMString.hpp:45
XalanSet.hpp
Copyright © 1999-2020 The Apache Software Foundation. All Rights Reserved.
Generated on Sun May 31 2020 10:37:21 for Xalan-C++ API Reference by
1.8.17