|
1 "{ Package: 'stx:goodies/xmlsuite/xquery' }" |
|
2 |
|
3 "{ NameSpace: XQuery }" |
|
4 |
|
5 Object subclass:#XQuerySequenceItem |
|
6 instanceVariableNames:'item' |
|
7 classVariableNames:'' |
|
8 poolDictionaries:'' |
|
9 category:'XQuery-Interpreter' |
|
10 ! |
|
11 |
|
12 |
|
13 !XQuerySequenceItem class methodsFor:'instance creation'! |
|
14 |
|
15 with: item |
|
16 |
|
17 ^self new |
|
18 item: item; |
|
19 type: self typeNode |
|
20 |
|
21 "Created: / 20-09-2007 / 12:16:18 / janfrog" |
|
22 ! |
|
23 |
|
24 withAttribute: node |
|
25 |
|
26 ^self new item: node |
|
27 |
|
28 "Created: / 21-03-2007 / 14:31:40 / janfrog" |
|
29 "Modified: / 05-12-2007 / 15:58:47 / janfrog" |
|
30 ! |
|
31 |
|
32 withBoolean: boolean |
|
33 |
|
34 ^self new |
|
35 item: boolean |
|
36 |
|
37 "Created: / 21-03-2007 / 14:24:49 / janfrog" |
|
38 "Modified: / 05-12-2007 / 15:58:58 / janfrog" |
|
39 ! |
|
40 |
|
41 withNode: node |
|
42 |
|
43 ^self new |
|
44 item: node |
|
45 |
|
46 "Created: / 21-03-2007 / 14:31:40 / janfrog" |
|
47 "Modified: / 05-12-2007 / 15:59:03 / janfrog" |
|
48 ! |
|
49 |
|
50 withNumber: number |
|
51 |
|
52 ^self new item: number |
|
53 |
|
54 "Created: / 21-03-2007 / 14:24:29 / janfrog" |
|
55 "Modified: / 05-12-2007 / 15:21:08 / janfrog" |
|
56 ! |
|
57 |
|
58 withString: string |
|
59 |
|
60 ^self new |
|
61 item: string |
|
62 |
|
63 "Created: / 21-03-2007 / 15:45:27 / janfrog" |
|
64 "Modified: / 05-12-2007 / 15:59:08 / janfrog" |
|
65 ! |
|
66 |
|
67 withText: string |
|
68 |
|
69 ^self new |
|
70 item: (XQueryConstructedNode new |
|
71 nodeType: XQueryConstructedNode nodeTypeText; |
|
72 nodeValue: string) |
|
73 |
|
74 "Created: / 28-03-2007 / 22:50:10 / janfrog" |
|
75 "Modified: / 05-12-2007 / 15:59:13 / janfrog" |
|
76 ! ! |
|
77 |
|
78 !XQuerySequenceItem class methodsFor:'accessing - type codes'! |
|
79 |
|
80 typeAttribute |
|
81 |
|
82 ^TypeItem attribute |
|
83 |
|
84 "Created: / 07-07-2006 / 16:16:21 / ked" |
|
85 "Modified: / 05-12-2007 / 15:18:13 / janfrog" |
|
86 ! |
|
87 |
|
88 typeBoolean |
|
89 <resource: #obsolete> |
|
90 ^self typeXSBoolean |
|
91 |
|
92 "Created: / 07-07-2006 / 16:17:20 / ked" |
|
93 "Modified: / 05-12-2007 / 15:22:42 / janfrog" |
|
94 ! |
|
95 |
|
96 typeElement |
|
97 |
|
98 ^TypeElement instance |
|
99 |
|
100 "Created: / 05-12-2007 / 15:55:13 / janfrog" |
|
101 ! |
|
102 |
|
103 typeNode |
|
104 ^TypeItem node |
|
105 |
|
106 "Created: / 07-07-2006 / 16:15:39 / ked" |
|
107 "Modified: / 05-12-2007 / 15:20:09 / janfrog" |
|
108 ! |
|
109 |
|
110 typeNumber |
|
111 ^#number. |
|
112 |
|
113 "Created: / 07-07-2006 / 20:40:38 / ked" |
|
114 ! |
|
115 |
|
116 typeQName |
|
117 |
|
118 <resource: #obsolete> |
|
119 ^self typeXSQName |
|
120 |
|
121 "Created: / 03-09-2006 / 11:53:26 / ked" |
|
122 "Modified: / 05-12-2007 / 15:24:38 / janfrog" |
|
123 ! |
|
124 |
|
125 typeString |
|
126 <resource: #obsolete> |
|
127 ^self typeXSString |
|
128 |
|
129 "Created: / 07-07-2006 / 16:17:06 / ked" |
|
130 "Modified: / 05-12-2007 / 15:23:24 / janfrog" |
|
131 ! |
|
132 |
|
133 typeXSBoolean |
|
134 ^TypeItem xsBoolean |
|
135 |
|
136 "Created: / 05-12-2007 / 15:22:13 / janfrog" |
|
137 ! |
|
138 |
|
139 typeXSDecimal |
|
140 |
|
141 ^TypeXSDecimal instance |
|
142 |
|
143 "Created: / 05-12-2007 / 15:43:52 / janfrog" |
|
144 ! |
|
145 |
|
146 typeXSFloat |
|
147 |
|
148 ^TypeItem xsFloat |
|
149 |
|
150 "Created: / 05-12-2007 / 15:15:54 / janfrog" |
|
151 ! |
|
152 |
|
153 typeXSInteger |
|
154 |
|
155 ^TypeItem xsInteger |
|
156 |
|
157 "Created: / 05-12-2007 / 15:29:06 / janfrog" |
|
158 ! |
|
159 |
|
160 typeXSNCName |
|
161 ^TypeItem xsNCName |
|
162 |
|
163 "Created: / 05-12-2007 / 15:23:03 / janfrog" |
|
164 ! |
|
165 |
|
166 typeXSQName |
|
167 |
|
168 ^TypeItem xsQName |
|
169 |
|
170 "Created: / 05-12-2007 / 15:24:38 / janfrog" |
|
171 ! |
|
172 |
|
173 typeXSString |
|
174 ^TypeItem xsString |
|
175 |
|
176 "Created: / 07-07-2006 / 16:17:06 / ked" |
|
177 "Modified: / 05-12-2007 / 15:38:47 / janfrog" |
|
178 ! ! |
|
179 |
|
180 !XQuerySequenceItem methodsFor:'accessing'! |
|
181 |
|
182 documentAdaptor |
|
183 |
|
184 ^self item documentAdaptor |
|
185 |
|
186 "Created: / 24-10-2007 / 16:08:30 / janfrog" |
|
187 ! |
|
188 |
|
189 item |
|
190 ^ item |
|
191 |
|
192 "Created: / 07-07-2006 / 16:18:50 / ked" |
|
193 ! |
|
194 |
|
195 item:something |
|
196 |
|
197 self assert: item isNil. |
|
198 item := something. |
|
199 |
|
200 "Created: / 07-07-2006 / 16:18:50 / ked" |
|
201 "Modified: / 07-10-2006 / 22:50:43 / ked" |
|
202 ! |
|
203 |
|
204 nodeId |
|
205 |
|
206 ^self item nodeId |
|
207 |
|
208 "Created: / 24-10-2007 / 16:08:35 / janfrog" |
|
209 ! |
|
210 |
|
211 stringValue |
|
212 |
|
213 ^self containsAtomicValue |
|
214 ifTrue:[item printString] |
|
215 ifFalse:[item xpathValue] |
|
216 |
|
217 "Created: / 19-11-2007 / 14:20:59 / janfrog" |
|
218 ! |
|
219 |
|
220 type |
|
221 |
|
222 ^"type"item xqueryType |
|
223 |
|
224 "Created: / 07-07-2006 / 16:18:51 / ked" |
|
225 "Modified: / 05-12-2007 / 15:12:13 / janfrog" |
|
226 ! ! |
|
227 |
|
228 !XQuerySequenceItem methodsFor:'converting'! |
|
229 |
|
230 asDocumentFragment |
|
231 |
|
232 | domBuilder | |
|
233 domBuilder := XMLv2::DOM3Builder new. |
|
234 XQueryResultXMLReader new |
|
235 setDocumentAdaptor: XPathDocumentAdaptorProxy new; |
|
236 setContentHandler: domBuilder; |
|
237 visit: item. |
|
238 ^domBuilder document |
|
239 |
|
240 "Created: / 10-12-2006 / 20:30:57 / janfrog" |
|
241 "Modified: / 14-12-2006 / 14:59:20 / janfrog" |
|
242 ! |
|
243 |
|
244 asString |
|
245 |
|
246 ^item asString |
|
247 |
|
248 "Created: / 12-10-2006 / 17:33:20 / ked" |
|
249 ! |
|
250 |
|
251 asXQueryConstructedNode |
|
252 |
|
253 (self type isSubtypeOf: self class typeNode) ifTrue:[^item]. |
|
254 (self type isSubtypeOf: self class typeAttribute) ifTrue:[^item]. |
|
255 |
|
256 ^XQueryConstructedNode new |
|
257 nodeType: XQueryConstructedNode nodeTypeText; |
|
258 nodeValue: item asString |
|
259 |
|
260 "Created: / 29-03-2007 / 13:37:19 / janfrog" |
|
261 "Modified: / 05-12-2007 / 21:38:30 / janfrog" |
|
262 ! |
|
263 |
|
264 value |
|
265 |
|
266 | children | |
|
267 |
|
268 (self type isSubtypeOf: XQuerySequenceItem typeNode) ifTrue:[ |
|
269 item xpathIsText ifTrue:[ |
|
270 "TODO - pokus o typovou 'heuristiku' na beztypovych datech" |
|
271 ^Object errorSignal |
|
272 handle:[:ex | ex returnWith:(item xpathValue)] |
|
273 do:[item xpathValue asNumber]. |
|
274 ]. |
|
275 item xpathIsAttribute ifTrue:[ |
|
276 ^item xpathValue |
|
277 ] ifFalse:[ |
|
278 self assert: item xpathIsElement. |
|
279 |
|
280 children := item xpathChild. |
|
281 |
|
282 children size = 0 ifTrue:[ |
|
283 ^nil. |
|
284 ]. |
|
285 |
|
286 self assert: children size = 1. |
|
287 self assert: children first xpathIsText. |
|
288 |
|
289 "TODO - pokus o typovou 'heuristiku' na beztypovych datech" |
|
290 ^Object errorSignal |
|
291 handle:[:ex | ex returnWith:(children first xpathValue)] |
|
292 do:[children first xpathValue asNumber]. |
|
293 ] |
|
294 ] ifFalse:[ |
|
295 ^item |
|
296 ]. |
|
297 |
|
298 "Created: / 06-10-2006 / 16:17:20 / ked" |
|
299 "Modified: / 19-10-2006 / 23:11:01 / ked" |
|
300 "Modified: / 05-12-2007 / 16:03:57 / janfrog" |
|
301 ! ! |
|
302 |
|
303 !XQuerySequenceItem methodsFor:'initialization & release'! |
|
304 |
|
305 releaseResources |
|
306 |
|
307 ^item releaseResources |
|
308 |
|
309 "Created: / 12-12-2006 / 10:44:07 / janfrog" |
|
310 ! ! |
|
311 |
|
312 !XQuerySequenceItem methodsFor:'printing'! |
|
313 |
|
314 printOn: aStream |
|
315 |
|
316 item printOn: aStream. |
|
317 aStream |
|
318 space; |
|
319 nextPut:$[; |
|
320 nextPutAll:self type printString; |
|
321 nextPut:$]. |
|
322 |
|
323 "Created: / 21-03-2007 / 15:41:51 / janfrog" |
|
324 "Modified: / 05-12-2007 / 20:48:26 / janfrog" |
|
325 ! ! |
|
326 |
|
327 !XQuerySequenceItem methodsFor:'testing'! |
|
328 |
|
329 containsAtomicValue |
|
330 |
|
331 ^self containsNode not |
|
332 |
|
333 "Created: / 18-11-2007 / 09:34:22 / janfrog" |
|
334 ! |
|
335 |
|
336 containsCellStoreNode |
|
337 |
|
338 ^self containsNode and:[item isCellStoreNode] |
|
339 |
|
340 "Created: / 05-12-2007 / 10:06:30 / janfrog" |
|
341 ! |
|
342 |
|
343 containsNode |
|
344 |
|
345 ^item isKindOf: XQueryAbstractNode |
|
346 |
|
347 "Created: / 18-11-2007 / 09:34:08 / janfrog" |
|
348 ! ! |
|
349 |
|
350 !XQuerySequenceItem class methodsFor:'documentation'! |
|
351 |
|
352 version |
|
353 ^ '$Header: /opt/data/cvs/stx/goodies/xmlsuite/xquery/XQuery__XQuerySequenceItem.st,v 1.10 2007-12-05 21:11:49 vranyj1 Exp $' |
|
354 ! ! |