Project

General

Profile

1 3032 perry
<?xml version="1.0" encoding="UTF-8"?>
2
3
4
5
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
6
<taglib>
7
  <tlibversion>1.0</tlibversion>
8
  <jspversion>1.1</jspversion>
9
  <shortname>xtags</shortname>
10
  <uri>http://jakarta.apache.org/taglibs/xtags-1.0</uri>
11
  <info>XTags is a JSP tag library for working with XSLT and XPath.
12
    XTags lets you navigate, process and style XML documents directly in JSP.
13
  XTags makes heavy use of the XPath expression language.
14
      For a good tutorial on XPath you could try the either the
15
      Zvon tutorial or the
16
      specification.
17
  XTags is currently built on top of dom4j the
18
    flexible open source XML framework for the Java platform.
19
    Though increasingly XTags will use a pluggable XPath engine to support
20
    the travesal of DOM and Java Beans too.
21
  To begin with you need to parse an XML document from somewhere.
22
    You can parse a variety of sources of XML documents from local resources,
23
    the output of JSP or external web services.
24
  You can parse the body of the tag
25
26
    &lt;xtags:parse&gt;
27
        &lt;root&gt;
28
            &lt;child/&gt;
29
        &lt;/root&gt;
30
    &lt;/xtags:parse&gt;
31
Or parse an absolute URL via the "url" attribute
32
33
    &lt;xtags:parse url="http://something.com"/&gt;
34
You can parse a web app resource using an absolute URI relative to the web-app
35
  context using the "uri" attribute
36
37
    &lt;xtags:parse uri="/data/foo.xml"/&gt;
38
Or you can use a URI relative to the the current JSP file
39
40
    &lt;xtags:parse uri="foo.xml"/&gt;
41
Then for more complex
42
  requirements such as parsing the output of a piece of JSP, you can do the following (provided you are using a JSP 1.2 container)
43
44
    &lt;xtags:parse&gt;
45
        &lt;jsp:include page="foo.jsp"/&gt;
46
    &lt;/xtags:parse&gt;
47
Until then you can use the IO tag library to make these requests such as
48
49
    &lt;xtags:parse&gt;
50
        &lt;io:request url="/foo.jsp"/&gt;
51
    &lt;/xtags:parse&gt;
52
Though the above would result in a seperate HTTP request which would loose
53
  all page, request and session scope state.
54
  So if it must be in the same request the following should work
55
  though care should be taken to avoid scripting variable clashes
56
57
    &lt;xtags:parse&gt;
58
        &lt;%@ include file="/foo.jsp" %&gt;
59
    &lt;/xtags:parse&gt;
60
To parse the output of an XML-RPC (or SOAP) call, using the IO taglib
61
  you could do the following.
62
63
    &lt;xtags:parse&gt;
64
        &lt;io:xmlrpc url="/xmlrpc_echo.jsp"&gt;
65
         &lt;io:pipe&gt;
66
          &lt;methodCall&gt;
67
             &lt;methodName&gt;examples.getStateName&lt;/methodName&gt;
68
             &lt;params&gt;
69
                &lt;param&gt;
70
                   &lt;value&gt;&lt;i4&gt;41&lt;/i4&gt;&lt;/value&gt;
71
                   &lt;/param&gt;
72
                &lt;/params&gt;
73
             &lt;/methodCall&gt;
74
         &lt;/io:pipe&gt;
75
        &lt;/io:xmlrpc&gt;
76
77
    &lt;/xtags:parse&gt;
78
Once you have a document parsed you can navigate around its structure using XPath
79
    expressions in a similar manner to that used in XSLT.Loops are as follows (an optional variable id can be specified to define a
80
  scriptlet expression inside the loop):-
81
82
  &lt;xtags:forEach select="expression"&gt;
83
    ...
84
  &lt;/xtags:forEach&gt;
85
Simple conditional branching is:-
86
87
  &lt;xtags:if test="booeanExpression"&gt;
88
    ...
89
  &lt;/xtags:if&gt;
90
More complex conditional branching is:-
91
92
  &lt;xtags:choose&gt;
93
    &lt;xtags:when test="booeanExpression"&gt;
94
      ...
95
    &lt;/xtags:when&gt;
96
    &lt;xtags:when test="booeanExpression2"&gt;
97
      ...
98
    &lt;/xtags:when&gt;
99
    &lt;xtags:otherwise&gt;
100
      ...
101
    &lt;/xtags:otherwise&gt;
102
  &lt;/xtags:choose&gt;
103
Expression evaluation
104
105
  &lt;xtags:valueOf select="expression"/&gt;
106
Defining scriptlet variables
107
108
  &lt;xtags:variable id="variableName" select="expression"/&gt;
109
All these tags are very similar to their XSLT equivalents, so anyone who's
110
  done XSLT before should find them familiar.
111
  There's also an &lt;xtags:style&gt; tag which performs complete XSL transform
112
  in one tag.
113
  Accessing JSP scopes from XPathXPath expressions can use variables with the syntax $foo.
114
  XTags binds these variables to either page/request/session/application scope
115
  attributes or request parameters which allows xtags to be used as a
116
  conditional logic scripting language too - even without the existence of XML
117
  documents.
118
  A prefix can be used to denote the exact JSP scope from which a variable comes
119
    from such as $request:foo to denote request scope.
120
    There now follows a full breakdown of all the current JSP scopes
121
  $foomaps to pageContext.findAttribute("foo")$page:foomaps to page scope$request:foomaps to request scope$session:foomaps to session scope$app:foomaps to application scope$param:foomaps to request.getParameter("foo")$initParam:foomaps to request.getInitParameter("foo")$cookie:foomaps to the cookie's value for name foo$header:foomaps to request.getHeader("foo") For example, the following JSP would branch logically based on the value of
122
  the (say) request parameter "param":-
123
124
  &lt;xtags:choose&gt;
125
    &lt;xtags:when test="$param='a'"&gt;
126
      current param is 'a'
127
    &lt;/xtags:when&gt;
128
    &lt;xtags:when test="$param='b'"&gt;
129
      current param is 'b'
130
    &lt;/xtags:when&gt;
131
    &lt;xtags:otherwise&gt;
132
      no valid param selected
133
    &lt;/xtags:otherwise&gt;
134
  &lt;/xtags:choose&gt;
135
136
  XTags even supports the &lt;xtags:stylesheet&gt; &lt;xtags:template&gt; and
137
  &lt;xtags:applyTemplates&gt; tags from XSLT too though the body of a template must
138
  be an Action object or a seperate JSP file.
139
  </info>
140
  <tag>
141
    <name>style</name>
142
    <tagclass>org.apache.taglibs.xtags.xslt.StyleTag</tagclass>
143
    <bodycontent>JSP</bodycontent>
144
    <attribute>
145
      <name>document</name>
146
      <required>false</required>
147
      <rtexprvalue>true</rtexprvalue>
148
    </attribute>
149
    <attribute>
150
      <name>xml</name>
151
      <required>false</required>
152
      <rtexprvalue>true</rtexprvalue>
153
    </attribute>
154
    <attribute>
155
      <name>xmlReader</name>
156
      <required>false</required>
157
      <rtexprvalue>true</rtexprvalue>
158
    </attribute>
159
    <attribute>
160
      <name>xmlSource</name>
161
      <required>false</required>
162
      <rtexprvalue>true</rtexprvalue>
163
    </attribute>
164
    <attribute>
165
      <name>xsl</name>
166
      <required>false</required>
167
      <rtexprvalue>true</rtexprvalue>
168
    </attribute>
169
    <attribute>
170
      <name>xslReader</name>
171
      <required>false</required>
172
      <rtexprvalue>true</rtexprvalue>
173
    </attribute>
174
    <attribute>
175
      <name>xslSource</name>
176
      <required>false</required>
177
      <rtexprvalue>true</rtexprvalue>
178
    </attribute>
179
    <attribute>
180
      <name>result</name>
181
      <required>false</required>
182
      <rtexprvalue>true</rtexprvalue>
183
    </attribute>
184
    <attribute>
185
      <name>writer</name>
186
      <required>false</required>
187
      <rtexprvalue>true</rtexprvalue>
188
    </attribute>
189
    <attribute>
190
      <name>outputMethod</name>
191
      <required>false</required>
192
      <rtexprvalue>true</rtexprvalue>
193
    </attribute>
194
  </tag>
195
  <tag>
196
    <name>param</name>
197
    <tagclass>org.apache.taglibs.xtags.xslt.ParamTag</tagclass>
198
    <bodycontent>JSP</bodycontent>
199
    <attribute>
200
      <name>name</name>
201
      <required>true</required>
202
      <rtexprvalue>true</rtexprvalue>
203
    </attribute>
204
    <attribute>
205
      <name>value</name>
206
      <required>false</required>
207
      <rtexprvalue>true</rtexprvalue>
208
    </attribute>
209
  </tag>
210
  <tag>
211
    <name>parse</name>
212
    <tagclass>org.apache.taglibs.xtags.xpath.ParseTag</tagclass>
213
    <teiclass>org.apache.taglibs.xtags.xpath.ParseTagExtraInfo</teiclass>
214
    <bodycontent>JSP</bodycontent>
215
    <attribute>
216
      <name>id</name>
217
      <required>false</required>
218
      <rtexprvalue>false</rtexprvalue>
219
    </attribute>
220
    <attribute>
221
      <name>uri</name>
222
      <required>false</required>
223
      <rtexprvalue>true</rtexprvalue>
224
    </attribute>
225
    <attribute>
226
      <name>url</name>
227
      <required>false</required>
228
      <rtexprvalue>true</rtexprvalue>
229
    </attribute>
230
    <attribute>
231
      <name>reader</name>
232
      <required>false</required>
233
      <rtexprvalue>true</rtexprvalue>
234
    </attribute>
235
    <attribute>
236
      <name>validate</name>
237
      <required>false</required>
238
      <rtexprvalue>true</rtexprvalue>
239
    </attribute>
240
  </tag>
241
  <tag>
242
    <name>valueOf</name>
243
    <tagclass>org.apache.taglibs.xtags.xpath.ValueOfTag</tagclass>
244
    <bodycontent>empty</bodycontent>
245
    <attribute>
246
      <name>select</name>
247
      <required>true</required>
248
      <rtexprvalue>true</rtexprvalue>
249
    </attribute>
250
    <attribute>
251
      <name>context</name>
252
      <required>false</required>
253
      <rtexprvalue>true</rtexprvalue>
254
    </attribute>
255
  </tag>
256
  <tag>
257
    <name>forEach</name>
258
    <tagclass>org.apache.taglibs.xtags.xpath.ForEachTag</tagclass>
259
    <teiclass>org.apache.taglibs.xtags.xpath.ForEachTagExtraInfo</teiclass>
260
    <bodycontent>JSP</bodycontent>
261
    <attribute>
262
      <name>select</name>
263
      <required>true</required>
264
      <rtexprvalue>true</rtexprvalue>
265
    </attribute>
266
    <attribute>
267
      <name>sort</name>
268
      <required>false</required>
269
      <rtexprvalue>true</rtexprvalue>
270
    </attribute>
271
    <attribute>
272
      <name>distinct</name>
273
      <required>false</required>
274
      <rtexprvalue>true</rtexprvalue>
275
    </attribute>
276
    <attribute>
277
      <name>ascending</name>
278
      <required>false</required>
279
      <rtexprvalue>true</rtexprvalue>
280
    </attribute>
281
    <attribute>
282
      <name>context</name>
283
      <required>false</required>
284
      <rtexprvalue>true</rtexprvalue>
285
    </attribute>
286
    <attribute>
287
      <name>id</name>
288
      <required>false</required>
289
      <rtexprvalue>false</rtexprvalue>
290
    </attribute>
291
    <attribute>
292
      <name>type</name>
293
      <required>false</required>
294
      <rtexprvalue>false</rtexprvalue>
295
    </attribute>
296
  </tag>
297
  <tag>
298
    <name>choose</name>
299
    <tagclass>org.apache.taglibs.xtags.xpath.ChooseTag</tagclass>
300
    <bodycontent>JSP</bodycontent>
301
  </tag>
302
  <tag>
303
    <name>when</name>
304
    <tagclass>org.apache.taglibs.xtags.xpath.WhenTag</tagclass>
305
    <bodycontent>JSP</bodycontent>
306
    <attribute>
307
      <name>test</name>
308
      <required>true</required>
309
      <rtexprvalue>true</rtexprvalue>
310
    </attribute>
311
    <attribute>
312
      <name>context</name>
313
      <required>false</required>
314
      <rtexprvalue>true</rtexprvalue>
315
    </attribute>
316
  </tag>
317
  <tag>
318
    <name>otherwise</name>
319
    <tagclass>org.apache.taglibs.xtags.xpath.OtherwiseTag</tagclass>
320
    <bodycontent>JSP</bodycontent>
321
  </tag>
322
  <tag>
323
    <name>break</name>
324
    <tagclass>org.apache.taglibs.xtags.xpath.BreakTag</tagclass>
325
    <bodycontent>empty</bodycontent>
326
  </tag>
327
  <tag>
328
    <name>if</name>
329
    <tagclass>org.apache.taglibs.xtags.xpath.IfTag</tagclass>
330
    <bodycontent>JSP</bodycontent>
331
    <attribute>
332
      <name>test</name>
333
      <required>true</required>
334
      <rtexprvalue>true</rtexprvalue>
335
    </attribute>
336
    <attribute>
337
      <name>context</name>
338
      <required>false</required>
339
      <rtexprvalue>true</rtexprvalue>
340
    </attribute>
341
  </tag>
342
  <tag>
343
    <name>variable</name>
344
    <tagclass>org.apache.taglibs.xtags.xpath.VariableTag</tagclass>
345
    <teiclass>org.apache.taglibs.xtags.xpath.VariableTagExtraInfo</teiclass>
346
    <bodycontent>empty</bodycontent>
347
    <attribute>
348
      <name>id</name>
349
      <required>true</required>
350
      <rtexprvalue>false</rtexprvalue>
351
    </attribute>
352
    <attribute>
353
      <name>type</name>
354
      <required>false</required>
355
      <rtexprvalue>false</rtexprvalue>
356
    </attribute>
357
    <attribute>
358
      <name>select</name>
359
      <required>true</required>
360
      <rtexprvalue>true</rtexprvalue>
361
    </attribute>
362
    <attribute>
363
      <name>context</name>
364
      <required>false</required>
365
      <rtexprvalue>true</rtexprvalue>
366
    </attribute>
367
  </tag>
368
  <tag>
369
    <name>stylesheet</name>
370
    <tagclass>org.apache.taglibs.xtags.xpath.StylesheetTag</tagclass>
371
    <bodycontent>JSP</bodycontent>
372
    <attribute>
373
      <name>context</name>
374
      <required>false</required>
375
      <rtexprvalue>true</rtexprvalue>
376
    </attribute>
377
  </tag>
378
  <tag>
379
    <name>template</name>
380
    <tagclass>org.apache.taglibs.xtags.xpath.TemplateTag</tagclass>
381
    <bodycontent>JSP</bodycontent>
382
    <attribute>
383
      <name>match</name>
384
      <required>true</required>
385
      <rtexprvalue>true</rtexprvalue>
386
    </attribute>
387
    <attribute>
388
      <name>mode</name>
389
      <required>false</required>
390
      <rtexprvalue>true</rtexprvalue>
391
    </attribute>
392
    <attribute>
393
      <name>avt</name>
394
      <required>false</required>
395
      <rtexprvalue>true</rtexprvalue>
396
    </attribute>
397
    <attribute>
398
      <name>action</name>
399
      <required>false</required>
400
      <rtexprvalue>true</rtexprvalue>
401
    </attribute>
402
  </tag>
403
  <tag>
404
    <name>applyTemplates</name>
405
    <tagclass>org.apache.taglibs.xtags.xpath.ApplyTemplatesTag</tagclass>
406
    <bodycontent>JSP</bodycontent>
407
    <attribute>
408
      <name>select</name>
409
      <required>false</required>
410
      <rtexprvalue>true</rtexprvalue>
411
    </attribute>
412
    <attribute>
413
      <name>mode</name>
414
      <required>false</required>
415
      <rtexprvalue>true</rtexprvalue>
416
    </attribute>
417
  </tag>
418
  <tag>
419
    <name>element</name>
420
    <tagclass>org.apache.taglibs.xtags.xpath.ElementTag</tagclass>
421
    <bodycontent>JSP</bodycontent>
422
    <attribute>
423
      <name>name</name>
424
      <required>true</required>
425
      <rtexprvalue>true</rtexprvalue>
426
    </attribute>
427
  </tag>
428
  <tag>
429
    <name>attribute</name>
430
    <tagclass>org.apache.taglibs.xtags.xpath.AttributeTag</tagclass>
431
    <bodycontent>JSP</bodycontent>
432
    <attribute>
433
      <name>name</name>
434
      <required>true</required>
435
      <rtexprvalue>true</rtexprvalue>
436
    </attribute>
437
  </tag>
438
  <tag>
439
    <name>output</name>
440
    <tagclass>org.apache.taglibs.xtags.xpath.OutputTag</tagclass>
441
    <bodycontent>JSP</bodycontent>
442
    <attribute>
443
      <name>method</name>
444
      <required>false</required>
445
      <rtexprvalue>true</rtexprvalue>
446
    </attribute>
447
    <attribute>
448
      <name>indent</name>
449
      <required>false</required>
450
      <rtexprvalue>true</rtexprvalue>
451
    </attribute>
452
    <attribute>
453
      <name>omitXmlDeclaration</name>
454
      <required>false</required>
455
      <rtexprvalue>true</rtexprvalue>
456
    </attribute>
457
  </tag>
458
  <tag>
459
    <name>copy</name>
460
    <tagclass>org.apache.taglibs.xtags.xpath.CopyTag</tagclass>
461
    <bodycontent>JSP</bodycontent>
462
    <attribute>
463
      <name>select</name>
464
      <required>true</required>
465
      <rtexprvalue>true</rtexprvalue>
466
    </attribute>
467
    <attribute>
468
      <name>context</name>
469
      <required>false</required>
470
      <rtexprvalue>true</rtexprvalue>
471
    </attribute>
472
  </tag>
473
  <tag>
474
    <name>copyOf</name>
475
    <tagclass>org.apache.taglibs.xtags.xpath.CopyOfTag</tagclass>
476
    <bodycontent>JSP</bodycontent>
477
    <attribute>
478
      <name>select</name>
479
      <required>true</required>
480
      <rtexprvalue>true</rtexprvalue>
481
    </attribute>
482
    <attribute>
483
      <name>context</name>
484
      <required>false</required>
485
      <rtexprvalue>true</rtexprvalue>
486
    </attribute>
487
  </tag>
488
  <tag>
489
    <name>context</name>
490
    <tagclass>org.apache.taglibs.xtags.xpath.ContextTag</tagclass>
491
    <bodycontent>JSP</bodycontent>
492
    <attribute>
493
      <name>select</name>
494
      <required>true</required>
495
      <rtexprvalue>true</rtexprvalue>
496
    </attribute>
497
    <attribute>
498
      <name>context</name>
499
      <required>false</required>
500
      <rtexprvalue>true</rtexprvalue>
501
    </attribute>
502
  </tag>
503
  <tag>
504
    <name>remove</name>
505
    <tagclass>org.apache.taglibs.xtags.xpath.RemoveTag</tagclass>
506
    <bodycontent>empty</bodycontent>
507
    <attribute>
508
      <name>select</name>
509
      <required>true</required>
510
      <rtexprvalue>true</rtexprvalue>
511
    </attribute>
512
  </tag>
513
  <tag>
514
    <name>add</name>
515
    <tagclass>org.apache.taglibs.xtags.xpath.AddTag</tagclass>
516
    <bodycontent>jsp</bodycontent>
517
    <attribute>
518
      <name>before</name>
519
      <required>false</required>
520
      <rtexprvalue>true</rtexprvalue>
521
    </attribute>
522
    <attribute>
523
      <name>after</name>
524
      <required>false</required>
525
      <rtexprvalue>true</rtexprvalue>
526
    </attribute>
527
  </tag>
528
  <tag>
529
    <name>replace</name>
530
    <tagclass>org.apache.taglibs.xtags.xpath.ReplaceTag</tagclass>
531
    <bodycontent>jsp</bodycontent>
532
  </tag>
533
</taglib>
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554