1 61 62 63 package org.jaxen; 64 65 import junit.framework.TestCase; 66 import org.jaxen.function.StringFunction; 67 import org.jaxen.saxpath.helpers.XPathReaderFactory; 68 import org.jaxen.pattern.Pattern; 69 70 import java.util.ArrayList ; 71 import java.util.Iterator ; 72 import java.util.List ; 73 74 public abstract class XPathTestBase extends TestCase 75 { 76 protected static String VAR_URI = "http://jaxen.org/test-harness/var"; 77 protected static String TESTS_XML = "xml/test/tests.xml"; 78 79 protected static boolean verbose = false; 80 protected static boolean debug = false; 81 private ContextSupport contextSupport; 82 83 public XPathTestBase(String name) 84 { 85 super(name); 86 } 87 88 public void setUp() 89 { 90 this.contextSupport = null; 91 System.setProperty(XPathReaderFactory.DRIVER_PROPERTY, 92 ""); 93 log("-----------------------------"); 94 } 95 96 public void log(String text) 97 { 98 log(verbose, 99 text); 100 } 101 102 public void log(boolean actualVerbose, 103 String text) 104 { 105 if (actualVerbose) System.out.println(text); 106 } 107 108 protected void assertCountXPath(int expectedSize, Object context, String xpathStr) throws JaxenException 109 { 110 assertCountXPath2(expectedSize, context, xpathStr); 111 } 112 113 protected Object assertCountXPath2(int expectedSize, Object context, String xpathStr) throws JaxenException 114 { 115 log(debug, 116 " Select :: " + xpathStr); 117 BaseXPath xpath = new BaseXPath(xpathStr); 118 List results = xpath.selectNodes(getContext(context)); 119 log(debug, 120 " Expected Size :: " + expectedSize); 121 log(debug, 122 " Result Size :: " + results.size()); 123 if (expectedSize != results.size()) 124 { 125 log(debug, 126 " ## FAILED"); 127 log(debug, 128 " ## xpath: " + xpath + " = " + xpath.debug()); 129 Iterator resultIter = results.iterator(); 130 while (resultIter.hasNext()) 131 { 132 log(debug, 133 " --> " + resultIter.next()); 134 } 135 } 136 assertEquals(xpathStr, 137 expectedSize, 138 results.size()); 139 if (expectedSize > 0) 140 { 141 return results.get(0); 142 } 143 return null; 144 } 145 146 protected void assertInvalidXPath(Object context, String xpathStr) 147 { 148 try 149 { 150 log(debug, 151 " Select :: " + xpathStr); 152 BaseXPath xpath = new BaseXPath(xpathStr); 153 List results = xpath.selectNodes(getContext(context)); 154 log(debug, 155 " Result Size :: " + results.size()); 156 fail("An exception was expected."); 157 } 158 catch (UnsupportedAxisException e) 159 { 160 log(debug, 161 " ## SKIPPED -- Unsupported Axis"); 162 } 163 catch (JaxenException e) 164 { 165 log(debug, " Caught expected exception " + e.getMessage()); 166 } 167 } 168 169 protected void assertValueOfXPath(String expected, Object context, String xpathStr) throws JaxenException 170 { 171 try 172 { 173 BaseXPath xpath = new BaseXPath(xpathStr); 174 Object node = xpath.evaluate(getContext(context)); 175 String result = StringFunction.evaluate(node, 176 getNavigator()); 177 log(debug, 178 " Select :: " + xpathStr); 179 log(debug, 180 " Expected :: " + expected); 181 log(debug, 182 " Result :: " + result); 183 if (!expected.equals(result)) 184 { 185 log(debug, 186 " ## FAILED"); 187 log(debug, 188 " ## xpath: " + xpath + " = " + xpath.debug()); 189 } 190 assertEquals(xpathStr, 191 expected, 192 result); 193 } 194 catch (UnsupportedAxisException e) 195 { 196 log(debug, 197 " ## SKIPPED -- Unsupported Axis "); 198 } 199 } 200 201 protected Context getContext(Object contextNode) 202 { 203 Context context = new Context(getContextSupport()); 204 List list = new ArrayList (1); 205 list.add(contextNode); 206 context.setNodeSet(list); 207 return context; 208 } 209 210 public ContextSupport getContextSupport() 211 { 212 if (this.contextSupport == null) 213 { 214 this.contextSupport = new ContextSupport(new SimpleNamespaceContext(), 215 XPathFunctionContext.getInstance(), 216 new SimpleVariableContext(), 217 getNavigator()); 218 } 219 return this.contextSupport; 220 } 221 222 public abstract Navigator getNavigator(); 223 224 public abstract Object getDocument(String url) throws Exception ; 225 226 public void testGetNodeType() throws FunctionCallException, UnsupportedAxisException 227 { 228 Navigator nav = getNavigator(); 229 Object document = nav.getDocument("xml/testNamespaces.xml"); 230 int count = 0; 231 Iterator descendantOrSelfAxisIterator = nav.getDescendantOrSelfAxisIterator(document); 232 while (descendantOrSelfAxisIterator.hasNext()) 233 { 234 Object node = descendantOrSelfAxisIterator.next(); 235 Iterator namespaceAxisIterator = nav.getNamespaceAxisIterator(node); 236 while (namespaceAxisIterator.hasNext()) 237 { 238 count++; 239 assertEquals("Node type mismatch", Pattern.NAMESPACE_NODE, nav.getNodeType(namespaceAxisIterator.next())); 240 } 241 } 242 assertEquals(25, count); 243 } 244 245 246 248 public void testid53371() throws JaxenException 249 { 250 Navigator nav = getNavigator(); 251 String url = "xml/jaxen24.xml"; 252 log("Document [" + url + "]"); 253 Object document = nav.getDocument(url); 254 XPath contextpath = new BaseXPath("/body/div", nav); 255 log("Initial Context :: " + contextpath); 256 List list = contextpath.selectNodes(document); 257 Iterator iter = list.iterator(); 258 while (iter.hasNext()) 259 { 260 Object context = iter.next(); 261 assertCountXPath(1, context, "preceding::*[1]"); 262 assertValueOfXPath("span", context, "local-name(preceding::*[1])"); 263 } 264 } 265 266 268 public void testid53391() throws JaxenException 269 { 270 Navigator nav = getNavigator(); 271 String url = "xml/jaxen24.xml"; 272 log("Document [" + url + "]"); 273 Object document = nav.getDocument(url); 274 XPath contextpath = new BaseXPath("/", nav); 275 log("Initial Context :: " + contextpath); 276 List list = contextpath.selectNodes(document); 277 Iterator iter = list.iterator(); 278 while (iter.hasNext()) 279 { 280 Object context = iter.next(); 281 assertCountXPath(0, context, "//preceding::x"); 282 assertCountXPath(0, context, "//following::x"); 283 assertCountXPath(0, context, "/descendant::*/preceding::x"); 284 assertCountXPath(0, context, "/descendant::node()/preceding::x"); 285 } 286 } 287 288 290 public void testid53430() throws JaxenException 291 { 292 Navigator nav = getNavigator(); 293 String url = "xml/simple.xml"; 294 log("Document [" + url + "]"); 295 Object document = nav.getDocument(url); 296 XPath contextpath = new BaseXPath("/", nav); 297 log("Initial Context :: " + contextpath); 298 List list = contextpath.selectNodes(document); 299 Iterator iter = list.iterator(); 300 while (iter.hasNext()) 301 { 302 Object context = iter.next(); 303 assertValueOfXPath("abd", context, "string()"); 304 } 305 } 306 307 public void testid53441() throws JaxenException 308 { 309 Navigator nav = getNavigator(); 310 String url = "xml/simple.xml"; 311 log("Document [" + url + "]"); 312 Object document = nav.getDocument(url); 313 XPath contextpath = new BaseXPath("/root", nav); 314 log("Initial Context :: " + contextpath); 315 List list = contextpath.selectNodes(document); 316 Iterator iter = list.iterator(); 317 while (iter.hasNext()) 318 { 319 Object context = iter.next(); 320 assertValueOfXPath("abd", context, "string()"); 321 } 322 } 323 324 public void testid53452() throws JaxenException 325 { 326 Navigator nav = getNavigator(); 327 String url = "xml/simple.xml"; 328 log("Document [" + url + "]"); 329 Object document = nav.getDocument(url); 330 XPath contextpath = new BaseXPath("/root/a", nav); 331 log("Initial Context :: " + contextpath); 332 List list = contextpath.selectNodes(document); 333 Iterator iter = list.iterator(); 334 while (iter.hasNext()) 335 { 336 Object context = iter.next(); 337 assertValueOfXPath("a", context, "string()"); 338 } 339 } 340 341 public void testid53463() throws JaxenException 342 { 343 Navigator nav = getNavigator(); 344 String url = "xml/simple.xml"; 345 log("Document [" + url + "]"); 346 Object document = nav.getDocument(url); 347 XPath contextpath = new BaseXPath("/root/c", nav); 348 log("Initial Context :: " + contextpath); 349 List list = contextpath.selectNodes(document); 350 Iterator iter = list.iterator(); 351 while (iter.hasNext()) 352 { 353 Object context = iter.next(); 354 assertValueOfXPath("d", context, "string()"); 355 } 356 } 357 358 360 public void testid53482() throws JaxenException 361 { 362 Navigator nav = getNavigator(); 363 String url = "xml/jaxen3.xml"; 364 log("Document [" + url + "]"); 365 Object document = nav.getDocument(url); 366 XPath contextpath = new BaseXPath("/", nav); 367 log("Initial Context :: " + contextpath); 368 List list = contextpath.selectNodes(document); 369 Iterator iter = list.iterator(); 370 while (iter.hasNext()) 371 { 372 Object context = iter.next(); 373 assertCountXPath(1, context, "/Configuration/hostname/attrlist/hostname[. = 'CE-A'] "); 374 } 375 } 376 377 379 public void testid53502() throws JaxenException 380 { 381 Navigator nav = getNavigator(); 382 String url = "xml/numbers.xml"; 383 log("Document [" + url + "]"); 384 Object document = nav.getDocument(url); 385 XPath contextpath = new BaseXPath("/", nav); 386 log("Initial Context :: " + contextpath); 387 List list = contextpath.selectNodes(document); 388 Iterator iter = list.iterator(); 389 while (iter.hasNext()) 390 { 391 Object context = iter.next(); 392 394 assertInvalidXPath(context, "/numbers numbers"); 395 397 assertInvalidXPath(context, "/a/b[c > d]efg"); 398 400 assertInvalidXPath(context, "/inv/child::"); 401 403 assertInvalidXPath(context, "/invoice/@test[abcd"); 404 assertInvalidXPath(context, "/invoice/@test[abcd > x"); 405 407 assertInvalidXPath(context, "string-length('a"); 408 410 assertInvalidXPath(context, "/descendant::()"); 411 assertInvalidXPath(context, "(1 + 1"); 412 } 413 } 414 415 417 public void testid53602() throws JaxenException 418 { 419 Navigator nav = getNavigator(); 420 String url = "xml/underscore.xml"; 421 log("Document [" + url + "]"); 422 Object document = nav.getDocument(url); 423 XPath contextpath = new BaseXPath("/", nav); 424 log("Initial Context :: " + contextpath); 425 List list = contextpath.selectNodes(document); 426 Iterator iter = list.iterator(); 427 while (iter.hasNext()) 428 { 429 Object context = iter.next(); 430 assertCountXPath(1, context, "/root/@a"); 431 assertCountXPath(1, context, "/root/@_a"); 432 assertCountXPath(1, context, "/root/b"); 433 assertCountXPath(1, context, "/root/_b"); 434 assertValueOfXPath("1", context, "/root/@a"); 435 assertValueOfXPath("2", context, "/root/@_a"); 436 assertValueOfXPath("1", context, "/root/b"); 437 assertValueOfXPath("2", context, "/root/_b"); 438 } 439 } 440 441 443 public void testid53662() throws JaxenException 444 { 445 Navigator nav = getNavigator(); 446 String url = "xml/web.xml"; 447 log("Document [" + url + "]"); 448 Object document = nav.getDocument(url); 449 XPath contextpath = new BaseXPath("/", nav); 450 log("Initial Context :: " + contextpath); 451 List list = contextpath.selectNodes(document); 452 Iterator iter = list.iterator(); 453 while (iter.hasNext()) 454 { 455 Object context = iter.next(); 456 assertValueOfXPath("true", context, "/web-app/servlet/servlet-name = 'file'"); 457 assertValueOfXPath("true", context, "/web-app/servlet/servlet-name = 'snoop'"); 458 } 459 } 460 461 public void testid53685() throws JaxenException 462 { 463 Navigator nav = getNavigator(); 464 String url = "xml/numbers.xml"; 465 log("Document [" + url + "]"); 466 Object document = nav.getDocument(url); 467 XPath contextpath = new BaseXPath("/", nav); 468 log("Initial Context :: " + contextpath); 469 List list = contextpath.selectNodes(document); 470 Iterator iter = list.iterator(); 471 while (iter.hasNext()) 472 { 473 Object context = iter.next(); 474 assertValueOfXPath("true", context, "/numbers/set/nr = '-3'"); 475 assertValueOfXPath("true", context, "/numbers/set/nr = -3"); 476 assertValueOfXPath("true", context, "/numbers/set/nr = 24"); 477 assertValueOfXPath("true", context, "/numbers/set/nr/@value = '9999'"); 478 assertValueOfXPath("true", context, "/numbers/set/nr/@value = 9999.0"); 479 assertValueOfXPath("true", context, "/numbers/set/nr/@value = 66"); 480 } 481 } 482 483 485 public void testid53733() throws JaxenException 486 { 487 Navigator nav = getNavigator(); 488 String url = "xml/numbers.xml"; 489 log("Document [" + url + "]"); 490 Object document = nav.getDocument(url); 491 XPath contextpath = new BaseXPath("/", nav); 492 log("Initial Context :: " + contextpath); 493 List list = contextpath.selectNodes(document); 494 Iterator iter = list.iterator(); 495 while (iter.hasNext()) 496 { 497 Object context = iter.next(); 498 assertValueOfXPath("true", context, "(8 * 2 + 1) = 17"); 499 assertValueOfXPath("true", context, "(1 + 8 * 2) = 17"); 500 assertValueOfXPath("true", context, "(7 - 3 + 1) = 5"); 501 assertValueOfXPath("true", context, "(8 - 4 + 5 - 6) = 3"); 502 504 506 assertValueOfXPath("0", context, "3 - 2 - 1"); 507 509 assertValueOfXPath("1", context, "8 div 4 div 2"); 510 512 assertValueOfXPath("3", context, "3 mod 7 mod 5"); 513 515 assertValueOfXPath("false", context, "1 = 2 = 2"); 516 518 assertValueOfXPath("false", context, "2 != 3 != 1"); 519 521 assertValueOfXPath("false", context, "3 > 2 > 1"); 522 524 assertValueOfXPath("false", context, "3 >= 2 >= 2"); 525 527 assertValueOfXPath("true", context, "1 < 2 < 3"); 528 530 assertValueOfXPath("true", context, "2 <= 2 <= 3"); 531 } 532 } 533 534 536 public void testid53850() throws JaxenException 537 { 538 Navigator nav = getNavigator(); 539 String url = "xml/pi2.xml"; 540 log("Document [" + url + "]"); 541 Object document = nav.getDocument(url); 542 XPath contextpath = new BaseXPath("/a/c", nav); 543 log("Initial Context :: " + contextpath); 544 List list = contextpath.selectNodes(document); 545 Iterator iter = list.iterator(); 546 while (iter.hasNext()) 547 { 548 Object context = iter.next(); 549 assertCountXPath(1, context, "//processing-instruction()"); 550 assertCountXPath(1, context, "preceding-sibling::*"); 551 assertCountXPath(5, context, "preceding-sibling::node()"); 552 assertCountXPath(1, context, "preceding-sibling::*[1]"); 553 assertCountXPath(1, context, "preceding-sibling::processing-instruction()"); 554 assertValueOfXPath("order-by=\"x\"", context, "preceding-sibling::processing-instruction()"); 555 assertValueOfXPath("foo", context, "preceding-sibling::*[1]"); 556 assertValueOfXPath("order-by=\"x\"", context, "preceding-sibling::node()[2]"); 557 } 558 } 559 560 public void testid53911() throws JaxenException 561 { 562 Navigator nav = getNavigator(); 563 String url = "xml/id.xml"; 564 log("Document [" + url + "]"); 565 Object document = nav.getDocument(url); 566 XPath contextpath = new BaseXPath("/", nav); 567 log("Initial Context :: " + contextpath); 568 List list = contextpath.selectNodes(document); 569 SimpleVariableContext varContext = new SimpleVariableContext(); 570 varContext.setVariableValue(null, "foobar", "foobar"); 571 varContext.setVariableValue(null, "foo", "foo"); 572 getContextSupport().setVariableContext(varContext); 573 Iterator iter = list.iterator(); 574 while (iter.hasNext()) 575 { 576 Object context = iter.next(); 577 assertValueOfXPath("foobar", context, "$foobar"); 578 assertCountXPath(1, context, "/foo[@id=$foobar]"); 579 assertCountXPath(0, context, "/foo[@id='$foobar']"); 580 assertCountXPath(1, context, "/foo[concat($foo, 'bar')=@id]"); 581 assertCountXPath(0, context, "CD_Library/artist[@name=$artist]"); 582 } 583 } 584 585 public void testid53957() throws JaxenException 586 { 587 Navigator nav = getNavigator(); 588 String url = "xml/id.xml"; 589 log("Document [" + url + "]"); 590 Object document = nav.getDocument(url); 591 XPath contextpath = new BaseXPath("/", nav); 592 log("Initial Context :: " + contextpath); 593 List list = contextpath.selectNodes(document); 594 Iterator iter = list.iterator(); 595 while (iter.hasNext()) 596 { 597 Object context = iter.next(); 598 600 assertCountXPath(1, context, "/foo/@id/parent::foo"); 601 } 602 } 603 604 606 public void testid53975() throws JaxenException 607 { 608 Navigator nav = getNavigator(); 609 String url = "xml/id.xml"; 610 log("Document [" + url + "]"); 611 Object document = nav.getDocument(url); 612 XPath contextpath = new BaseXPath("/foo/@id", nav); 613 log("Initial Context :: " + contextpath); 614 List list = contextpath.selectNodes(document); 615 Iterator iter = list.iterator(); 616 while (iter.hasNext()) 617 { 618 Object context = iter.next(); 619 assertCountXPath(1, context, "parent::foo"); 620 } 621 } 622 623 public void testid53992() throws JaxenException 624 { 625 Navigator nav = getNavigator(); 626 String url = "xml/pi.xml"; 627 log("Document [" + url + "]"); 628 Object document = nav.getDocument(url); 629 XPath contextpath = new BaseXPath("/", nav); 630 log("Initial Context :: " + contextpath); 631 List list = contextpath.selectNodes(document); 632 Iterator iter = list.iterator(); 633 while (iter.hasNext()) 634 { 635 Object context = iter.next(); 636 assertCountXPath(3, context, "//processing-instruction()"); 637 assertCountXPath(2, context, "//processing-instruction('cheese')"); 638 try 639 { 640 Object result = assertCountXPath2(1, context, "//processing-instruction('toast')"); 641 assertValueOfXPath("is tasty", result, "string()"); 642 } 643 catch (UnsupportedAxisException e) 644 { 645 log(debug, " ## SKIPPED -- Unsupported Axis"); 646 } 647 } 648 } 649 650 652 public void testid54032() throws JaxenException 653 { 654 Navigator nav = getNavigator(); 655 String url = "xml/evaluate.xml"; 656 log("Document [" + url + "]"); 657 Object document = nav.getDocument(url); 658 XPath contextpath = new BaseXPath("/", nav); 659 log("Initial Context :: " + contextpath); 660 List list = contextpath.selectNodes(document); 661 Iterator iter = list.iterator(); 662 while (iter.hasNext()) 663 { 664 Object context = iter.next(); 665 assertCountXPath(3, context, "evaluate('//jumps/*')"); 666 assertCountXPath(1, context, "evaluate('//jumps/object/dog')"); 667 assertCountXPath(0, context, "evaluate('//jumps/object')/evaluate"); 668 assertCountXPath(1, context, "evaluate('//jumps/object')/dog"); 669 assertCountXPath(1, context, "evaluate('//jumps/*')/dog"); 670 assertCountXPath(1, context, "//metatest[ evaluate(@select) = . ]"); 671 } 672 } 673 674 public void testid54082() throws JaxenException 675 { 676 Navigator nav = getNavigator(); 677 String url = "xml/numbers.xml"; 678 log("Document [" + url + "]"); 679 Object document = nav.getDocument(url); 680 XPath contextpath = new BaseXPath("/numbers/set[1]", nav); 681 log("Initial Context :: " + contextpath); 682 List list = contextpath.selectNodes(document); 683 Iterator iter = list.iterator(); 684 while (iter.hasNext()) 685 { 686 Object context = iter.next(); 687 assertCountXPath(1, context, "*[-3 = .]"); 688 assertValueOfXPath("true", context, "54 < *"); 689 assertValueOfXPath("true", context, "55 <= *"); 690 assertValueOfXPath("false", context, "69 < *"); 691 assertValueOfXPath("true", context, "-2 > *"); 692 assertValueOfXPath("true", context, "-3 >= *"); 693 assertValueOfXPath("false", context, "-4 >= *"); 694 } 695 } 696 697 708 710 public void testid54145() throws JaxenException 711 { 712 Navigator nav = getNavigator(); 713 String url = "xml/axis.xml"; 714 log("Document [" + url + "]"); 715 Object document = nav.getDocument(url); 716 XPath contextpath = new BaseXPath("/root", nav); 717 log("Initial Context :: " + contextpath); 718 List list = contextpath.selectNodes(document); 719 Iterator iter = list.iterator(); 720 while (iter.hasNext()) 721 { 722 Object context = iter.next(); 723 assertCountXPath(0, context, "preceding-sibling::*"); 724 } 725 } 726 727 public void testid54156() throws JaxenException 728 { 729 Navigator nav = getNavigator(); 730 String url = "xml/axis.xml"; 731 log("Document [" + url + "]"); 732 Object document = nav.getDocument(url); 733 XPath contextpath = new BaseXPath("/root/a/a.3", nav); 734 log("Initial Context :: " + contextpath); 735 List list = contextpath.selectNodes(document); 736 Iterator iter = list.iterator(); 737 while (iter.hasNext()) 738 { 739 Object context = iter.next(); 740 assertCountXPath(2, context, "preceding::*"); 741 } 742 } 743 744 public void testid54168() throws JaxenException 745 { 746 Navigator nav = getNavigator(); 747 String url = "xml/axis.xml"; 748 log("Document [" + url + "]"); 749 Object document = nav.getDocument(url); 750 XPath contextpath = new BaseXPath("/root/a/a.3", nav); 751 log("Initial Context :: " + contextpath); 752 List list = contextpath.selectNodes(document); 753 Iterator iter = list.iterator(); 754 while (iter.hasNext()) 755 { 756 Object context = iter.next(); 757 assertCountXPath(2, context, "preceding-sibling::*"); 758 } 759 } 760 761 public void testid54180() throws JaxenException 762 { 763 Navigator nav = getNavigator(); 764 String url = "xml/axis.xml"; 765 log("Document [" + url + "]"); 766 Object document = nav.getDocument(url); 767 XPath contextpath = new BaseXPath("/", nav); 768 log("Initial Context :: " + contextpath); 769 List list = contextpath.selectNodes(document); 770 Iterator iter = list.iterator(); 771 while (iter.hasNext()) 772 { 773 Object context = iter.next(); 774 assertValueOfXPath("a.2", context, "name(/root/a/a.3/preceding-sibling::*[1])"); 775 assertValueOfXPath("a.1", context, "name(/root/a/a.3/preceding-sibling::*[2])"); 776 } 777 } 778 779 public void testid54197() throws JaxenException 780 { 781 Navigator nav = getNavigator(); 782 String url = "xml/axis.xml"; 783 log("Document [" + url + "]"); 784 Object document = nav.getDocument(url); 785 XPath contextpath = new BaseXPath("/", nav); 786 log("Initial Context :: " + contextpath); 787 List list = contextpath.selectNodes(document); 788 Iterator iter = list.iterator(); 789 while (iter.hasNext()) 790 { 791 Object context = iter.next(); 792 assertValueOfXPath("a.4", context, "name(/root/a/a.3/following-sibling::*[1])"); 793 assertValueOfXPath("a.5", context, "name(/root/a/a.3/following-sibling::*[2])"); 794 } 795 } 796 797 public void testid54219() throws JaxenException 798 { 799 Navigator nav = getNavigator(); 800 String url = "xml/web.xml"; 801 log("Document [" + url + "]"); 802 Object document = nav.getDocument(url); 803 XPath contextpath = new BaseXPath("/", nav); 804 log("Initial Context :: " + contextpath); 805 List list = contextpath.selectNodes(document); 806 Iterator iter = list.iterator(); 807 while (iter.hasNext()) 808 { 809 Object context = iter.next(); 810 assertValueOfXPath("snoop", context, "/web-app/servlet[1]/servlet-name"); 811 assertValueOfXPath("snoop", context, "/web-app/servlet[1]/servlet-name/text()"); 812 assertValueOfXPath("file", context, "/web-app/servlet[2]/servlet-name"); 813 assertValueOfXPath("file", context, "/web-app/servlet[2]/servlet-name/text()"); 814 } 815 } 816 817 public void testid54249() throws JaxenException 818 { 819 Navigator nav = getNavigator(); 820 String url = "xml/web.xml"; 821 log("Document [" + url + "]"); 822 Object document = nav.getDocument(url); 823 XPath contextpath = new BaseXPath("/web-app/servlet[1]", nav); 824 log("Initial Context :: " + contextpath); 825 List list = contextpath.selectNodes(document); 826 Iterator iter = list.iterator(); 827 while (iter.hasNext()) 828 { 829 Object context = iter.next(); 830 assertValueOfXPath("snoop", context, "servlet-name"); 831 assertValueOfXPath("snoop", context, "servlet-name/text()"); 832 } 833 } 834 835 public void testid54266() throws JaxenException 836 { 837 Navigator nav = getNavigator(); 838 String url = "xml/web.xml"; 839 log("Document [" + url + "]"); 840 Object document = nav.getDocument(url); 841 XPath contextpath = new BaseXPath("/web-app/servlet[2]/servlet-name", nav); 842 log("Initial Context :: " + contextpath); 843 List list = contextpath.selectNodes(document); 844 Iterator iter = list.iterator(); 845 while (iter.hasNext()) 846 { 847 Object context = iter.next(); 848 assertCountXPath(3, context, "preceding::*"); 849 } 850 } 851 852 public void testid54278() throws JaxenException 853 { 854 Navigator nav = getNavigator(); 855 String url = "xml/web.xml"; 856 log("Document [" + url + "]"); 857 Object document = nav.getDocument(url); 858 XPath contextpath = new BaseXPath("/web-app/servlet[2]/servlet-name", nav); 859 log("Initial Context :: " + contextpath); 860 List list = contextpath.selectNodes(document); 861 Iterator iter = list.iterator(); 862 while (iter.hasNext()) 863 { 864 Object context = iter.next(); 865 assertCountXPath(13, context, "following::*"); 866 } 867 } 868 869 871 public void testid54298() throws JaxenException 872 { 873 Navigator nav = getNavigator(); 874 String url = "xml/web.xml"; 875 log("Document [" + url + "]"); 876 Object document = nav.getDocument(url); 877 XPath contextpath = new BaseXPath("/", nav); 878 log("Initial Context :: " + contextpath); 879 List list = contextpath.selectNodes(document); 880 Iterator iter = list.iterator(); 881 while (iter.hasNext()) 882 { 883 Object context = iter.next(); 884 try 885 { 886 Object result = assertCountXPath2(1, context, "*"); 887 assertValueOfXPath("web-app", result, "name()"); 888 } 889 catch (UnsupportedAxisException e) 890 { 891 log(debug, " ## SKIPPED -- Unsupported Axis"); 892 } 893 897 try 898 { 899 Object result = assertCountXPath2(1, context, "./*"); 900 assertValueOfXPath("web-app", result, "name()"); 901 } 902 catch (UnsupportedAxisException e) 903 { 904 log(debug, " ## SKIPPED -- Unsupported Axis"); 905 } 906 try 907 { 908 Object result = assertCountXPath2(1, context, "child::*"); 909 assertValueOfXPath("web-app", result, "name()"); 910 } 911 catch (UnsupportedAxisException e) 912 { 913 log(debug, " ## SKIPPED -- Unsupported Axis"); 914 } 915 try 916 { 917 Object result = assertCountXPath2(1, context, "/*"); 918 assertValueOfXPath("web-app", result, "name()"); 919 } 920 catch (UnsupportedAxisException e) 921 { 922 log(debug, " ## SKIPPED -- Unsupported Axis"); 923 } 924 try 925 { 926 Object result = assertCountXPath2(1, context, "/child::node()"); 927 assertValueOfXPath("web-app", result, "name(.)"); 928 } 929 catch (UnsupportedAxisException e) 930 { 931 log(debug, " ## SKIPPED -- Unsupported Axis"); 932 } 933 try 934 { 935 Object result = assertCountXPath2(1, context, "child::node()"); 936 assertValueOfXPath("web-app", result, "name(.)"); 937 } 938 catch (UnsupportedAxisException e) 939 { 940 log(debug, " ## SKIPPED -- Unsupported Axis"); 941 } 942 944 assertValueOfXPath("", context, "name()"); 945 assertValueOfXPath("", context, "name(.)"); 946 assertValueOfXPath("", context, "name(parent::*)"); 947 assertValueOfXPath("", context, "name(/)"); 948 assertValueOfXPath("", context, "name(/.)"); 949 assertValueOfXPath("", context, "name(/self::node())"); 950 952 assertValueOfXPath("web-app", context, "name(node())"); 953 assertValueOfXPath("web-app", context, "name(/node())"); 954 assertValueOfXPath("web-app", context, "name(/*)"); 955 assertValueOfXPath("web-app", context, "name(/child::*)"); 956 assertValueOfXPath("web-app", context, "name(/child::node())"); 957 assertValueOfXPath("web-app", context, "name(/child::node())"); 958 assertValueOfXPath("web-app", context, "name(child::node())"); 959 assertValueOfXPath("web-app", context, "name(./*)"); 960 assertValueOfXPath("web-app", context, "name(*)"); 961 } 962 } 963 964 public void testid54467() throws JaxenException 965 { 966 Navigator nav = getNavigator(); 967 String url = "xml/web.xml"; 968 log("Document [" + url + "]"); 969 Object document = nav.getDocument(url); 970 XPath contextpath = new BaseXPath("/*", nav); 971 log("Initial Context :: " + contextpath); 972 List list = contextpath.selectNodes(document); 973 Iterator iter = list.iterator(); 974 while (iter.hasNext()) 975 { 976 Object context = iter.next(); 977 979 assertValueOfXPath("", context, "name(..)"); 980 assertValueOfXPath("", context, "name(parent::node())"); 981 assertValueOfXPath("", context, "name(parent::*)"); 982 984 assertValueOfXPath("web-app", context, "name()"); 985 assertValueOfXPath("web-app", context, "name(.)"); 986 assertValueOfXPath("web-app", context, "name(../*)"); 987 assertValueOfXPath("web-app", context, "name(../child::node())"); 988 } 989 } 990 991 993 public void testid54522() throws JaxenException 994 { 995 Navigator nav = getNavigator(); 996 String url = "xml/nitf.xml"; 997 log("Document [" + url + "]"); 998 Object document = nav.getDocument(url); 999 XPath contextpath = new BaseXPath("/nitf/head/docdata", nav); 1000 log("Initial Context :: " + contextpath); 1001 List list = contextpath.selectNodes(document); 1002 Iterator iter = list.iterator(); 1003 while (iter.hasNext()) 1004 { 1005 Object context = iter.next(); 1006 assertCountXPath(1, context, "doc-id[@regsrc='AP' and @id-string='D76UIMO80']"); 1007 } 1008 } 1009 1010 public void testid54534() throws JaxenException 1011 { 1012 Navigator nav = getNavigator(); 1013 String url = "xml/nitf.xml"; 1014 log("Document [" + url + "]"); 1015 Object document = nav.getDocument(url); 1016 XPath contextpath = new BaseXPath("/nitf/head", nav); 1017 log("Initial Context :: " + contextpath); 1018 List list = contextpath.selectNodes(document); 1019 Iterator iter = list.iterator(); 1020 while (iter.hasNext()) 1021 { 1022 Object context = iter.next(); 1023 assertCountXPath(1, context, "meta[@name='ap-cycle']"); 1024 assertCountXPath(1, context, "meta[@content='AP']"); 1025 assertCountXPath(8, context, "meta[@name and @content]"); 1026 assertCountXPath(1, context, "meta[@name='ap-cycle' and @content='AP']"); 1027 assertCountXPath(7, context, "meta[@name != 'ap-cycle']"); 1028 } 1029 } 1030 1031 public void testid54570() throws JaxenException 1032 { 1033 Navigator nav = getNavigator(); 1034 String url = "xml/nitf.xml"; 1035 log("Document [" + url + "]"); 1036 Object document = nav.getDocument(url); 1037 XPath contextpath = new BaseXPath("/", nav); 1038 log("Initial Context :: " + contextpath); 1039 List list = contextpath.selectNodes(document); 1040 Iterator iter = list.iterator(); 1041 while (iter.hasNext()) 1042 { 1043 Object context = iter.next(); 1044 assertCountXPath(1, context, "/nitf/head/meta[@name='ap-cycle']"); 1045 assertCountXPath(1, context, "/nitf/head/meta[@content='AP']"); 1046 assertCountXPath(8, context, "/nitf/head/meta[@name and @content]"); 1047 assertCountXPath(1, context, "/nitf/head/meta[@name='ap-cycle' and @content='AP']"); 1048 assertCountXPath(7, context, "/nitf/head/meta[@name != 'ap-cycle']"); 1049 } 1050 } 1051 1052 public void testid54614() throws JaxenException 1053 { 1054 Navigator nav = getNavigator(); 1055 String url = "xml/moreover.xml"; 1056 log("Document [" + url + "]"); 1057 Object document = nav.getDocument(url); 1058 XPath contextpath = new BaseXPath("/", nav); 1059 log("Initial Context :: " + contextpath); 1060 List list = contextpath.selectNodes(document); 1061 Iterator iter = list.iterator(); 1062 while (iter.hasNext()) 1063 { 1064 Object context = iter.next(); 1065 assertCountXPath(1, context, "/child::node()"); 1066 assertCountXPath(1, context, "/*"); 1067 assertCountXPath(20, context, "/*/article"); 1068 assertCountXPath(221, context, "//*"); 1069 assertCountXPath(20, context, "//*[local-name()='article']"); 1070 assertCountXPath(20, context, "//article"); 1071 assertCountXPath(20, context, "/*/*[@code]"); 1072 assertCountXPath(1, context, "/moreovernews/article[@code='13563275']"); 1073 try 1074 { 1075 BaseXPath xpath = new BaseXPath("/moreovernews/article[@code='13563275']"); 1076 List results = xpath.selectNodes(getContext(context)); 1077 Object result = results.get(0); 1078 assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url"); 1079 } 1080 catch (UnsupportedAxisException e) 1081 { 1082 log(debug, " ## SKIPPED -- Unsupported Axis"); 1083 } 1084 try 1085 { 1086 BaseXPath xpath = new BaseXPath("/*/article[@code='13563275']"); 1087 List results = xpath.selectNodes(getContext(context)); 1088 Object result = results.get(0); 1089 assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url"); 1090 } 1091 catch (UnsupportedAxisException e) 1092 { 1093 log(debug, " ## SKIPPED -- Unsupported Axis"); 1094 } 1095 try 1096 { 1097 BaseXPath xpath = new BaseXPath("//article[@code='13563275']"); 1098 List results = xpath.selectNodes(getContext(context)); 1099 Object result = results.get(0); 1100 assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url"); 1101 } 1102 catch (UnsupportedAxisException e) 1103 { 1104 log(debug, " ## SKIPPED -- Unsupported Axis"); 1105 } 1106 try 1107 { 1108 BaseXPath xpath = new BaseXPath("//*[@code='13563275']"); 1109 List results = xpath.selectNodes(getContext(context)); 1110 Object result = results.get(0); 1111 assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url"); 1112 } 1113 catch (UnsupportedAxisException e) 1114 { 1115 log(debug, " ## SKIPPED -- Unsupported Axis"); 1116 } 1117 try 1118 { 1119 BaseXPath xpath = new BaseXPath("/child::node()/child::node()[@code='13563275']"); 1120 List results = xpath.selectNodes(getContext(context)); 1121 Object result = results.get(0); 1122 assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url"); 1123 } 1124 catch (UnsupportedAxisException e) 1125 { 1126 log(debug, " ## SKIPPED -- Unsupported Axis"); 1127 } 1128 try 1129 { 1130 BaseXPath xpath = new BaseXPath("/*/*[@code='13563275']"); 1131 List results = xpath.selectNodes(getContext(context)); 1132 Object result = results.get(0); 1133 assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url"); 1134 } 1135 catch (UnsupportedAxisException e) 1136 { 1137 log(debug, " ## SKIPPED -- Unsupported Axis"); 1138 } 1139 } 1140 } 1141 1142 1144 public void testid54747() throws JaxenException 1145 { 1146 Navigator nav = getNavigator(); 1147 String url = "xml/contents.xml"; 1148 log("Document [" + url + "]"); 1149 Object document = nav.getDocument(url); 1150 XPath contextpath = new BaseXPath("/", nav); 1151 log("Initial Context :: " + contextpath); 1152 List list = contextpath.selectNodes(document); 1153 Iterator iter = list.iterator(); 1154 while (iter.hasNext()) 1155 { 1156 Object context = iter.next(); 1157 assertCountXPath(3, context, "processing-instruction()"); 1158 assertCountXPath(3, context, "/processing-instruction()"); 1159 assertCountXPath(1, context, "/comment()"); 1160 assertCountXPath(1, context, "comment()"); 1161 assertCountXPath(2, context, "/child::node()/comment()"); 1162 assertCountXPath(2, context, "/*/comment()"); 1163 assertCountXPath(3, context, "//comment()"); 1164 } 1165 } 1166 1167 1169 public void testid54802() throws JaxenException 1170 { 1171 Navigator nav = getNavigator(); 1172 String url = "xml/fibo.xml"; 1173 log("Document [" + url + "]"); 1174 Object document = nav.getDocument(url); 1175 XPath contextpath = new BaseXPath("/", nav); 1176 log("Initial Context :: " + contextpath); 1177 List list = contextpath.selectNodes(document); 1178 Iterator iter = list.iterator(); 1179 while (iter.hasNext()) 1180 { 1181 Object context = iter.next(); 1182 assertCountXPath(9, context, "/*/fibonacci[position() < 10]"); 1183 assertValueOfXPath("196417", context, "sum(//fibonacci)"); 1184 assertValueOfXPath("325", context, "sum(//fibonacci/@index)"); 1185 assertValueOfXPath("1", context, "/*/fibonacci[2]"); 1186 assertValueOfXPath("75025", context, "/*/fibonacci[ count(/*/fibonacci) ]"); 1187 assertValueOfXPath("46368", context, "/*/fibonacci[ count(/*/fibonacci) - 1 ]"); 1188 } 1189 } 1190 1191 1193 1195 public void testid54853() throws JaxenException 1196 { 1197 Navigator nav = getNavigator(); 1198 String url = "xml/web.xml"; 1199 log("Document [" + url + "]"); 1200 Object document = nav.getDocument(url); 1201 XPath contextpath = new BaseXPath("/", nav); 1202 log("Initial Context :: " + contextpath); 1203 List list = contextpath.selectNodes(document); 1204 Iterator iter = list.iterator(); 1205 while (iter.hasNext()) 1206 { 1207 Object context = iter.next(); 1208 assertCountXPath(19, context, "descendant-or-self::*"); 1209 assertCountXPath(19, context, "descendant::*"); 1210 assertCountXPath(19, context, "/descendant::*"); 1211 assertCountXPath(19, context, "/descendant-or-self::*"); 1212 assertCountXPath(2, context, "/descendant::servlet"); 1213 assertCountXPath(2, context, "/descendant-or-self::servlet"); 1214 assertCountXPath(2, context, "descendant-or-self::servlet"); 1215 assertCountXPath(2, context, "descendant::servlet"); 1216 assertCountXPath(2, context, "/*/servlet"); 1217 assertValueOfXPath("2", context, "count(/*/servlet)"); 1218 assertCountXPath(2, context, "//servlet"); 1219 assertValueOfXPath("2", context, "count(//servlet)"); 1220 } 1221 } 1222 1223 public void testid54932() throws JaxenException 1224 { 1225 Navigator nav = getNavigator(); 1226 String url = "xml/web.xml"; 1227 log("Document [" + url + "]"); 1228 Object document = nav.getDocument(url); 1229 XPath contextpath = new BaseXPath("/web-app", nav); 1230 log("Initial Context :: " + contextpath); 1231 List list = contextpath.selectNodes(document); 1232 Iterator iter = list.iterator(); 1233 while (iter.hasNext()) 1234 { 1235 Object context = iter.next(); 1236 assertCountXPath(2, context, "/descendant::servlet"); 1237 assertCountXPath(2, context, "/descendant-or-self::servlet"); 1238 assertCountXPath(2, context, "descendant-or-self::servlet"); 1239 assertCountXPath(2, context, "descendant::servlet"); 1240 } 1241 } 1242 1243 public void testid54968() throws JaxenException 1244 { 1245 Navigator nav = getNavigator(); 1246 String url = "xml/much_ado.xml"; 1247 log("Document [" + url + "]"); 1248 Object document = nav.getDocument(url); 1249 XPath contextpath = new BaseXPath("/", nav); 1250 log("Initial Context :: " + contextpath); 1251 List list = contextpath.selectNodes(document); 1252 Iterator iter = list.iterator(); 1253 while (iter.hasNext()) 1254 { 1255 Object context = iter.next(); 1256 assertCountXPath(5, context, "/descendant::ACT"); 1257 assertCountXPath(5, context, "descendant::ACT"); 1258 assertValueOfXPath("Much Ado about Nothing", context, "/PLAY/TITLE"); 1259 assertValueOfXPath("4", context, "2+2"); 1260 assertValueOfXPath("21", context, "5 * 4 + 1"); 1261 assertValueOfXPath("5", context, "count(descendant::ACT)"); 1262 assertValueOfXPath("35", context, "10 + count(descendant::ACT) * 5"); 1263 assertValueOfXPath("75", context, "(10 + count(descendant::ACT)) * 5"); 1264 } 1265 } 1266 1267 public void testid55020() throws JaxenException 1268 { 1269 Navigator nav = getNavigator(); 1270 String url = "xml/much_ado.xml"; 1271 log("Document [" + url + "]"); 1272 Object document = nav.getDocument(url); 1273 XPath contextpath = new BaseXPath("/PLAY/ACT[2]/SCENE[1]", nav); 1274 log("Initial Context :: " + contextpath); 1275 List list = contextpath.selectNodes(document); 1276 Iterator iter = list.iterator(); 1277 while (iter.hasNext()) 1278 { 1279 Object context = iter.next(); 1280 assertCountXPath(5, context, "/descendant::ACT"); 1281 assertCountXPath(5, context, "../../descendant::ACT"); 1282 assertCountXPath(141, context, "/PLAY/ACT[2]/SCENE[1]/descendant::SPEAKER"); 1283 assertCountXPath(141, context, "descendant::SPEAKER"); 1284 assertValueOfXPath("646", context, "count(descendant::*)+1"); 1285 assertValueOfXPath("142", context, "count(descendant::SPEAKER)+1"); 1286 assertValueOfXPath("2", context, "count(ancestor::*)"); 1287 assertValueOfXPath("1", context, "count(ancestor::PLAY)"); 1288 assertValueOfXPath("3", context, "count(ancestor-or-self::*)"); 1289 assertValueOfXPath("1", context, "count(ancestor-or-self::PLAY)"); 1290 assertValueOfXPath("6", context, "5+count(ancestor::*)-1"); 1291 } 1292 } 1293 1294 public void testid55090() throws JaxenException 1295 { 1296 Navigator nav = getNavigator(); 1297 String url = "xml/much_ado.xml"; 1298 log("Document [" + url + "]"); 1299 Object document = nav.getDocument(url); 1300 XPath contextpath = new BaseXPath("/", nav); 1301 log("Initial Context :: " + contextpath); 1302 List list = contextpath.selectNodes(document); 1303 Iterator iter = list.iterator(); 1304 while (iter.hasNext()) 1305 { 1306 Object context = iter.next(); 1307 1309 assertValueOfXPath("5", context, "count(/PLAY/ACT/SCENE[1])"); 1310 } 1311 } 1312 1313 1315 public void testid55112() throws JaxenException 1316 { 1317 Navigator nav = getNavigator(); 1318 String url = "xml/web.xml"; 1319 log("Document [" + url + "]"); 1320 Object document = nav.getDocument(url); 1321 XPath contextpath = new BaseXPath("/", nav); 1322 log("Initial Context :: " + contextpath); 1323 List list = contextpath.selectNodes(document); 1324 Iterator iter = list.iterator(); 1325 while (iter.hasNext()) 1326 { 1327 Object context = iter.next(); 1328 1330 assertCountXPath(1, context, "//servlet-mapping/preceding::*[1][name()='description']"); 1331 assertCountXPath(1, context, "/web-app/servlet//description/following::*[1][name()='servlet-mapping']"); 1332 assertCountXPath(1, context, "/web-app/servlet//description/following::*[2][name()='servlet-name']"); 1333 } 1334 } 1335 1336 1338 public void testid55150() throws JaxenException 1339 { 1340 Navigator nav = getNavigator(); 1341 String url = "xml/text.xml"; 1342 log("Document [" + url + "]"); 1343 Object document = nav.getDocument(url); 1344 XPath contextpath = new BaseXPath("/", nav); 1345 log("Initial Context :: " + contextpath); 1346 List list = contextpath.selectNodes(document); 1347 Iterator iter = list.iterator(); 1348 while (iter.hasNext()) 1349 { 1350 Object context = iter.next(); 1351 try 1352 { 1353 Object result = assertCountXPath2(1, context, "document('xml/web.xml')"); 1354 assertValueOfXPath("snoop", result, "/web-app/servlet[1]/servlet-name"); 1355 assertValueOfXPath("snoop", result, "/web-app/servlet[1]/servlet-name/text()"); 1356 } 1357 catch (UnsupportedAxisException e) 1358 { 1359 log(debug, " ## SKIPPED -- Unsupported Axis"); 1360 } 1361 assertValueOfXPath("snoop", context, "document('xml/web.xml')/web-app/servlet[1]/servlet-name"); 1362 } 1363 } 1364 1365 1369 public void testid55189() throws JaxenException 1370 { 1371 Navigator nav = getNavigator(); 1372 String url = "xml/text.xml"; 1373 log("Document [" + url + "]"); 1374 Object document = nav.getDocument(url); 1375 XPath contextpath = new BaseXPath("/foo/bar/cheese[1]", nav); 1376 log("Initial Context :: " + contextpath); 1377 List list = contextpath.selectNodes(document); 1378 Iterator iter = list.iterator(); 1379 while (iter.hasNext()) 1380 { 1381 Object context = iter.next(); 1382 assertValueOfXPath("3foo3", context, "concat(./@id,'foo',@id)"); 1383 assertValueOfXPath("3snoop3", context, "concat(./@id,document('xml/web.xml')/web-app/servlet[1]/servlet-name,./@id)"); 1384 } 1385 } 1386 1387 public void testid55211() throws JaxenException 1388 { 1389 Navigator nav = getNavigator(); 1390 String url = "xml/message.xml"; 1391 log("Document [" + url + "]"); 1392 Object document = nav.getDocument(url); 1393 XPath contextpath = new BaseXPath("/", nav); 1394 log("Initial Context :: " + contextpath); 1395 List list = contextpath.selectNodes(document); 1396 Iterator iter = list.iterator(); 1397 while (iter.hasNext()) 1398 { 1399 Object context = iter.next(); 1400 assertValueOfXPath("Pruefgebiete", context, "/message/body/data/items/item[name/text()='parentinfo']/value"); 1401 assertValueOfXPath("Pruefgebiete", context, "document('xml/message.xml')/message/body/data/items/item[name/text()='parentinfo']/value"); 1402 } 1403 } 1404 1405 1407 public void testid55183() throws JaxenException 1408 { 1409 Navigator nav = getNavigator(); 1410 String url = "xml/simple.xml"; 1411 log("Document [" + url + "]"); 1412 Object document = nav.getDocument(url); 1413 XPath contextpath = new BaseXPath("/root/a", nav); 1414 log("Initial Context :: " + contextpath); 1415 List list = contextpath.selectNodes(document); 1416 Iterator iter = list.iterator(); 1417 while (iter.hasNext()) 1418 { 1419 Object context = iter.next(); 1420 assertValueOfXPath("ab", context, "concat( ., /root/b )"); 1421 assertValueOfXPath("ba", context, "concat( ../b, . )"); 1422 assertValueOfXPath("ba", context, "concat( /root/b, . )"); 1423 assertValueOfXPath("db", context, "concat( /root/c/d, ../b )"); 1424 } 1425 } 1426 1427 1429 public void testid55268() throws JaxenException 1430 { 1431 Navigator nav = getNavigator(); 1432 String url = "xml/simple.xml"; 1433 log("Document [" + url + "]"); 1434 Object document = nav.getDocument(url); 1435 XPath contextpath = new BaseXPath("/", nav); 1436 log("Initial Context :: " + contextpath); 1437 List list = contextpath.selectNodes(document); 1438 Iterator iter = list.iterator(); 1439 while (iter.hasNext()) 1440 { 1441 Object context = iter.next(); 1442 assertValueOfXPath("", context, "translate( '', '', '' )"); 1443 assertValueOfXPath("abcd", context, "translate( 'abcd', '', '' )"); 1444 assertValueOfXPath("abcd", context, "translate( 'abcd', 'abcd', 'abcd' )"); 1445 assertValueOfXPath("abcd", context, "translate( 'abcd', 'dcba', 'dcba' )"); 1446 assertValueOfXPath("dcba", context, "translate( 'abcd', 'abcd', 'dcba' )"); 1447 assertValueOfXPath("ab", context, "translate( 'abcd', 'abcd', 'ab' )"); 1448 assertValueOfXPath("cd", context, "translate( 'abcd', 'cdab', 'cd' )"); 1449 assertValueOfXPath("xy", context, "translate( 'abcd', 'acbd', 'xy' )"); 1450 assertValueOfXPath("abcd", context, "translate( 'abcd', 'abcdb', 'abcdb' )"); 1451 assertValueOfXPath("abcd", context, "translate( 'abcd', 'abcd', 'abcdb' )"); 1452 } 1453 } 1454 1455 public void testid55331() throws JaxenException 1456 { 1457 Navigator nav = getNavigator(); 1458 String url = "xml/simple.xml"; 1459 log("Document [" + url + "]"); 1460 Object document = nav.getDocument(url); 1461 XPath contextpath = new BaseXPath("/", nav); 1462 log("Initial Context :: " + contextpath); 1463 List list = contextpath.selectNodes(document); 1464 Iterator iter = list.iterator(); 1465 while (iter.hasNext()) 1466 { 1467 Object context = iter.next(); 1468 assertValueOfXPath("234", context, "substring('12345', 1.5, 2.6)"); 1469 assertValueOfXPath("12", context, "substring('12345', 0, 3)"); 1470 assertValueOfXPath("", context, "substring('12345', 0 div 0, 3)"); 1471 assertValueOfXPath("", context, "substring('12345', 1, 0 div 0)"); 1472 assertValueOfXPath("12345", context, "substring('12345', -42, 1 div 0)"); 1473 assertValueOfXPath("", context, "substring('12345', -1 div 0, 1 div 0)"); 1474 assertValueOfXPath("345", context, "substring('12345', 3)"); 1475 assertValueOfXPath("12345", context, "substring('12345',1,15)"); 1476 } 1477 } 1478 1479 1481 public void testid55382() throws JaxenException 1482 { 1483 Navigator nav = getNavigator(); 1484 String url = "xml/simple.xml"; 1485 log("Document [" + url + "]"); 1486 Object document = nav.getDocument(url); 1487 XPath contextpath = new BaseXPath("/", nav); 1488 log("Initial Context :: " + contextpath); 1489 List list = contextpath.selectNodes(document); 1490 Iterator iter = list.iterator(); 1491 while (iter.hasNext()) 1492 { 1493 Object context = iter.next(); 1494 assertValueOfXPath("abc", context, "normalize-space(' abc ')"); 1495 assertValueOfXPath("a b c", context, "normalize-space(' a b c ')"); 1496 assertValueOfXPath("a b c", context, "normalize-space(' a \n b \n c')"); 1497 1499 assertValueOfXPath("", context, "normalize-space(' ')"); 1500 1502 assertValueOfXPath("", context, "normalize-space('')"); 1503 } 1504 } 1505 1506 1508 public void testid55429() throws JaxenException 1509 { 1510 Navigator nav = getNavigator(); 1511 String url = "xml/web.xml"; 1512 log("Document [" + url + "]"); 1513 Object document = nav.getDocument(url); 1514 XPath contextpath = new BaseXPath("/web-app/servlet[1]", nav); 1515 log("Initial Context :: " + contextpath); 1516 List list = contextpath.selectNodes(document); 1517 Iterator iter = list.iterator(); 1518 while (iter.hasNext()) 1519 { 1520 Object context = iter.next(); 1521 assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class )"); 1522 assertValueOfXPath("snoopservlet", context, "lower-case( servlet-class )"); 1523 assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class, 'fr' )"); 1524 assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class, 'fr-CA' )"); 1525 assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class, 'es-ES-Traditional_WIN' )"); 1526 assertValueOfXPath("true", context, "ends-with( servlet-class, 'Servlet' )"); 1527 assertValueOfXPath("false", context, "ends-with( servlet-class, 'S' )"); 1528 } 1529 } 1530 1531 1533 public void testid55485() throws JaxenException 1534 { 1535 Navigator nav = getNavigator(); 1536 String url = "xml/lang.xml"; 1537 log("Document [" + url + "]"); 1538 Object document = nav.getDocument(url); 1539 XPath contextpath = new BaseXPath("/", nav); 1540 log("Initial Context :: " + contextpath); 1541 List list = contextpath.selectNodes(document); 1542 Iterator iter = list.iterator(); 1543 while (iter.hasNext()) 1544 { 1545 Object context = iter.next(); 1546 assertCountXPath(0, context, "/e1/e2[lang('hr')]"); 1547 assertCountXPath(1, context, "/e1/e2/e3[lang('en')]"); 1548 assertCountXPath(1, context, "/e1/e2/e3[lang('en-US')]"); 1549 assertCountXPath(0, context, "/e1/e2/e3[lang('en-GB')]"); 1550 assertCountXPath(2, context, "/e1/e2/e3[lang('hu')]"); 1551 assertCountXPath(0, context, "/e1/e2/e3[lang('hu-HU')]"); 1552 assertCountXPath(1, context, "/e1/e2/e3[lang('es')]"); 1553 assertCountXPath(0, context, "/e1/e2/e3[lang('es-BR')]"); 1554 } 1555 } 1556 1557 1559 public void testid55235() throws JaxenException 1560 { 1561 Navigator nav = getNavigator(); 1562 String url = "xml/namespaces.xml"; 1563 log("Document [" + url + "]"); 1564 Object document = nav.getDocument(url); 1565 XPath contextpath = new BaseXPath("/", nav); 1566 log("Initial Context :: " + contextpath); 1567 List list = contextpath.selectNodes(document); 1568 SimpleNamespaceContext nsContext = new SimpleNamespaceContext(); 1569 nsContext.addNamespace("alias", "http://fooNamespace/"); 1570 nsContext.addNamespace("bar", "http://barNamespace/"); 1571 nsContext.addNamespace("voo", "http://fooNamespace/"); 1572 nsContext.addNamespace("foo", "http://fooNamespace/"); 1573 getContextSupport().setNamespaceContext(nsContext); 1574 Iterator iter = list.iterator(); 1575 while (iter.hasNext()) 1576 { 1577 Object context = iter.next(); 1578 assertCountXPath(1, context, "/*"); 1579 assertCountXPath(1, context, "/foo:a"); 1580 assertCountXPath(1, context, "/foo:a/b"); 1581 assertCountXPath(1, context, "/voo:a/b/c"); 1582 assertCountXPath(1, context, "/voo:a/bar:f"); 1583 assertCountXPath(1, context, "/*[namespace-uri()='http://fooNamespace/' and local-name()='a']"); 1584 assertCountXPath(1, context, "/*[local-name()='a' and namespace-uri()='http://fooNamespace/']/*[local-name()='x' and namespace-uri()='http://fooNamespace/']"); 1585 assertCountXPath(1, context, "/*[local-name()='a' and namespace-uri()='http://fooNamespace/']/*[local-name()='x' and namespace-uri()='http://fooNamespace/']/*[local-name()='y' and namespace-uri()='http://fooNamespace/']"); 1586 } 1587 } 1588 1589 1592 public void testid55615() throws JaxenException 1593 { 1594 Navigator nav = getNavigator(); 1595 String url = "xml/namespaces.xml"; 1596 log("Document [" + url + "]"); 1597 Object document = nav.getDocument(url); 1598 XPath contextpath = new BaseXPath("/", nav); 1599 log("Initial Context :: " + contextpath); 1600 List list = contextpath.selectNodes(document); 1601 SimpleNamespaceContext nsContext = new SimpleNamespaceContext(); 1602 nsContext.addNamespace("foo", "http://somethingElse/"); 1603 getContextSupport().setNamespaceContext(nsContext); 1604 Iterator iter = list.iterator(); 1605 while (iter.hasNext()) 1606 { 1607 Object context = iter.next(); 1608 assertCountXPath(0, context, "/foo:a/b/c"); 1609 } 1610 } 1611 1612 public void testid55632() throws JaxenException 1613 { 1614 Navigator nav = getNavigator(); 1615 String url = "xml/namespaces.xml"; 1616 log("Document [" + url + "]"); 1617 Object document = nav.getDocument(url); 1618 XPath contextpath = new BaseXPath("/", nav); 1619 log("Initial Context :: " + contextpath); 1620 List list = contextpath.selectNodes(document); 1621 SimpleNamespaceContext nsContext = new SimpleNamespaceContext(); 1622 nsContext.addNamespace("alias", "http://fooNamespace/"); 1623 nsContext.addNamespace("bar", "http://barNamespace/"); 1624 nsContext.addNamespace("foo", "http://fooNamespace/"); 1625 getContextSupport().setNamespaceContext(nsContext); 1626 Iterator iter = list.iterator(); 1627 while (iter.hasNext()) 1628 { 1629 Object context = iter.next(); 1630 assertValueOfXPath("Hello", context, "/foo:a/b/c"); 1631 assertValueOfXPath("Hey", context, "/foo:a/foo:d/foo:e"); 1632 assertValueOfXPath("Hey3", context, "/foo:a/alias:x/alias:y"); 1633 assertValueOfXPath("Hey3", context, "/foo:a/foo:x/foo:y"); 1634 assertValueOfXPath("Hey3", context, "/*[local-name()='a' and namespace-uri()='http://fooNamespace/']/*[local-name()='x' and namespace-uri()='http://fooNamespace/']/*[local-name()='y' and namespace-uri()='http://fooNamespace/']"); 1635 } 1636 } 1637 1638 public void testid55676() throws JaxenException 1639 { 1640 Navigator nav = getNavigator(); 1641 String url = "xml/defaultNamespace.xml"; 1642 log("Document [" + url + "]"); 1643 Object document = nav.getDocument(url); 1644 XPath contextpath = new BaseXPath("/", nav); 1645 log("Initial Context :: " + contextpath); 1646 List list = contextpath.selectNodes(document); 1647 Iterator iter = list.iterator(); 1648 while (iter.hasNext()) 1649 { 1650 Object context = iter.next(); 1651 1653 assertCountXPath(0, context, "/a/b/c"); 1654 1661 } 1662 } 1663 1664 public void testid55692() throws JaxenException 1665 { 1666 Navigator nav = getNavigator(); 1667 String url = "xml/defaultNamespace.xml"; 1668 log("Document [" + url + "]"); 1669 Object document = nav.getDocument(url); 1670 XPath contextpath = new BaseXPath("/", nav); 1671 log("Initial Context :: " + contextpath); 1672 List list = contextpath.selectNodes(document); 1673 SimpleNamespaceContext nsContext = new SimpleNamespaceContext(); 1674 nsContext.addNamespace("dummy", "http://dummyNamespace/"); 1675 getContextSupport().setNamespaceContext(nsContext); 1676 Iterator iter = list.iterator(); 1677 while (iter.hasNext()) 1678 { 1679 Object context = iter.next(); 1680 assertCountXPath(1, context, "/dummy:a/dummy:b/dummy:c"); 1681 } 1682 } 1683 1684 public void testid55716() throws JaxenException 1685 { 1686 Navigator nav = getNavigator(); 1687 String url = "xml/text.xml"; 1688 log("Document [" + url + "]"); 1689 Object document = nav.getDocument(url); 1690 XPath contextpath = new BaseXPath("/", nav); 1691 log("Initial Context :: " + contextpath); 1692 List list = contextpath.selectNodes(document); 1693 Iterator iter = list.iterator(); 1694 while (iter.hasNext()) 1695 { 1696 Object context = iter.next(); 1697 assertCountXPath(3, context, "/foo/bar/text()"); 1698 assertValueOfXPath("baz", context, "normalize-space(/foo/bar/text())"); 1699 } 1700 } 1701 1702 public void testid55739() throws JaxenException 1703 { 1704 Navigator nav = getNavigator(); 1705 String url = "xml/testNamespaces.xml"; 1706 log("Document [" + url + "]"); 1707 Object document = nav.getDocument(url); 1708 XPath contextpath = new BaseXPath("/", nav); 1709 log("Initial Context :: " + contextpath); 1710 List list = contextpath.selectNodes(document); 1711 Iterator iter = list.iterator(); 1712 while (iter.hasNext()) 1713 { 1714 Object context = iter.next(); 1715 1717 assertCountXPath(0, context, "namespace::*"); 1718 assertCountXPath(0, context, "/namespace::*"); 1719 1721 assertCountXPath(3, context, "/Template/Application1/namespace::*"); 1722 assertCountXPath(3, context, "/Template/Application2/namespace::*"); 1723 1725 assertCountXPath(25, context, "//namespace::*"); 1726 } 1727 } 1728 1729 public void testid55797() throws JaxenException 1730 { 1731 Navigator nav = getNavigator(); 1732 String url = "xml/testNamespaces.xml"; 1733 log("Document [" + url + "]"); 1734 Object document = nav.getDocument(url); 1735 XPath contextpath = new BaseXPath("/Template/Application1", nav); 1736 log("Initial Context :: " + contextpath); 1737 List list = contextpath.selectNodes(document); 1738 Iterator iter = list.iterator(); 1739 while (iter.hasNext()) 1740 { 1741 Object context = iter.next(); 1742 1744 assertCountXPath(3, context, "namespace::*"); 1745 assertCountXPath(0, context, "/namespace::*"); 1746 assertCountXPath(3, context, "/Template/Application1/namespace::*"); 1747 assertCountXPath(3, context, "/Template/Application2/namespace::*"); 1748 assertCountXPath(25, context, "//namespace::*"); 1749 assertCountXPath(8, context, "//namespace::xplt"); 1750 1753 assertCountXPath(0, context, "//namespace::somethingelse"); 1754 } 1755 } 1756 1757 public void testid55873() throws JaxenException 1758 { 1759 Navigator nav = getNavigator(); 1760 String url = "xml/testNamespaces.xml"; 1761 log("Document [" + url + "]"); 1762 Object document = nav.getDocument(url); 1763 XPath contextpath = new BaseXPath("/", nav); 1764 log("Initial Context :: " + contextpath); 1765 List list = contextpath.selectNodes(document); 1766 Iterator iter = list.iterator(); 1767 while (iter.hasNext()) 1768 { 1769 Object context = iter.next(); 1770 1772 assertCountXPath(1, context, "/Template/namespace::xml/parent::Template"); 1773 } 1774 } 1775 1776 1778 public void testid55893() throws JaxenException 1779 { 1780 Navigator nav = getNavigator(); 1781 String url = "xml/testNamespaces.xml"; 1782 log("Document [" + url + "]"); 1783 Object document = nav.getDocument(url); 1784 XPath contextpath = new BaseXPath("/Template/namespace::xml", nav); 1785 log("Initial Context :: " + contextpath); 1786 List list = contextpath.selectNodes(document); 1787 Iterator iter = list.iterator(); 1788 while (iter.hasNext()) 1789 { 1790 Object context = iter.next(); 1791 assertCountXPath(1, context, "parent::Template"); 1792 } 1793 } 1794} 1795 | Popular Tags |