File: classXSECNameSpaceExpander.html

package info (click to toggle)
xml-security-c 1.2.1-3
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 24,464 kB
  • ctags: 6,673
  • sloc: cpp: 36,830; xml: 23,415; sh: 2,365; makefile: 340; perl: 221
file content (243 lines) | stat: -rw-r--r-- 11,734 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>XML-Security-C: XSECNameSpaceExpander Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.2 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>XSECNameSpaceExpander Class Reference<br>
<small>
[<a class="el" href="group__pubsig.html">Main Signature API</a>]</small>
</h1><code>#include &lt;<a class="el" href="XSECNameSpaceExpander_8hpp-source.html">XSECNameSpaceExpander.hpp</a>&gt;</code>
<p>
Collaboration diagram for XSECNameSpaceExpander:<p><center><img src="classXSECNameSpaceExpander__coll__graph.png" border="0" usemap="#XSECNameSpaceExpander__coll__map" alt="Collaboration graph"></center>
<map name="XSECNameSpaceExpander__coll__map">
<area href="classXSECSafeBufferFormatter.html" shape="rect" coords="11,190,193,214" alt="">
<area href="classsafeBuffer.html" shape="rect" coords="89,9,171,33" alt="">
<area href="classsbFormatTarget.html" shape="rect" coords="179,100,297,124" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classXSECNameSpaceExpander-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
Class to "expand" name spaces. 
<p>
For most things, a DOM model interoperates well with XPath. Unfortunately, name-spaces are the one main problem. In particular, the XPath spec states that every element node has an attribute node for its own namespaces, and one for namespaces above that are in scope.<p>
In the DOM scheme of things, a namespace is only available in the node in which it is defined. Normally this is not a problem, you can just just refer backwards until you find the namespace you need. However, for XPath expressions that select namespace nodes, we need to actually promulgate the name-spaces down to every node where they are visible so that the XPath selection will work properly.<p>
This is important for Canonicalisation of the found nodes, but we cannot do this only in the canonicaliser as it does not internally understand how to do DSIG style XPath. So the XPath is done externally, and the resultant node set (including any selected "Expanded" attribute nodes). are passed in.<p>
The expander therefore handles the propogation of the namespace nodes, and removes the propogated nodes when it goes out of scope (or when <a class="el" href="classXSECNameSpaceExpander.html#a1">deleteAddedNamespaces()</a> is called). 
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECNameSpaceExpander.html#a0">expandNameSpaces</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Expand namespaces.  <a href="#a0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECNameSpaceExpander.html#a1">deleteAddedNamespaces</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Collapse name-spaces.  <a href="#a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECNameSpaceExpander.html#a2">nodeWasAdded</a> (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *n)</td></tr>

<tr><td colspan="2"><div class="groupHeader">Constructors and Destructors</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECNameSpaceExpander.html#z222_0">XSECNameSpaceExpander</a> (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *d)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Main constructure.  <a href="#z222_0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECNameSpaceExpander.html#z222_1">XSECNameSpaceExpander</a> (XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *f)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fragment constructor.  <a href="#z222_1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECNameSpaceExpander.html#z222_2">~XSECNameSpaceExpander</a> ()</td></tr>

</table>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="z222_0" doxytag="XSECNameSpaceExpander::XSECNameSpaceExpander"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">XSECNameSpaceExpander::XSECNameSpaceExpander           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>d</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Main constructure. 
<p>
Use this constructor to expand namespaces through an entire document.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>The DOM document to be expanded. </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="z222_1" doxytag="XSECNameSpaceExpander::XSECNameSpaceExpander"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">XSECNameSpaceExpander::XSECNameSpaceExpander           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>f</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Fragment constructor. 
<p>
Use this constructor to expand namespaces in a given fragment only. <dl compact><dt><b>Note:</b></dt><dd>The fragment does not need to be rooted in an actual document.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>The starting element of the fragment to be expanded. </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="z222_2" doxytag="XSECNameSpaceExpander::~XSECNameSpaceExpander"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">XSECNameSpaceExpander::~XSECNameSpaceExpander           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a1" doxytag="XSECNameSpaceExpander::deleteAddedNamespaces"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">void XSECNameSpaceExpander::deleteAddedNamespaces           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Collapse name-spaces. 
<p>
Delete all namespaces added in exandNameSpaces() (using the list that was created at that time     </td>
  </tr>
</table>
<a class="anchor" name="a0" doxytag="XSECNameSpaceExpander::expandNameSpaces"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">void XSECNameSpaceExpander::expandNameSpaces           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Expand namespaces. 
<p>
Perform the expansion operation and create a list of all added nodes.     </td>
  </tr>
</table>
<a class="anchor" name="a2" doxytag="XSECNameSpaceExpander::nodeWasAdded"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">bool XSECNameSpaceExpander::nodeWasAdded           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>n</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="XSECNameSpaceExpander_8hpp-source.html">XSECNameSpaceExpander.hpp</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Sun Jul 3 17:45:47 2005 for XML-Security-C by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address>
</body>
</html>