Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / xsl / mozilla-tests.xsl
blobb10646d8165be1d908e1fc72770ebf51c821edd2
1 <?xml version="1.0"?>
2 <!--
3 /*
4 * The contents of this file are subject to the Mozilla Public
5 * License Version 1.1 (the "License"); you may not use this file
6 * except in compliance with the License. You may obtain a copy of
7 * the License at http://www.mozilla.org/MPL/
9 * Software distributed under the License is distributed on an "AS
10 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
11 * implied. See the License for the specific language governing
12 * rights and limitations under the License.
14 * The Original Code is XSL:P XSLT processor.
16 * The Initial Developer of the Original Code is Keith Visco.
17 * Portions created by Keith Visco (C) 1999 Keith Visco.
18 * All Rights Reserved..
20 * Contributor(s):
21 * Keith Visco, kvisco@ziplink.net
22 * - original author.
25 -->
27 <!--
28 This is a test stylesheet used for testing the XSL processor
29 -->
31 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
33 <!-- set the output properties -->
34 <xsl:output method="html"/>
36 <!-- AttributeSet -->
37 <xsl:attribute-set name="style1">
38 <xsl:attribute name="COLOR">blue</xsl:attribute>
39 <xsl:attribute name="SIZE">+0</xsl:attribute>
40 </xsl:attribute-set>
42 <xsl:attribute-set name="style2">
43 <xsl:attribute name="COLOR">red</xsl:attribute>
44 <xsl:attribute name="SIZE">+0</xsl:attribute>
45 </xsl:attribute-set>
47 <!-- root rule -->
48 <xsl:template match="/">
49 <xsl:processing-instruction name="foo">
50 this is a test processing instruction
51 </xsl:processing-instruction>
52 <xsl:comment>TransforMiiX Test cases, written by Keith Visco.</xsl:comment>
53 <xsl:apply-templates/>
54 </xsl:template>
56 <!-- named template -->
57 <xsl:template name="named-template-test">
58 <xsl:param name="my-param" select="'default value'"/>
59 named template processed with <xsl:text> </xsl:text>
60 <xsl:value-of select="$my-param"/>!
61 <xsl:if test="$dummy-param">
62 <BR/>
63 <FONT COLOR="red">
64 Error, undeclared parameters should be ignored!
65 </FONT>
66 </xsl:if>
67 </xsl:template>
69 <!-- empty variable for named template test -->
70 <xsl:variable name="dummy-param" />
72 <!-- supress non-selected nodes-->
73 <xsl:template match="*"/>
75 <!-- variable tests -->
76 <xsl:variable name="product-name">
77 Transfor<FONT COLOR="blue">Mii</FONT>X
78 </xsl:variable>
79 <!-- main rule for document element -->
80 <xsl:template match="document">
81 <HTML>
82 <HEAD>
83 <TITLE>TransforMiiX Test Cases</TITLE>
84 <SCRIPT Language="JavaScript">
85 <xsl:text>
86 // Support for Apple's DumpRenderTree
87 if (window.testRunner)
88 testRunner.dumpAsText();
89 // This is a test for properly printing SCRIPT elements
90 // currently there is a bug, so use xsl:text as a wrapper as I
91 // have done here
92 function foo() {
93 var x = 1;
94 var y = 2;
95 return (x &lt; y);
98 </xsl:text>
99 </SCRIPT>
100 </HEAD>
101 <BODY BGColor="#FFFFFF" Text="#000000">
102 <CENTER>
103 <FONT COLOR="BLUE" FACE="Arial" SIZE="+1">
104 <B>Mozilla XSLT</B>
105 </FONT>
106 <BR/>
107 <B>Transfor<FONT COLOR="blue">Mii</FONT>X Test Cases</B>
108 </CENTER>
110 This document serves to test basic XSL expressions.
111 </P>
112 <!-- new test -->
114 <B>Testing xsl:variable and xsl:copy-of</B><BR/>
115 <B>Test:</B> &lt;xsl:copy-of select="$product-name"/&gt;<BR/>
116 <B>Desired Result:</B>Transfor<FONT COLOR="blue">Mii</FONT>X<BR/>
117 <B>Result:</B><xsl:copy-of select="$product-name"/>
118 </P>
119 <!-- new test -->
121 <B>Testing xsl:if</B><BR/>
122 <B>Test:</B> &lt;xsl:if test="x | y | z"&gt;true&lt;/xsl:if&gt;<BR/>
123 <B>Desired Result:</B> true<BR/>
124 <B>Result:</B> <xsl:if test="x | y | z">true</xsl:if>
125 </P>
127 <!-- new test -->
129 <B>Testing xsl:if</B><BR/>
130 <B>Test:</B> &lt;xsl:if test="true()"&gt;true&lt;/xsl:if&gt;<BR/>
131 <B>Desired Result:</B> true<BR/>
132 <B>Result:</B> <xsl:if test="true()">true</xsl:if>
133 </P>
135 <!-- new test -->
137 <B>Testing xsl:if</B><BR/>
138 <B>Test:</B> &lt;xsl:if test="'a'='b'"&gt;a equals b&lt;/xsl:if&gt;<BR/>
139 <B></B> &lt;xsl:if test="'a'!='b'"&gt;a does not equal b&lt;/xsl:if&gt;
140 <BR/>
141 <B>Desired Result:</B> a does not equal to b<BR/>
142 <B>Result:</B>
143 <xsl:if test="'a'='b'">a equals b<BR/></xsl:if>
144 <xsl:if test="'a'!='b'">a does not equal b</xsl:if>
145 </P>
147 <!-- new test -->
149 <B>Testing xsl:if</B><BR/>
150 <B>Test:</B> &lt;xsl:if test="2+1-3"&gt; 2+1-3 is true&lt;/xsl:if&gt;<BR/>
151 <B>&#160;</B>&lt;xsl:if test="not(2+1-3)"&gt; not(2+1-3) is true&lt;/xsl:if&gt;<BR/>
152 <B>Desired Result:</B>not(2+1-3) is true <BR/>
153 <B>Result:</B>
154 <xsl:if test="2+1-3">2+1-3 is true</xsl:if>
155 <xsl:if test="not(2+1-3)">not(2+1-3) is true</xsl:if>
156 </P>
158 <!-- new test -->
160 <B>Testing xsl:choose</B><BR/>
161 <B>Test:</B>see source<BR/>
162 <B>Desired Result:</B> true<BR/>
163 <B>Result:</B>
164 <xsl:choose>
165 <xsl:when test="a">error - a</xsl:when>
166 <xsl:when test="abc/def">true</xsl:when>
167 <xsl:when test="b">error - b</xsl:when>
168 <xsl:otherwise>false</xsl:otherwise>
169 </xsl:choose>
170 </P>
171 <!-- new test -->
173 <B>Testing parent and ancestor ops</B><BR/>
174 <B>Test:</B>see source<BR/>
175 <B>Desired Result:</B> true<BR/>
176 <B>Result:</B><xsl:if test="//def">true</xsl:if><BR/>
178 </P>
179 <!-- new test -->
182 <B>Testing basic xsl:apply-templates</B><BR/>
183 <B>Test:</B>&lt;xsl:apply-templates/&gt;<BR/>
184 <B>Desired Result:</B>element <B>x</B>, element <B>y</B>, element <B>z</B><BR/>
185 <B>Result:</B><xsl:apply-templates select="x|y|z"/>
186 </P>
187 <!-- new test -->
190 <B>Testing basic xsl:apply-templates with mode</B><BR/>
191 <B>Test:</B>&lt;xsl:apply-templates mode="mode-test"/&gt;<BR/>
192 <B>Desired Result:</B>x, y, z<BR/>
193 <B>Result:</B><xsl:apply-templates select="x|y|z" mode="mode-test"/>
194 </P>
195 <!-- new test -->
197 <B>Testing predicates</B><BR/>
198 <B>Test:</B>see source<BR/>
199 <B>Desired Result:</B> <B>z</B><BR/>
200 <B>Result:</B>
201 <xsl:for-each select="*[position()=3]">
202 <B><xsl:value-of select="."/></B>
203 </xsl:for-each>
204 </P>
205 <!-- new test -->
207 <B>Testing predicates</B><BR/>
208 <B>Test:</B>see source<BR/>
209 <B>Desired Result:</B><BR/>
210 <B>Result:</B>
211 <xsl:for-each select="*[false()]">
212 <B><xsl:value-of select="."/></B>
213 </xsl:for-each>
214 </P>
215 <!-- new test -->
217 <B>Named Template/Call Template</B>
219 <B>Test:</B>&lt;xsl:call-template name="named-template-test"/&gt;<BR/>
220 <B>Desired Result:</B>named template processed with default value!<BR/>
221 <B>Result:</B><xsl:call-template name="named-template-test"/>
222 </P>
224 <B>Test:</B> - passing arguments to named templates (see xsl source)<BR/>
225 <B>Desired Result:</B>named template processed with passed value!<BR/>
226 <B>Result:</B>
227 <xsl:call-template name="named-template-test">
228 <xsl:with-param name="my-param" select="'passed value'"/>
229 <xsl:with-param name="dummy-param" select="'test'"/>
230 </xsl:call-template>
231 </P>
232 </P>
233 <!-- new test -->
235 <B>Attribute Value Templates and variables</B><BR/>
236 <B>Test:</B>
237 <UL>
238 &lt;xsl:variable name="color"&gt;red&lt;/xsl:variable&gt;<BR/>
239 &lt;FONT COLOR="{$color}"&gt;Red Text&lt;/FONT&gt;
240 </UL>
241 <B>Desired Result:</B>
242 <FONT COLOR="red">Red Text</FONT><BR/>
243 <B>Result:</B>
244 <xsl:variable name="color">red</xsl:variable>
245 <FONT COLOR="{$color}">Red Text</FONT>
246 </P>
247 <HR/>
248 <!-- AXIS IDENTIFIER TESTS -->
249 <TABLE>
250 <TR BGColor="#E0E0FF">
251 <TD Colspan="2" ALIGN="CENTER">
252 <B>Axis Identifiers (these should work, I need more test cases though)</B>
253 </TD>
254 </TR>
255 <!-- new test -->
256 <TR>
257 <TD VALIGN="TOP"><B>Test:</B></TD>
258 <TD>
259 &lt;xsl:if test="descendant::z"&gt;true&lt;/xsl:if&gt;<BR />
260 </TD>
261 </TR>
262 <TR>
263 <TD><B>Desired Result:</B></TD>
264 <TD>
265 <FONT COLOR="blue">true</FONT><BR/>
266 </TD>
267 </TR>
268 <TR>
269 <TD><B>Result:</B></TD>
270 <TD>
271 <xsl:if test="descendant::z">
272 <FONT COLOR="blue">true</FONT>
273 </xsl:if>
274 </TD>
275 </TR>
276 <!-- new test -->
277 <TR>
278 <TD VALIGN="TOP"><B>Test:</B></TD>
279 <TD>
280 &lt;xsl:if test="not(descendant-or-self::no-element)"&gt;true&lt;/xsl:if&gt;<BR />
281 </TD>
282 </TR>
283 <TR>
284 <TD><B>Desired Result:</B></TD>
285 <TD>
286 <FONT COLOR="blue">true</FONT><BR/>
287 </TD>
288 </TR>
289 <TR>
290 <TD><B>Result:</B></TD>
291 <TD>
292 <xsl:if test="not(descendant-or-self::no-element)">
293 <FONT COLOR="blue">true</FONT>
294 </xsl:if>
295 </TD>
296 </TR>
297 <!-- new test -->
298 <TR>
299 <TD VALIGN="TOP"><B>Test:</B></TD>
300 <TD>
301 &lt;xsl:value-of select="count(x/attribute::*)"/&gt;<BR />
302 </TD>
303 </TR>
304 <TR>
305 <TD><B>Desired Result:</B></TD>
306 <TD>
307 <FONT COLOR="blue">1</FONT><BR/>
308 </TD>
309 </TR>
310 <TR>
311 <TD><B>Result:</B></TD>
312 <TD>
313 <FONT COLOR="blue"><xsl:value-of select="count(x/attribute::*)"/></FONT>
314 </TD>
315 </TR>
316 </TABLE>
318 <HR/>
319 <TABLE>
320 <TR BGColor="#E0E0FF">
321 <TD Colspan="2" ALIGN="CENTER">
322 <B>Creating Elements with xsl:element and xsl:attribute</B>
323 </TD>
324 </TR>
325 <!-- new test -->
326 <TR>
327 <TD VALIGN="TOP"><B>Test:</B></TD>
328 <TD>
329 &lt;xsl:element name="FONT"&gt;<BR />
330 &lt;xsl:attribute name="COLOR"&gt;blue&lt;/xsl:attribute&gt; <BR/>
331 Passed <BR/>
332 &lt;/xsl:element&gt;
333 </TD>
334 </TR>
335 <TR>
336 <TD><B>Desired Result:</B></TD>
337 <TD>
338 <FONT COLOR="blue">Passed</FONT><BR/>
339 </TD>
340 </TR>
341 <TR>
342 <TD><B>Result:</B></TD>
343 <TD>
344 <xsl:element name="FONT">
345 <xsl:attribute name="COLOR">blue</xsl:attribute>
346 Passed
347 </xsl:element>
348 </TD>
349 </TR>
350 <!-- new test -->
351 <TR BGCOLOR="#E0E0FF" ALIGN="CENTER">
352 <TD COLSPAN="2"><B>Using Attribute Sets</B></TD>
353 </TR>
354 <TR>
355 <TD VALIGN="TOP"><B>Test:</B></TD>
356 <TD>
357 &lt;FONT xsl:use-attribute-sets="style1"&gt;<BR />
358 Passed <BR/>
359 &lt;/FONT&gt;
360 </TD>
361 </TR>
362 <TR>
363 <TD><B>Desired Result:</B></TD>
364 <TD>
365 <FONT COLOR="blue">Passed</FONT><BR/>
366 </TD>
367 </TR>
368 <TR>
369 <TD><B>Result:</B></TD>
370 <TD>
371 <FONT xsl:use-attribute-sets="style1">
372 Passed
373 </FONT>
374 </TD>
375 </TR>
376 <!-- new test -->
377 <TR>
378 <TD VALIGN="TOP"><B>Test:</B></TD>
379 <TD>
380 &lt;xsl:element name="FONT" use-attribute-sets="style1 style2"&gt;<BR />
381 Passed <BR/>
382 &lt;/xsl:element&gt;
383 </TD>
384 </TR>
385 <TR>
386 <TD><B>Desired Result:</B></TD>
387 <TD>
388 <FONT COLOR="red">Passed</FONT><BR/>
389 </TD>
390 </TR>
391 <TR>
392 <TD><B>Result:</B></TD>
393 <TD>
394 <xsl:element name="FONT" use-attribute-sets="style1 style2">
395 Passed
396 </xsl:element>
397 </TD>
398 </TR>
399 </TABLE>
400 <HR/>
401 <!-- NUMBERING Examples -->
402 <TABLE>
403 <TR BGColor="#E0E0FF">
404 <TD Colspan="2" ALIGN="CENTER">
405 <B>Numbering (only simple numbering currently implemented)</B>
406 </TD>
407 </TR>
408 <!-- new test -->
409 <TR>
410 <TD VALIGN="TOP"><B>Test:</B></TD>
411 <TD>
412 &lt;xsl:number value="4"/&gt;<BR />
413 </TD>
414 </TR>
415 <TR>
416 <TD><B>Desired Result:</B></TD>
417 <TD>
418 <FONT COLOR="blue">4</FONT><BR/>
419 </TD>
420 </TR>
421 <TR>
422 <TD><B>Result:</B></TD>
423 <TD>
424 <FONT COLOR="blue"><xsl:number value="4"/></FONT>
425 </TD>
426 </TR>
427 <!-- new test -->
428 <TR>
429 <TD VALIGN="TOP"><B>Test:</B></TD>
430 <TD>
431 see source<BR />
432 </TD>
433 </TR>
434 <TR>
435 <TD><B>Desired Result:</B></TD>
436 <TD>
437 <FONT COLOR="blue">
438 1. x <BR/>1. y<BR/>1. z
439 </FONT><BR/>
440 </TD>
441 </TR>
442 <TR>
443 <TD><B>Result:</B></TD>
444 <TD>
445 <FONT COLOR="blue">
446 <xsl:for-each select="x | y | z">
447 <xsl:number/>
448 <xsl:text>. </xsl:text><xsl:value-of select="."/><BR/>
449 </xsl:for-each>
450 </FONT>
451 </TD>
452 </TR>
454 </TABLE>
456 <HR/>
457 <!-- ADDITIVE EXPRESSION TESTS -->
458 <TABLE>
459 <TR BGColor="#E0E0FF">
460 <TD Colspan="2" ALIGN="CENTER">
461 <B>Additive Expressions</B>
462 </TD>
463 </TR>
464 <!-- new test -->
465 <TR>
466 <TD VALIGN="TOP"><B>Test:</B></TD>
467 <TD>
468 &lt;xsl:value-of select="70+4"/&gt;<BR />
469 </TD>
470 </TR>
471 <TR>
472 <TD><B>Desired Result:</B></TD>
473 <TD>
474 <FONT COLOR="blue">74</FONT><BR/>
475 </TD>
476 </TR>
477 <TR>
478 <TD><B>Result:</B></TD>
479 <TD>
480 <FONT COLOR="blue">
481 <xsl:value-of select="70+4"/>
482 </FONT>
483 </TD>
484 </TR>
485 <!-- new test -->
486 <TR>
487 <TD VALIGN="TOP"><B>Test:</B></TD>
488 <TD>
489 &lt;xsl:value-of select="-70+4"/&gt;<BR />
490 </TD>
491 </TR>
492 <TR>
493 <TD><B>Desired Result:</B></TD>
494 <TD>
495 <FONT COLOR="blue">-66</FONT><BR/>
496 </TD>
497 </TR>
498 <TR>
499 <TD><B>Result:</B></TD>
500 <TD>
501 <FONT COLOR="blue">
502 <xsl:value-of select="-70+4"/>
503 </FONT>
504 </TD>
505 </TR>
506 <TR>
507 <TD VALIGN="TOP"><B>Test:</B></TD>
508 <TD>
509 &lt;xsl:value-of select="1900+70+8-4"/&gt;<BR />
510 </TD>
511 </TR>
512 <TR>
513 <TD><B>Desired Result:</B></TD>
514 <TD>
515 <FONT COLOR="blue">1974</FONT><BR/>
516 </TD>
517 </TR>
518 <TR>
519 <TD><B>Result:</B></TD>
520 <TD>
521 <FONT COLOR="blue">
522 <xsl:value-of select="1900+70+8-4"/>
523 </FONT>
524 </TD>
525 </TR>
526 <TR>
527 <TD VALIGN="TOP"><B>Test:</B></TD>
528 <TD>
529 &lt;xsl:value-of select="(4+5)-(9+9)"/&gt;<BR />
530 </TD>
531 </TR>
532 <TR>
533 <TD><B>Desired Result:</B></TD>
534 <TD>
535 <FONT COLOR="blue">-9</FONT><BR/>
536 </TD>
537 </TR>
538 <TR>
539 <TD><B>Result:</B></TD>
540 <TD>
541 <FONT COLOR="blue">
542 <xsl:value-of select="(4+5)-(9+9)"/>
543 </FONT>
544 </TD>
545 </TR>
547 </TABLE>
548 <HR/>
549 <!-- MULTIPLICATIVE EXPRESSION TESTS -->
550 <TABLE>
551 <TR BGColor="#E0E0FF">
552 <TD Colspan="2" ALIGN="CENTER">
553 <B>Multiplicative Expressions</B>
554 </TD>
555 </TR>
556 <!-- new test -->
557 <TR>
558 <TD VALIGN="TOP"><B>Test:</B></TD>
559 <TD>
560 &lt;xsl:value-of select="7*4"/&gt;<BR />
561 </TD>
562 </TR>
563 <TR>
564 <TD><B>Desired Result:</B></TD>
565 <TD>
566 <FONT COLOR="blue">28</FONT><BR/>
567 </TD>
568 </TR>
569 <TR>
570 <TD><B>Result:</B></TD>
571 <TD>
572 <FONT COLOR="blue">
573 <xsl:value-of select="7*4"/>
574 </FONT>
575 </TD>
576 </TR>
577 <!-- new test -->
578 <TR>
579 <TD VALIGN="TOP"><B>Test:</B></TD>
580 <TD>
581 &lt;xsl:value-of select="7mod 4"/&gt;<BR />
582 </TD>
583 </TR>
584 <TR>
585 <TD><B>Desired Result:</B></TD>
586 <TD>
587 <FONT COLOR="blue">3</FONT><BR/>
588 </TD>
589 </TR>
590 <TR>
591 <TD><B>Result:</B></TD>
592 <TD>
593 <FONT COLOR="blue">
594 <xsl:value-of select="7mod 4"/>
595 </FONT>
596 </TD>
597 </TR>
598 <!-- new test -->
599 <TR>
600 <TD VALIGN="TOP"><B>Test:</B></TD>
601 <TD>
602 &lt;xsl:value-of select="7div 4"/&gt;<BR />
603 </TD>
604 </TR>
605 <TR>
606 <TD><B>Desired Result:</B></TD>
607 <TD>
608 <FONT COLOR="blue">1.75</FONT><BR/>
609 </TD>
610 </TR>
611 <TR>
612 <TD><B>Result:</B></TD>
613 <TD>
614 <FONT COLOR="blue">
615 <xsl:value-of select="7div 4"/>
616 </FONT>
617 </TD>
618 </TR>
619 <!-- new test -->
620 <TR>
621 <TD VALIGN="TOP"><B>Test:</B></TD>
622 <TD>
623 &lt;xsl:value-of select="7div 0"/&gt;<BR />
624 </TD>
625 </TR>
626 <TR>
627 <TD><B>Desired Result:</B></TD>
628 <TD>
629 <FONT COLOR="blue">Infinity</FONT><BR/>
630 </TD>
631 </TR>
632 <TR>
633 <TD><B>Result:</B></TD>
634 <TD>
635 <FONT COLOR="blue">
636 <xsl:value-of select="7div 0"/>
637 </FONT>
638 </TD>
639 </TR>
640 <!-- new test -->
641 <TR>
642 <TD VALIGN="TOP"><B>Test:</B></TD>
643 <TD>
644 &lt;xsl:value-of select="0 div 0"/&gt;<BR />
645 </TD>
646 </TR>
647 <TR>
648 <TD><B>Desired Result:</B></TD>
649 <TD>
650 <FONT COLOR="blue">NaN</FONT><BR/>
651 </TD>
652 </TR>
653 <TR>
654 <TD><B>Result:</B></TD>
655 <TD>
656 <FONT COLOR="blue">
657 <xsl:value-of select="0 div 0"/>
658 </FONT>
659 </TD>
660 </TR>
662 <!-- new test -->
663 <TR>
664 <TD VALIGN="TOP"><B>Test:</B></TD>
665 <TD>
666 &lt;xsl:variable name="x" select="7*3"/&gt;<BR />
667 &lt;xsl:variable name="y" select="3"/&gt;<BR />
668 &lt;xsl:value-of select="$x div $y"/&gt;<BR />
669 </TD>
670 </TR>
671 <TR>
672 <TD><B>Desired Result:</B></TD>
673 <TD>
674 <FONT COLOR="blue">7</FONT><BR/>
675 </TD>
676 </TR>
677 <TR>
678 <TD><B>Result:</B></TD>
679 <TD>
680 <FONT COLOR="blue">
681 <xsl:variable name="x" select="7*3"/>
682 <xsl:variable name="y" select="3"/>
683 <xsl:value-of select="$x div $y"/>
684 <BR/>
686 </FONT>
687 </TD>
688 </TR>
689 </TABLE>
690 <!-- PRECEDENCE TESTS -->
691 <TABLE>
692 <TR BGColor="#E0E0FF">
693 <TD Colspan="2" ALIGN="CENTER">
694 <B>Precedence tests</B>
695 </TD>
696 </TR>
697 <!-- new test -->
698 <TR>
699 <TD VALIGN="TOP"><B>Test:</B></TD>
700 <TD>
701 &lt;xsl:value-of select="2 mod 2 = 0"/&gt;<BR />
702 </TD>
703 </TR>
704 <TR>
705 <TD><B>Desired Result:</B></TD>
706 <TD>
707 <FONT COLOR="blue">true</FONT><BR/>
708 </TD>
709 </TR>
710 <TR>
711 <TD><B>Result:</B></TD>
712 <TD>
713 <FONT COLOR="blue">
714 <xsl:value-of select="2 mod 2 = 0"/>
715 </FONT>
716 </TD>
717 </TR>
718 <!-- new test -->
719 <TR>
720 <TD VALIGN="TOP"><B>Test:</B></TD>
721 <TD>
722 &lt;xsl:value-of select="5 mod 2 &lt; 5 and 2*6 &gt;= 12"/&gt;<BR />
723 </TD>
724 </TR>
725 <TR>
726 <TD><B>Desired Result:</B></TD>
727 <TD>
728 <FONT COLOR="blue">true</FONT><BR/>
729 </TD>
730 </TR>
731 <TR>
732 <TD><B>Result:</B></TD>
733 <TD>
734 <FONT COLOR="blue">
735 <xsl:value-of select="5 mod 2 &lt; 5 and 2*6>=12"/>
736 </FONT>
737 </TD>
738 </TR>
739 <!-- new test -->
740 <TR>
741 <TD VALIGN="TOP"><B>Test:</B></TD>
742 <TD>
743 &lt;xsl:value-of select="5 mod 2 &lt; 5 and 2*6>12"/&gt;<BR />
744 </TD>
745 </TR>
746 <TR>
747 <TD><B>Desired Result:</B></TD>
748 <TD>
749 <FONT COLOR="blue">false</FONT><BR/>
750 </TD>
751 </TR>
752 <TR>
753 <TD><B>Result:</B></TD>
754 <TD>
755 <FONT COLOR="blue">
756 <xsl:value-of select="5 mod 2 &lt; 5 and 2*6>12"/>
757 </FONT>
758 </TD>
759 </TR>
761 <!-- new test -->
762 <TR>
763 <TD VALIGN="TOP"><B>Test:</B></TD>
764 <TD>
765 &lt;xsl:value-of select="4+5*3"/&gt;<BR />
766 </TD>
767 </TR>
768 <TR>
769 <TD><B>Desired Result:</B></TD>
770 <TD>
771 <FONT COLOR="blue">19</FONT><BR/>
772 </TD>
773 </TR>
774 <TR>
775 <TD><B>Result:</B></TD>
776 <TD>
777 <FONT COLOR="blue">
778 <xsl:value-of select="4+5*3"/>
779 </FONT>
780 </TD>
781 </TR>
782 <!-- new test -->
783 <TR>
784 <TD VALIGN="TOP"><B>Test:</B></TD>
785 <TD>
786 &lt;xsl:value-of select="4+5*3+(6-4)*7"/&gt;<BR />
787 </TD>
788 </TR>
789 <TR>
790 <TD><B>Desired Result:</B></TD>
791 <TD>
792 <FONT COLOR="blue">33</FONT><BR/>
793 </TD>
794 </TR>
795 <TR>
796 <TD><B>Result:</B></TD>
797 <TD>
798 <FONT COLOR="blue">
799 <xsl:value-of select="4+5*3+(6-4)*7"/>
800 </FONT>
801 </TD>
802 </TR>
803 </TABLE>
805 <!-- Result Type conversion tests -->
806 <TABLE>
807 <TR BGColor="#E0E0FF">
808 <TD Colspan="2" ALIGN="CENTER">
809 <B>Automatic Result Type Conversion</B>
810 </TD>
811 </TR>
812 <!-- new test -->
813 <TR>
814 <TD VALIGN="TOP"><B>Test:</B></TD>
815 <TD>
816 &lt;xsl:value-of select="'747' + 8"/&gt;<BR />
817 </TD>
818 </TR>
819 <TR>
820 <TD><B>Desired Result:</B></TD>
821 <TD>
822 <FONT COLOR="blue">755</FONT><BR/>
823 </TD>
824 </TR>
825 <TR>
826 <TD><B>Result:</B></TD>
827 <TD>
828 <FONT COLOR="blue">
829 <xsl:value-of select="'747' + 8"/>
830 </FONT>
831 </TD>
832 </TR>
833 </TABLE>
834 </BODY>
835 </HTML>
836 </xsl:template>
838 <!-- simple union expressions -->
839 <xsl:template match="x | y | z" priority="1.0">
840 element<B><xsl:text> </xsl:text><xsl:value-of select="@*"/></B>
841 <xsl:if test="not(position()=3)">,</xsl:if>
842 </xsl:template>
844 <xsl:template match="x | y | z" mode="mode-test">
845 <xsl:value-of select="@*"/>
846 <xsl:if test="not(position()=3)"><xsl:text>, </xsl:text></xsl:if>
847 </xsl:template>
849 <xsl:template match="z">
850 element (z): <B><xsl:value-of select="."/></B>
851 </xsl:template>
853 </xsl:stylesheet>