[libjaxen-java] 32/49: * New upstream release. * Add myself to Uploaders * Maven POMs: - debian/control: add a Build-Depends-Indep dependency on maven-repo-helper - debian/rules: use mh_installpoms and mh_installjar to install the POM and the jar to the Maven repository - debian/pom.xml: Debian pom.xml file as upstream doesn't provide one * Move libjaxen-java-doc to "doc" Section * Add "get-orig-source" as suggested by policy * Build with source and target set to "1.3" * XOM support: - Add libxom-java to Recommends - Add XOM into package's extended description
Emmanuel Bourg
ebourg-guest at moszumanska.debian.org
Wed Oct 25 13:22:12 UTC 2017
This is an automated email from the git hooks/post-receive script.
ebourg-guest pushed a commit to branch master
in repository libjaxen-java.
commit bda6cd148f7e8956fc17913a96994cbb8ff037f6
Author: Damien Raude-Morvan <drazzib at debian.org>
Date: Sun Nov 8 19:02:26 2009 +0000
* New upstream release.
* Add myself to Uploaders
* Maven POMs:
- debian/control: add a Build-Depends-Indep dependency on maven-repo-helper
- debian/rules: use mh_installpoms and mh_installjar
to install the POM and the jar to the Maven repository
- debian/pom.xml: Debian pom.xml file as upstream doesn't provide one
* Move libjaxen-java-doc to "doc" Section
* Add "get-orig-source" as suggested by policy
* Build with source and target set to "1.3"
* XOM support:
- Add libxom-java to Recommends
- Add XOM into package's extended description
---
LICENSE.txt | 33 -
build.xml | 174 -
debian/ant.properties | 2 +
debian/build.xml | 190 +
debian/changelog | 18 +
debian/control | 14 +-
debian/libjaxen-java-doc.dirs | 1 -
debian/libjaxen-java.dirs | 1 -
debian/libjaxen-java.poms | 1 +
debian/maven.rules | 2 +
debian/pom.xml | 36 +
debian/rules | 11 +-
maven.xml | 32 -
project.properties | 85 -
project.xml | 348 -
src/java/main/org/jaxen/BaseXPath.java | 708 --
src/java/main/org/jaxen/Context.java | 285 -
src/java/main/org/jaxen/ContextSupport.java | 250 -
src/java/main/org/jaxen/DefaultNavigator.java | 299 -
src/java/main/org/jaxen/Function.java | 87 -
src/java/main/org/jaxen/FunctionCallException.java | 111 -
src/java/main/org/jaxen/FunctionContext.java | 92 -
src/java/main/org/jaxen/JaxenConstants.java | 76 -
src/java/main/org/jaxen/JaxenException.java | 111 -
src/java/main/org/jaxen/JaxenHandler.java | 616 --
src/java/main/org/jaxen/JaxenRuntimeException.java | 146 -
src/java/main/org/jaxen/NamedAccessNavigator.java | 99 -
src/java/main/org/jaxen/NamespaceContext.java | 99 -
src/java/main/org/jaxen/Navigator.java | 549 --
src/java/main/org/jaxen/QualifiedName.java | 104 -
src/java/main/org/jaxen/SimpleFunctionContext.java | 130 -
.../main/org/jaxen/SimpleNamespaceContext.java | 149 -
src/java/main/org/jaxen/SimpleVariableContext.java | 144 -
src/java/main/org/jaxen/UnresolvableException.java | 74 -
.../main/org/jaxen/UnsupportedAxisException.java | 77 -
src/java/main/org/jaxen/VariableContext.java | 114 -
src/java/main/org/jaxen/XPath.java | 399 --
src/java/main/org/jaxen/XPathFunctionContext.java | 296 -
src/java/main/org/jaxen/XPathSyntaxException.java | 168 -
src/java/main/org/jaxen/dom/DOMXPath.java | 90 -
src/java/main/org/jaxen/dom/DocumentNavigator.java | 1065 ---
src/java/main/org/jaxen/dom/NamespaceNode.java | 867 ---
src/java/main/org/jaxen/dom/package.html | 13 -
.../main/org/jaxen/dom4j/DocumentNavigator.java | 501 --
src/java/main/org/jaxen/dom4j/Dom4jXPath.java | 94 -
src/java/main/org/jaxen/dom4j/package.html | 13 -
src/java/main/org/jaxen/expr/AdditiveExpr.java | 67 -
src/java/main/org/jaxen/expr/AllNodeStep.java | 56 -
src/java/main/org/jaxen/expr/BinaryExpr.java | 86 -
src/java/main/org/jaxen/expr/CommentNodeStep.java | 55 -
.../jaxen/expr/DefaultAbsoluteLocationPath.java | 117 -
.../main/org/jaxen/expr/DefaultAdditiveExpr.java | 64 -
.../main/org/jaxen/expr/DefaultAllNodeStep.java | 87 -
src/java/main/org/jaxen/expr/DefaultAndExpr.java | 102 -
src/java/main/org/jaxen/expr/DefaultArithExpr.java | 66 -
.../main/org/jaxen/expr/DefaultBinaryExpr.java | 102 -
.../org/jaxen/expr/DefaultCommentNodeStep.java | 89 -
src/java/main/org/jaxen/expr/DefaultDivExpr.java | 86 -
.../main/org/jaxen/expr/DefaultEqualityExpr.java | 155 -
.../main/org/jaxen/expr/DefaultEqualsExpr.java | 89 -
src/java/main/org/jaxen/expr/DefaultExpr.java | 93 -
.../main/org/jaxen/expr/DefaultFilterExpr.java | 180 -
.../org/jaxen/expr/DefaultFunctionCallExpr.java | 199 -
.../jaxen/expr/DefaultGreaterThanEqualExpr.java | 71 -
.../org/jaxen/expr/DefaultGreaterThanExpr.java | 72 -
.../org/jaxen/expr/DefaultLessThanEqualExpr.java | 71 -
.../main/org/jaxen/expr/DefaultLessThanExpr.java | 71 -
.../main/org/jaxen/expr/DefaultLiteralExpr.java | 94 -
.../main/org/jaxen/expr/DefaultLocationPath.java | 164 -
.../main/org/jaxen/expr/DefaultLogicalExpr.java | 60 -
src/java/main/org/jaxen/expr/DefaultMinusExpr.java | 86 -
src/java/main/org/jaxen/expr/DefaultModExpr.java | 84 -
.../org/jaxen/expr/DefaultMultiplicativeExpr.java | 66 -
.../main/org/jaxen/expr/DefaultMultiplyExpr.java | 85 -
src/java/main/org/jaxen/expr/DefaultNameStep.java | 422 --
.../main/org/jaxen/expr/DefaultNotEqualsExpr.java | 90 -
.../main/org/jaxen/expr/DefaultNumberExpr.java | 88 -
src/java/main/org/jaxen/expr/DefaultOrExpr.java | 103 -
src/java/main/org/jaxen/expr/DefaultPathExpr.java | 148 -
src/java/main/org/jaxen/expr/DefaultPlusExpr.java | 85 -
src/java/main/org/jaxen/expr/DefaultPredicate.java | 98 -
.../expr/DefaultProcessingInstructionNodeStep.java | 122 -
.../main/org/jaxen/expr/DefaultRelationalExpr.java | 142 -
.../jaxen/expr/DefaultRelativeLocationPath.java | 69 -
src/java/main/org/jaxen/expr/DefaultStep.java | 171 -
.../main/org/jaxen/expr/DefaultTextNodeStep.java | 85 -
src/java/main/org/jaxen/expr/DefaultTruthExpr.java | 119 -
src/java/main/org/jaxen/expr/DefaultUnaryExpr.java | 99 -
src/java/main/org/jaxen/expr/DefaultUnionExpr.java | 126 -
.../jaxen/expr/DefaultVariableReferenceExpr.java | 108 -
src/java/main/org/jaxen/expr/DefaultXPathExpr.java | 106 -
.../main/org/jaxen/expr/DefaultXPathFactory.java | 346 -
src/java/main/org/jaxen/expr/EqualityExpr.java | 64 -
src/java/main/org/jaxen/expr/Expr.java | 100 -
src/java/main/org/jaxen/expr/FilterExpr.java | 83 -
src/java/main/org/jaxen/expr/FunctionCallExpr.java | 93 -
src/java/main/org/jaxen/expr/IdentitySet.java | 85 -
src/java/main/org/jaxen/expr/LiteralExpr.java | 70 -
src/java/main/org/jaxen/expr/LocationPath.java | 88 -
src/java/main/org/jaxen/expr/LogicalExpr.java | 69 -
.../main/org/jaxen/expr/MultiplicativeExpr.java | 69 -
src/java/main/org/jaxen/expr/NameStep.java | 75 -
src/java/main/org/jaxen/expr/NodeComparator.java | 157 -
src/java/main/org/jaxen/expr/NumberExpr.java | 68 -
src/java/main/org/jaxen/expr/PathExpr.java | 88 -
src/java/main/org/jaxen/expr/Predicate.java | 113 -
src/java/main/org/jaxen/expr/PredicateSet.java | 290 -
src/java/main/org/jaxen/expr/Predicated.java | 83 -
.../jaxen/expr/ProcessingInstructionNodeStep.java | 61 -
src/java/main/org/jaxen/expr/RelationalExpr.java | 69 -
src/java/main/org/jaxen/expr/Step.java | 124 -
src/java/main/org/jaxen/expr/TextNodeStep.java | 55 -
src/java/main/org/jaxen/expr/UnaryExpr.java | 70 -
src/java/main/org/jaxen/expr/UnionExpr.java | 65 -
.../main/org/jaxen/expr/VariableReferenceExpr.java | 76 -
src/java/main/org/jaxen/expr/XPathExpr.java | 108 -
src/java/main/org/jaxen/expr/XPathFactory.java | 324 -
.../org/jaxen/expr/iter/IterableAncestorAxis.java | 75 -
.../expr/iter/IterableAncestorOrSelfAxis.java | 73 -
.../org/jaxen/expr/iter/IterableAttributeAxis.java | 109 -
.../main/org/jaxen/expr/iter/IterableAxis.java | 112 -
.../org/jaxen/expr/iter/IterableChildAxis.java | 111 -
.../jaxen/expr/iter/IterableDescendantAxis.java | 73 -
.../expr/iter/IterableDescendantOrSelfAxis.java | 73 -
.../org/jaxen/expr/iter/IterableFollowingAxis.java | 73 -
.../expr/iter/IterableFollowingSiblingAxis.java | 73 -
.../org/jaxen/expr/iter/IterableNamespaceAxis.java | 73 -
.../org/jaxen/expr/iter/IterableParentAxis.java | 73 -
.../org/jaxen/expr/iter/IterablePrecedingAxis.java | 73 -
.../expr/iter/IterablePrecedingSiblingAxis.java | 73 -
.../main/org/jaxen/expr/iter/IterableSelfAxis.java | 73 -
src/java/main/org/jaxen/expr/iter/package.html | 13 -
src/java/main/org/jaxen/expr/package.html | 14 -
.../main/org/jaxen/function/BooleanFunction.java | 200 -
.../main/org/jaxen/function/CeilingFunction.java | 131 -
.../main/org/jaxen/function/ConcatFunction.java | 127 -
.../main/org/jaxen/function/ContainsFunction.java | 136 -
.../main/org/jaxen/function/CountFunction.java | 117 -
.../main/org/jaxen/function/FalseFunction.java | 104 -
.../main/org/jaxen/function/FloorFunction.java | 129 -
src/java/main/org/jaxen/function/IdFunction.java | 159 -
src/java/main/org/jaxen/function/LangFunction.java | 194 -
src/java/main/org/jaxen/function/LastFunction.java | 114 -
.../main/org/jaxen/function/LocalNameFunction.java | 170 -
src/java/main/org/jaxen/function/NameFunction.java | 175 -
.../org/jaxen/function/NamespaceUriFunction.java | 188 -
.../org/jaxen/function/NormalizeSpaceFunction.java | 174 -
src/java/main/org/jaxen/function/NotFunction.java | 122 -
.../main/org/jaxen/function/NumberFunction.java | 240 -
.../main/org/jaxen/function/PositionFunction.java | 115 -
.../main/org/jaxen/function/RoundFunction.java | 133 -
.../org/jaxen/function/StartsWithFunction.java | 136 -
.../main/org/jaxen/function/StringFunction.java | 355 -
.../org/jaxen/function/StringLengthFunction.java | 156 -
.../org/jaxen/function/SubstringAfterFunction.java | 145 -
.../jaxen/function/SubstringBeforeFunction.java | 146 -
.../main/org/jaxen/function/SubstringFunction.java | 250 -
src/java/main/org/jaxen/function/SumFunction.java | 137 -
.../main/org/jaxen/function/TranslateFunction.java | 253 -
src/java/main/org/jaxen/function/TrueFunction.java | 104 -
.../org/jaxen/function/ext/EndsWithFunction.java | 94 -
.../org/jaxen/function/ext/EvaluateFunction.java | 107 -
.../jaxen/function/ext/LocaleFunctionSupport.java | 169 -
.../main/org/jaxen/function/ext/LowerFunction.java | 117 -
.../main/org/jaxen/function/ext/UpperFunction.java | 115 -
src/java/main/org/jaxen/function/ext/package.html | 13 -
src/java/main/org/jaxen/function/package.html | 13 -
.../org/jaxen/function/xslt/DocumentFunction.java | 89 -
src/java/main/org/jaxen/function/xslt/package.html | 13 -
.../main/org/jaxen/javabean/DocumentNavigator.java | 374 --
src/java/main/org/jaxen/javabean/Element.java | 32 -
.../main/org/jaxen/javabean/ElementIterator.java | 37 -
.../main/org/jaxen/javabean/JavaBeanXPath.java | 158 -
src/java/main/org/jaxen/javabean/package.html | 13 -
.../main/org/jaxen/jdom/DocumentNavigator.java | 583 --
src/java/main/org/jaxen/jdom/JDOMXPath.java | 93 -
src/java/main/org/jaxen/jdom/XPathNamespace.java | 112 -
src/java/main/org/jaxen/jdom/package.html | 13 -
src/java/main/org/jaxen/overview.html | 74 -
src/java/main/org/jaxen/package.html | 14 -
.../main/org/jaxen/pattern/AnyChildNodeTest.java | 94 -
src/java/main/org/jaxen/pattern/AnyNodeTest.java | 89 -
.../org/jaxen/pattern/LocationPathPattern.java | 319 -
src/java/main/org/jaxen/pattern/NameTest.java | 129 -
src/java/main/org/jaxen/pattern/NamespaceTest.java | 132 -
src/java/main/org/jaxen/pattern/NoNodeTest.java | 91 -
src/java/main/org/jaxen/pattern/NodeTest.java | 59 -
src/java/main/org/jaxen/pattern/NodeTypeTest.java | 133 -
src/java/main/org/jaxen/pattern/Pattern.java | 176 -
.../main/org/jaxen/pattern/PatternHandler.java | 351 -
src/java/main/org/jaxen/pattern/PatternParser.java | 300 -
src/java/main/org/jaxen/pattern/TextNodeTest.java | 86 -
src/java/main/org/jaxen/pattern/UnionPattern.java | 164 -
src/java/main/org/jaxen/pattern/package.html | 9 -
src/java/main/org/jaxen/saxpath/Axis.java | 247 -
src/java/main/org/jaxen/saxpath/Operator.java | 135 -
.../main/org/jaxen/saxpath/SAXPathEventSource.java | 76 -
.../main/org/jaxen/saxpath/SAXPathException.java | 172 -
src/java/main/org/jaxen/saxpath/XPathHandler.java | 319 -
src/java/main/org/jaxen/saxpath/XPathReader.java | 69 -
.../org/jaxen/saxpath/XPathSyntaxException.java | 160 -
src/java/main/org/jaxen/saxpath/base/Token.java | 117 -
.../main/org/jaxen/saxpath/base/TokenTypes.java | 183 -
src/java/main/org/jaxen/saxpath/base/Verifier.java | 508 --
.../main/org/jaxen/saxpath/base/XPathLexer.java | 941 ---
.../main/org/jaxen/saxpath/base/XPathReader.java | 1100 ----
src/java/main/org/jaxen/saxpath/base/package.html | 14 -
.../jaxen/saxpath/helpers/DefaultXPathHandler.java | 254 -
.../jaxen/saxpath/helpers/XPathReaderFactory.java | 170 -
.../main/org/jaxen/saxpath/helpers/package.html | 13 -
src/java/main/org/jaxen/saxpath/package.html | 14 -
.../main/org/jaxen/util/AncestorAxisIterator.java | 81 -
.../org/jaxen/util/AncestorOrSelfAxisIterator.java | 137 -
.../org/jaxen/util/DescendantAxisIterator.java | 150 -
.../jaxen/util/DescendantOrSelfAxisIterator.java | 75 -
.../main/org/jaxen/util/FollowingAxisIterator.java | 189 -
.../jaxen/util/FollowingSiblingAxisIterator.java | 146 -
src/java/main/org/jaxen/util/LinkedIterator.java | 119 -
.../main/org/jaxen/util/PrecedingAxisIterator.java | 219 -
.../jaxen/util/PrecedingSiblingAxisIterator.java | 176 -
src/java/main/org/jaxen/util/SelfAxisIterator.java | 73 -
.../main/org/jaxen/util/SingleObjectIterator.java | 120 -
src/java/main/org/jaxen/util/SingletonList.java | 101 -
src/java/main/org/jaxen/util/StackedIterator.java | 172 -
src/java/main/org/jaxen/util/package.html | 13 -
src/java/main/org/jaxen/xom/DocumentNavigator.java | 408 --
src/java/main/org/jaxen/xom/XOMXPath.java | 90 -
src/java/main/org/jaxen/xom/package.html | 16 -
src/java/main/org/w3c/dom/UserDataHandler.java | 23 -
src/java/samples/DOMDemo.java | 113 -
src/java/samples/Dom4jDemo.java | 117 -
src/java/samples/JDOMDemo.java | 112 -
src/java/test/org/jaxen/test/AddNamespaceTest.java | 80 -
.../jaxen/test/AncestorOrSelfAxisIteratorTest.java | 103 -
src/java/test/org/jaxen/test/ArithmeticTest.java | 113 -
src/java/test/org/jaxen/test/AxisTest.java | 76 -
src/java/test/org/jaxen/test/BaseTests.java | 74 -
src/java/test/org/jaxen/test/BaseXPathTest.java | 1163 ----
src/java/test/org/jaxen/test/BinaryExprTest.java | 90 -
src/java/test/org/jaxen/test/BooleanTest.java | 211 -
src/java/test/org/jaxen/test/CeilingTest.java | 141 -
src/java/test/org/jaxen/test/ConcatTest.java | 99 -
.../org/jaxen/test/ConformanceXPathHandler.java | 327 -
src/java/test/org/jaxen/test/ContainsTest.java | 172 -
src/java/test/org/jaxen/test/ContextTest.java | 200 -
src/java/test/org/jaxen/test/CoreTests.java | 97 -
src/java/test/org/jaxen/test/CountTest.java | 146 -
.../test/org/jaxen/test/DOM3NamespaceTest.java | 130 -
.../test/org/jaxen/test/DOM4JNavigatorTest.java | 111 -
src/java/test/org/jaxen/test/DOM4JPerformance.java | 68 -
src/java/test/org/jaxen/test/DOM4JTests.java | 75 -
src/java/test/org/jaxen/test/DOM4JXPathTest.java | 187 -
src/java/test/org/jaxen/test/DOMNavigatorTest.java | 163 -
src/java/test/org/jaxen/test/DOMTests.java | 78 -
src/java/test/org/jaxen/test/DOMXPathTest.java | 297 -
.../test/org/jaxen/test/DefaultNamestepTest.java | 113 -
.../test/org/jaxen/test/DefaultXPathExprTest.java | 127 -
.../org/jaxen/test/DefaultXPathFactoryTest.java | 80 -
.../org/jaxen/test/DescendantAxisIteratorTest.java | 104 -
src/java/test/org/jaxen/test/EqualsTest.java | 118 -
src/java/test/org/jaxen/test/ExprComparator.java | 461 --
src/java/test/org/jaxen/test/ExprTests.java | 81 -
.../test/org/jaxen/test/ExtensionFunctionTest.java | 143 -
src/java/test/org/jaxen/test/FalseTest.java | 105 -
src/java/test/org/jaxen/test/FloorTest.java | 155 -
.../org/jaxen/test/FollowingAxisIteratorTest.java | 109 -
.../test/FollowingSiblingAxisIteratorTest.java | 109 -
.../org/jaxen/test/FunctionCallExceptionTest.java | 86 -
.../test/org/jaxen/test/FunctionContextTest.java | 158 -
src/java/test/org/jaxen/test/FunctionTests.java | 100 -
src/java/test/org/jaxen/test/HelpersTests.java | 73 -
src/java/test/org/jaxen/test/IdTest.java | 212 -
src/java/test/org/jaxen/test/IterableAxisTest.java | 78 -
.../test/org/jaxen/test/JDOMNavigatorTest.java | 95 -
src/java/test/org/jaxen/test/JDOMPerformance.java | 68 -
src/java/test/org/jaxen/test/JDOMTests.java | 74 -
src/java/test/org/jaxen/test/JDOMXPathTest.java | 207 -
.../test/org/jaxen/test/JavaBeanNavigatorTest.java | 42 -
src/java/test/org/jaxen/test/JavaBeanTests.java | 73 -
.../test/org/jaxen/test/JaxenExceptionTest.java | 87 -
src/java/test/org/jaxen/test/JaxenHandlerTest.java | 169 -
.../org/jaxen/test/JaxenRuntimeExceptionTest.java | 90 -
src/java/test/org/jaxen/test/JaxenTests.java | 87 -
src/java/test/org/jaxen/test/LangTest.java | 347 -
src/java/test/org/jaxen/test/LastTest.java | 142 -
src/java/test/org/jaxen/test/LiteralExprTest.java | 101 -
src/java/test/org/jaxen/test/LocalNameTest.java | 191 -
src/java/test/org/jaxen/test/MockXPathReader.java | 72 -
src/java/test/org/jaxen/test/ModTest.java | 90 -
src/java/test/org/jaxen/test/NameTest.java | 184 -
src/java/test/org/jaxen/test/NamespaceTest.java | 194 -
src/java/test/org/jaxen/test/NamespaceURITest.java | 186 -
.../test/org/jaxen/test/NormalizeSpaceTest.java | 125 -
src/java/test/org/jaxen/test/NotTest.java | 169 -
src/java/test/org/jaxen/test/NumberTest.java | 155 -
.../test/org/jaxen/test/PatternHandlerTest.java | 122 -
src/java/test/org/jaxen/test/PatternTests.java | 73 -
src/java/test/org/jaxen/test/Person.java | 44 -
src/java/test/org/jaxen/test/PositionTest.java | 98 -
.../org/jaxen/test/PrecedingAxisIteratorTest.java | 109 -
.../test/PrecedingSiblingAxisIteratorTest.java | 109 -
src/java/test/org/jaxen/test/PriorityTest.java | 147 -
.../jaxen/test/ProcessingInstructionNodeTest.java | 97 -
src/java/test/org/jaxen/test/RoundTest.java | 140 -
.../test/org/jaxen/test/SAXPathExceptionTest.java | 85 -
src/java/test/org/jaxen/test/SAXPathTests.java | 74 -
.../org/jaxen/test/SimpleNamespaceContextTest.java | 161 -
.../org/jaxen/test/SimpleVariableContextTest.java | 125 -
.../org/jaxen/test/SingleObjectIteratorTest.java | 83 -
.../test/org/jaxen/test/SingletonListTest.java | 69 -
src/java/test/org/jaxen/test/StartsWithTest.java | 172 -
src/java/test/org/jaxen/test/StringLengthTest.java | 153 -
src/java/test/org/jaxen/test/StringTest.java | 195 -
.../test/org/jaxen/test/SubstringAfterTest.java | 180 -
.../test/org/jaxen/test/SubstringBeforeTest.java | 180 -
src/java/test/org/jaxen/test/SubstringTest.java | 263 -
src/java/test/org/jaxen/test/SumTest.java | 112 -
.../test/org/jaxen/test/TranslateFunctionTest.java | 197 -
src/java/test/org/jaxen/test/TrueTest.java | 98 -
.../org/jaxen/test/UnresolvableExceptionTest.java | 109 -
.../jaxen/test/UnsupportedAxisExceptionTest.java | 74 -
src/java/test/org/jaxen/test/UtilTests.java | 80 -
.../test/org/jaxen/test/VariableContextTest.java | 115 -
src/java/test/org/jaxen/test/XOMNavigatorTest.java | 73 -
src/java/test/org/jaxen/test/XOMPerformance.java | 67 -
src/java/test/org/jaxen/test/XOMTests.java | 74 -
src/java/test/org/jaxen/test/XOMXPathTest.java | 106 -
.../org/jaxen/test/XPathReaderFactoryTest.java | 150 -
src/java/test/org/jaxen/test/XPathReaderTest.java | 472 --
.../org/jaxen/test/XPathSyntaxExceptionTest.java | 106 -
src/java/test/org/jaxen/test/XPathTestBase.java | 1730 -----
src/latex/intro-slides.tex | 2676 --------
xml/axis.xml | 25 -
xml/basic.xml | 11 -
xml/basicupdate.xml | 47 -
xml/cdata.xml | 1 -
xml/contents.xml | 70 -
xml/defaultNamespace.xml | 6 -
xml/evaluate.xml | 28 -
xml/fibo.xml | 29 -
xml/id.xml | 21 -
xml/jaxen24.xml | 2 -
xml/jaxen3.xml | 15 -
xml/lang.xml | 11 -
xml/message.xml | 27 -
xml/moreover.xml | 244 -
xml/much_ado.xml | 6850 --------------------
xml/namespaces.xml | 18 -
xml/nitf.xml | 67 -
xml/numbers.xml | 18 -
xml/pi.xml | 13 -
xml/pi2.xml | 6 -
xml/simple.xml | 2 -
xml/simplevariablecontext.ser | Bin 428 -> 0 bytes
xml/test/tests.xml | 685 --
xml/test/tests.xsl | 369 --
xml/testNamespaces.xml | 22 -
xml/text.xml | 10 -
xml/underscore.xml | 6 -
xml/web.xml | 42 -
xml/web2.xml | 7 -
361 files changed, 266 insertions(+), 60411 deletions(-)
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index a0ca747..0000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- $Id: LICENSE.txt,v 1.5 2006/02/05 21:49:04 elharo Exp $
-
- Copyright 2003-2006 The Werken Company. All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
diff --git a/build.xml b/build.xml
deleted file mode 100644
index d10cbac..0000000
--- a/build.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--build.xml generated by maven from project.xml version 1.1.1
- on date May 5 2007, time 1501-->
-
-<project default="jar" name="jaxen" basedir=".">
- <property name="defaulttargetdir" value="target">
- </property>
- <property name="libdir" value="target/lib">
- </property>
- <property name="classesdir" value="target/classes">
- </property>
- <property name="testclassesdir" value="target/test-classes">
- </property>
- <property name="testclassesdir" value="target/test-classes">
- </property>
- <property name="testreportdir" value="target/test-reports">
- </property>
- <property name="distdir" value="dist">
- </property>
- <property name="javadocdir" value="dist/docs/api">
- </property>
- <property name="final.name" value="jaxen-1.1.1">
- </property>
- <path id="build.classpath">
- <fileset dir="${libdir}">
- <include name="jdom1.jar"/>
- <include name="dom4j.jar"/>
- <include name="xercesImpl.jar"/>
- </fileset>
- </path>
- <target name="init" description="o Initializes some properties">
- <mkdir dir="${libdir}">
- </mkdir>
- <condition property="noget">
- <equals arg2="only" arg1="${build.sysclasspath}">
- </equals>
- </condition>
- <!--Test if JUNIT is present in ANT classpath-->
-
- <available property="Junit.present" classname="junit.framework.Test">
- </available>
- </target>
- <target name="compile" description="o Compile the code" depends="get-deps">
- <mkdir dir="${classesdir}">
- </mkdir>
- <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
- <exclude name="org/jaxen/xom/*"/>
- <src>
- <pathelement location="src/java/main">
- </pathelement>
- </src>
- <classpath refid="build.classpath">
- </classpath>
- </javac>
- </target>
- <target name="jar" description="o Create the jar" depends="compile,test">
- <jar jarfile="${defaulttargetdir}/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
- </jar>
- </target>
- <target name="clean" description="o Clean up the generated directories">
- <delete dir="${defaulttargetdir}">
- </delete>
- <delete dir="${distdir}">
- </delete>
- </target>
- <target name="dist" description="o Create a distribution" depends="jar, javadoc">
- <mkdir dir="dist">
- </mkdir>
- <copy todir="dist">
- <fileset dir="${defaulttargetdir}" includes="*.jar">
- </fileset>
- <fileset dir="${basedir}" includes="LICENSE*, README*">
- </fileset>
- </copy>
- </target>
- <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
- <fail message="There were test failures.">
- </fail>
- </target>
- <target name="internal-test" if="Junit.present" depends="junit-present,compile-tests">
- <mkdir dir="${testreportdir}">
- </mkdir>
- <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
- <sysproperty key="basedir" value=".">
- </sysproperty>
- <formatter type="xml">
- </formatter>
- <formatter usefile="false" type="plain">
- </formatter>
- <classpath>
- <pathelement location="/usr/share/java/jdom1.jar"/>
- <path refid="build.classpath">
- </path>
- <pathelement path="${testclassesdir}">
- </pathelement>
- <pathelement path="${classesdir}">
- </pathelement>
- </classpath>
- <batchtest todir="${testreportdir}">
- <fileset dir="src/java/test">
- <include name="**/*Test.java"/>
- <exclude name="org/jaxen/test/XOM*.java"/>
- </fileset>
- </batchtest>
- </junit>
- </target>
- <target name="junit-present" unless="Junit.present" depends="init">
- <echo>================================= WARNING ================================</echo>
- <echo>Junit isn't present in your ${ANT_HOME}/lib directory. Tests not executed.</echo>
- <echo>==========================================================================</echo>
- </target>
- <target name="compile-tests" if="Junit.present" depends="junit-present,compile">
- <mkdir dir="${testclassesdir}">
- </mkdir>
- <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
- <exclude name="org/jaxen/test/XOM*.java"/>
- <src>
- <pathelement location="src/java/test">
- </pathelement>
- </src>
- <classpath>
- <path refid="build.classpath">
- </path>
- <pathelement path="${classesdir}">
- </pathelement>
- </classpath>
- </javac>
- </target>
- <target name="javadoc" description="o Generate javadoc" depends="get-deps">
- <mkdir dir="${javadocdir}">
- </mkdir>
- <tstamp>
- <format pattern="2001-yyyy" property="year">
- </format>
- </tstamp>
- <property name="copyright" value="Copyright © 2001-2007 Codehaus. All Rights Reserved.">
- </property>
- <property name="title" value="jaxen 1.1.1 API">
- </property>
- <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java/main" packagenames="org.jaxen.*">
- <classpath>
- <path refid="build.classpath">
- </path>
- </classpath>
- </javadoc>
- </target>
- <target name="get-deps" unless="noget" depends="init">
- <!--Proxy settings works only with a JDK 1.2 and higher.-->
-
- <setproxy>
- </setproxy>
- <get dest="${libdir}/dom4j-1.6.1.jar" usetimestamp="true" ignoreerrors="true" src="http://repo1.maven.org/maven/dom4j/jars/dom4j-1.6.1.jar">
- </get>
- <get dest="${libdir}/jdom-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://repo1.maven.org/maven/jdom/jars/jdom-1.0.jar">
- </get>
- <get dest="${libdir}/xml-apis-1.3.02.jar" usetimestamp="true" ignoreerrors="true" src="http://repo1.maven.org/maven/xml-apis/jars/xml-apis-1.3.02.jar">
- </get>
- <get dest="${libdir}/xercesImpl-2.6.2.jar" usetimestamp="true" ignoreerrors="true" src="http://repo1.maven.org/maven/xerces/jars/xercesImpl-2.6.2.jar">
- </get>
- <get dest="${libdir}/xom-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://repo1.maven.org/maven/xom/jars/xom-1.0.jar">
- </get>
- <get dest="${libdir}/maven-cobertura-plugin-1.3.jar" usetimestamp="true" ignoreerrors="true" src="http://repo1.maven.org/maven/maven-plugins/plugins/maven-cobertura-plugin-1.3.jar">
- </get>
- <get dest="${libdir}/maven-findbugs-plugin-1.3.1.jar" usetimestamp="true" ignoreerrors="true" src="http://repo1.maven.org/maven/maven-plugins/plugins/maven-findbugs-plugin-1.3.1.jar">
- </get>
- </target>
- <target name="install-maven">
- <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
- </get>
- <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
- </unjar>
- </target>
-</project>
\ No newline at end of file
diff --git a/debian/ant.properties b/debian/ant.properties
index 062091d..cb5bec8 100644
--- a/debian/ant.properties
+++ b/debian/ant.properties
@@ -1,2 +1,4 @@
+ant.build.javac.source=1.3
+ant.build.javac.target=1.3
noget=true
libdir=/usr/share/java
diff --git a/debian/build.xml b/debian/build.xml
new file mode 100644
index 0000000..87cebcc
--- /dev/null
+++ b/debian/build.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--build.xml generated by maven from project.xml version 1.1
+ on date February 13 2006, time 1000-->
+<project default="jar" name="jaxen" basedir="..">
+ <!--Load local and user build preferences-->
+ <property file="build.properties"></property>
+ <property file="${user.home}/build.properties"></property>
+ <!--Build properties-->
+ <property name="defaulttargetdir" value="${basedir}/target"></property>
+ <property name="libdir" value="${user.home}/.maven/repository"></property>
+ <property name="classesdir" value="${basedir}/target/classes"></property>
+ <property name="testclassesdir" value="${basedir}/target/test-classes"></property>
+ <property name="testreportdir" value="${basedir}/target/test-reports"></property>
+ <property name="distdir" value="${basedir}/dist"></property>
+ <property name="javadocdir" value="${basedir}/dist/docs/api"></property>
+ <property name="final.name" value="jaxen-1.1.2"></property>
+ <property name="proxy.host" value=""></property>
+ <property name="proxy.port" value=""></property>
+ <property name="proxy.username" value=""></property>
+ <property name="proxy.password" value=""></property>
+ <path id="build.classpath">
+ <pathelement location="${libdir}/dom4j.jar"></pathelement>
+ <pathelement location="${libdir}/jdom1.jar"></pathelement>
+ <pathelement location="${libdir}/xml-apis.jar"></pathelement>
+ <pathelement location="${libdir}/xercesImpl.jar"></pathelement>
+ <pathelement location="${libdir}/xom.jar"></pathelement>
+ <pathelement location="${libdir}/junit.jar"></pathelement>
+ </path>
+ <target name="init" description="o Initializes some properties">
+ <mkdir dir="${libdir}"></mkdir>
+ <!--Test if JUNIT is present in ANT classpath-->
+ <available property="Junit.present" classname="junit.framework.Test"></available>
+ <!--Test if user defined a proxy-->
+ <condition property="useProxy">
+ <and>
+ <isset property="proxy.host"></isset>
+ <not>
+ <equals trim="true" arg2="" arg1="${proxy.host}"></equals>
+ </not>
+ </and>
+ </condition>
+ </target>
+ <target name="compile" description="o Compile the code">
+ <mkdir dir="${classesdir}"></mkdir>
+ <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
+ <src>
+ <pathelement location="${basedir}/src/java/main"></pathelement>
+ </src>
+ <classpath refid="build.classpath"></classpath>
+ </javac>
+ </target>
+ <target name="jar" description="o Create the jar" depends="compile,test">
+ <jar jarfile="${defaulttargetdir}/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}"></jar>
+ </target>
+ <target name="clean" description="o Clean up the generated directories">
+ <delete dir="${defaulttargetdir}"></delete>
+ <delete dir="${distdir}"></delete>
+ </target>
+ <target name="dist" description="o Create a distribution" depends="jar, javadoc">
+ <mkdir dir="dist"></mkdir>
+ <copy todir="dist">
+ <fileset dir="${defaulttargetdir}" includes="*.jar"></fileset>
+ <fileset dir="${basedir}" includes="LICENSE*, README*"></fileset>
+ </copy>
+ </target>
+ <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
+ <fail message="There were test failures."></fail>
+ </target>
+ <target name="internal-test" if="Junit.present" depends="junit-present,compile-tests">
+ <mkdir dir="${testreportdir}"></mkdir>
+ <junit dir="${basedir}" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
+ <sysproperty key="basedir" value="."></sysproperty>
+ <formatter type="xml"></formatter>
+ <formatter usefile="false" type="plain"></formatter>
+ <classpath>
+ <path refid="build.classpath"></path>
+ <pathelement path="${testclassesdir}"></pathelement>
+ <pathelement path="${classesdir}"></pathelement>
+ </classpath>
+ <batchtest todir="${testreportdir}">
+ <fileset dir="${basedir}/src/java/test">
+ <include name="**/*Test.java"></include>
+ <exclude name="org/jaxen/jdom/XPathTest.java"></exclude>
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
+ <target name="junit-present" unless="Junit.present" depends="init">
+ <echo>================================= WARNING ================================</echo>
+ <echo>Junit isn't present in your ${ANT_HOME}/lib directory. Tests not executed.</echo>
+ <echo>==========================================================================</echo>
+ </target>
+ <target name="compile-tests" if="Junit.present" depends="junit-present,compile">
+ <mkdir dir="${testclassesdir}"></mkdir>
+ <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
+ <src>
+ <pathelement location="${basedir}/src/java/test"></pathelement>
+ </src>
+ <classpath>
+ <path refid="build.classpath"></path>
+ <pathelement path="${classesdir}"></pathelement>
+ </classpath>
+ </javac>
+ <copy todir="${testclassesdir}">
+ <fileset dir="${basedir}/src/java/test">
+ <include name="**/*.werk"></include>
+ <include name="**/*.xml"></include>
+ <include name="**/*.properties"></include>
+ </fileset>
+ </copy>
+ </target>
+ <target name="javadoc" description="o Generate javadoc">
+ <mkdir dir="${javadocdir}"></mkdir>
+ <tstamp>
+ <format pattern="2001-yyyy" property="year"></format>
+ </tstamp>
+ <property name="copyright" value="Copyright © Codehaus. All Rights Reserved."></property>
+ <property name="title" value="jaxen 1.1.2 API"></property>
+ <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="${basedir}/src/java/main" packagenames="org.jaxen.*">
+ <classpath>
+ <path refid="build.classpath"></path>
+ </classpath>
+ </javadoc>
+ </target>
+ <target name="get-dep-dom4j.jar" description="o Download the dependency : dom4j.jar" unless="dom4j.jar" depends="init,setProxy,noProxy,get-custom-dep-dom4j.jar">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/dom4j.jar" usetimestamp="true" ignoreerrors="true" src="file:/usr/share/maven/repository/JPP/jars/dom4j.jar"></get>
+ </target>
+ <target name="get-custom-dep-dom4j.jar" if="dom4j.jar" depends="init,setProxy,noProxy">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/dom4j.jar" usetimestamp="true" ignoreerrors="true" src="${dom4j.jar}"></get>
+ </target>
+ <target name="get-dep-jdom.jar" description="o Download the dependency : jdom.jar" unless="jdom.jar" depends="init,setProxy,noProxy,get-custom-dep-jdom.jar">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/jdom.jar" usetimestamp="true" ignoreerrors="true" src="file:/usr/share/maven/repository/JPP/jars/jdom.jar"></get>
+ </target>
+ <target name="get-custom-dep-jdom.jar" if="jdom.jar" depends="init,setProxy,noProxy">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/jdom.jar" usetimestamp="true" ignoreerrors="true" src="${jdom.jar}"></get>
+ </target>
+ <target name="get-dep-xmlParserAPIs.jar" description="o Download the dependency : xmlParserAPIs.jar" unless="xmlParserAPIs.jar" depends="init,setProxy,noProxy,get-custom-dep-xmlParserAPIs.jar">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/xml-commons-apis.jar" usetimestamp="true" ignoreerrors="true" src="file:/usr/share/maven/repository/JPP/jars/xml-commons-apis.jar"></get>
+ </target>
+ <target name="get-custom-dep-xmlParserAPIs.jar" if="xmlParserAPIs.jar" depends="init,setProxy,noProxy">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/xml-commons-apis.jar" usetimestamp="true" ignoreerrors="true" src="${xmlParserAPIs.jar}"></get>
+ </target>
+ <target name="get-dep-xercesImpl.jar" description="o Download the dependency : xercesImpl.jar" unless="xercesImpl.jar" depends="init,setProxy,noProxy,get-custom-dep-xercesImpl.jar">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/xerces-j2.jar" usetimestamp="true" ignoreerrors="true" src="file:/usr/share/maven/repository/JPP/jars/xerces-j2.jar"></get>
+ </target>
+ <target name="get-custom-dep-xercesImpl.jar" if="xercesImpl.jar" depends="init,setProxy,noProxy">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/xerces-j2.jar" usetimestamp="true" ignoreerrors="true" src="${xercesImpl.jar}"></get>
+ </target>
+ <target name="get-dep-xom.jar" description="o Download the dependency : xom.jar" unless="xom.jar" depends="init,setProxy,noProxy,get-custom-dep-xom.jar">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/xom.jar" usetimestamp="true" ignoreerrors="true" src="file:/usr/share/maven/repository/JPP/jars/xom.jar"></get>
+ </target>
+ <target name="get-custom-dep-xom.jar" if="xom.jar" depends="init,setProxy,noProxy">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/xom.jar" usetimestamp="true" ignoreerrors="true" src="${xom.jar}"></get>
+ </target>
+ <target name="get-dep-junit.jar" description="o Download the dependency : junit.jar" unless="junit.jar" depends="init,setProxy,noProxy,get-custom-dep-junit.jar">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/junit.jar" usetimestamp="true" ignoreerrors="true" src="file:/usr/share/maven/repository/JPP/jars/junit.jar"></get>
+ </target>
+ <target name="get-custom-dep-junit.jar" if="junit.jar" depends="init,setProxy,noProxy">
+ <mkdir dir="${libdir}/JPP/jars/"></mkdir>
+ <get dest="${libdir}/JPP/jars/junit.jar" usetimestamp="true" ignoreerrors="true" src="${junit.jar}"></get>
+ </target>
+ <target name="get-deps" unless="noget" depends="get-dep-dom4j.jar,get-dep-jdom.jar,get-dep-xmlParserAPIs.jar,get-dep-xercesImpl.jar,get-dep-xom.jar,get-dep-junit.jar"></target>
+ <target name="setProxy" if="useProxy" depends="init">
+ <!--Proxy settings works only with a JDK 1.2 and higher.-->
+ <echo>Proxy used :</echo>
+ <echo>Proxy host [${proxy.host}]</echo>
+ <echo>Proxy port [${proxy.port}]</echo>
+ <echo>Proxy user [${proxy.username}]</echo>
+ <setproxy proxyuser="${proxy.username}" proxyport="${proxy.port}" proxypassword="${proxy.password}" proxyhost="${proxy.host}"></setproxy>
+ </target>
+ <target name="noProxy" unless="useProxy" depends="init">
+ <echo>Proxy not used.</echo>
+ </target>
+ <target name="install-maven">
+ <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar"></get>
+ <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar"></unjar>
+ </target>
+</project>
diff --git a/debian/changelog b/debian/changelog
index 555e0fb..2faff6b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,21 @@
+libjaxen-java (1.1.2-1) unstable; urgency=low
+
+ * New upstream release.
+ * Add myself to Uploaders
+ * Maven POMs:
+ - debian/control: add a Build-Depends-Indep dependency on maven-repo-helper
+ - debian/rules: use mh_installpoms and mh_installjar
+ to install the POM and the jar to the Maven repository
+ - debian/pom.xml: Debian pom.xml file as upstream doesn't provide one
+ * Move libjaxen-java-doc to "doc" Section
+ * Add "get-orig-source" as suggested by policy
+ * Build with source and target set to "1.3"
+ * XOM support:
+ - Add libxom-java to Recommends
+ - Add XOM into package's extended description
+
+ -- Damien Raude-Morvan <drazzib at debian.org> Sun, 08 Nov 2009 19:51:55 +0100
+
libjaxen-java (1.1.1-4) unstable; urgency=low
* (Build-)Depends on default-jdk (Closes: #508976).
diff --git a/debian/control b/debian/control
index 3002cc1..c38e56d 100644
--- a/debian/control
+++ b/debian/control
@@ -2,9 +2,10 @@ Source: libjaxen-java
Section: java
Priority: optional
Maintainer: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
-Uploaders: Arnaud Vandyck <avdyk at debian.org>, Marcus Better <marcus at better.se>, Michael Koch <konqueror at gmx.de>
-Build-Depends: cdbs, debhelper (>= 7), ant, ant-optional
-Build-Depends-Indep: default-jdk, junit, libdom4j-java, libjdom1-java, libxerces2-java, libxom-java
+Uploaders: Arnaud Vandyck <avdyk at debian.org>, Marcus Better <marcus at better.se>, Michael Koch <konqueror at gmx.de>,
+ Damien Raude-Morvan <drazzib at debian.org>
+Build-Depends: cdbs, debhelper (>= 7), ant, ant-optional, default-jdk
+Build-Depends-Indep: junit, libdom4j-java, libjdom1-java, libxerces2-java, libxom-java, maven-repo-helper
Standards-Version: 3.8.3
Vcs-Svn: svn://svn.debian.org/pkg-java/trunk/libjaxen-java
Vcs-Browser: http://svn.debian.org/wsvn/pkg-java/trunk/libjaxen-java
@@ -13,20 +14,21 @@ Homepage: http://jaxen.org
Package: libjaxen-java
Architecture: all
Depends: default-jre-headless | java2-runtime-headless, libxerces2-java, ${misc:Depends}
-Recommends: libdom4j-java, libjdom1-java
+Recommends: libdom4j-java, libjdom1-java, libxom-java
Conflicts: libsaxpath-java
Replaces: libsaxpath-java
Description: Java XPath engine
jaxen is a universal object model walker, capable of evaluating XPath
expressions across multiple models. Currently supported are dom4j,
- JDOM, and DOM.
+ JDOM, DOM and XOM.
Package: libjaxen-java-doc
Architecture: all
+Section: doc
Depends: ${misc:Depends}
Description: Java XPath engine - documentation
jaxen is a universal object model walker, capable of evaluating XPath
expressions across multiple models. Currently supported are dom4j,
- JDOM, and DOM.
+ JDOM, DOM and XOM.
.
This package contains the API javadocs for jaxen.
diff --git a/debian/libjaxen-java-doc.dirs b/debian/libjaxen-java-doc.dirs
deleted file mode 100644
index f6c4c0f..0000000
--- a/debian/libjaxen-java-doc.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/doc/libjaxen-java
diff --git a/debian/libjaxen-java.dirs b/debian/libjaxen-java.dirs
deleted file mode 100644
index 13c9f03..0000000
--- a/debian/libjaxen-java.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/java
diff --git a/debian/libjaxen-java.poms b/debian/libjaxen-java.poms
new file mode 100644
index 0000000..1a7e280
--- /dev/null
+++ b/debian/libjaxen-java.poms
@@ -0,0 +1 @@
+debian/pom.xml
diff --git a/debian/maven.rules b/debian/maven.rules
new file mode 100644
index 0000000..b51a812
--- /dev/null
+++ b/debian/maven.rules
@@ -0,0 +1,2 @@
+s/jdom/org.jdom/ jdom jar s/1\..*/debian/
+
diff --git a/debian/pom.xml b/debian/pom.xml
new file mode 100644
index 0000000..e3f4e6f
--- /dev/null
+++ b/debian/pom.xml
@@ -0,0 +1,36 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>jaxen</groupId>
+ <artifactId>jaxen</artifactId>
+ <version>1.1.2</version>
+ <dependencies>
+ <dependency>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ <version>1.3.02</version>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.6.2</version>
+ </dependency>
+ <dependency>
+ <groupId>xom</groupId>
+ <artifactId>xom</artifactId>
+ <version>1.0</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>jdom</groupId>
+ <artifactId>jdom</artifactId>
+ <version>1.1.1</version>
+ <optional>true</optional>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/debian/rules b/debian/rules
index bf5fb66..b0f5568 100755
--- a/debian/rules
+++ b/debian/rules
@@ -5,9 +5,16 @@ include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/simple-patchsys.mk
JAVA_HOME := /usr/lib/jvm/default-java
+DEB_ANT_BUILDFILE := debian/build.xml
DEB_JARS := ant-junit junit xom
DEB_ANT_BUILD_TARGET := dist
install/libjaxen-java::
- install -m 644 -D dist/jaxen-$(DEB_UPSTREAM_VERSION).jar debian/libjaxen-java/usr/share/java/jaxen-$(DEB_UPSTREAM_VERSION).jar
- dh_link -plibjaxen-java usr/share/java/jaxen-$(DEB_UPSTREAM_VERSION).jar usr/share/java/jaxen.jar
+ mh_installpoms -plibjaxen-java
+ mh_installjar -plibjaxen-java -l debian/pom.xml dist/jaxen-$(DEB_UPSTREAM_VERSION).jar
+
+clean::
+ -rm -rf debian/tmp
+
+get-orig-source:
+ uscan --force-download --download-version $(DEB_UPSTREAM_VERSION) --rename
diff --git a/maven.xml b/maven.xml
deleted file mode 100644
index 2c58e55..0000000
--- a/maven.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:ant="jelly:ant">
-
- <preGoal name="dist:build-bin">
- <attainGoal name="dist:build-src" />
- </preGoal>
-
- <postGoal name="dist:build-bin">
- <ant:copy
- tofile="${maven.build.dir}/distributions/jaxen-${pom.currentVersion}.pom"
- file="project.xml" />
- </postGoal>
-
- <postGoal name="dist:prepare-bin-filesystem">
- <ant:copy todir="${maven.dist.bin.assembly.dir}">
- <fileset dir=".">
- <include name="xml/**" />
- </fileset>
- </ant:copy>
- </postGoal>
-
- <postGoal name="dist:prepare-src-filesystem">
- <ant:copy todir="${maven.dist.src.assembly.dir}">
- <fileset dir=".">
- <include name="xml/**" />
- </fileset>
- </ant:copy>
- </postGoal>
-
-</project>
-
-
diff --git a/project.properties b/project.properties
deleted file mode 100644
index 0787234..0000000
--- a/project.properties
+++ /dev/null
@@ -1,85 +0,0 @@
-# ------------------------------------------------------------
-# project properties
-# ------------------------------------------------------------
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# core
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-maven.compile.debug = on
-maven.compile.optimize = on
-maven.compile.deprecation = on
-maven.compile.target = 1.2
-maven.compile.source = 1.3
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# xdocs
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-maven.ui.banner.background = white
-maven.ui.section.background = #BBBBBB
-maven.ui.subsection.background = #DDDDDD
-maven.ui.section.foreground = #990000
-maven.ui.subsection.foreground = #990000
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# checkstyle
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-#maven.checkstyle.properties = ${basedir}/project.properties
-
-checkstyle.lcurly.type = nl
-checkstyle.lcurly.method = nl
-checkstyle.lcurly.other = nl
-checkstyle.rcurly = alone
-
-checkstyle.paren.pad = ignore
-checkstyle.maxlinelen = 132
-
-checkstyle.ignore.whitespace = yes
-checkstyle.allow.tabs=false
-
-checkstyle.header.file = LICENSE.txt
-checkstyle.header.ignoreline = 1,2,3,4,5,6
-checkstyle.const.pattern = ^[a-zA-Z][a-zA-Z0-9_]*$
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# pmd
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# maven.jar.override=on
-# maven.jar.pmd=3.8
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# javadoc
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-maven.javadoc.stylesheet = ./xdocs/stylesheets/javadoc-style.css
-# maven.javadoc.overview = ${basedir}/src/java/main/org/blissed/overview.html
-maven.javadoc.links = \
- http://java.sun.com/j2se/1.4.2/docs/api/
-maven.javadoc.excludepackagenames = org.jaxen.saxpath.base,org.jaxen.saxpath.helpers
-
-maven.javadoc.customtags=tag1
-tag1.name=todo
-tag1.description=To Do:
-tag1.enabled=false
-tag1.scope=all
-
-
-maven.jarResources.basedir = src/java/main/
-
-maven.xdoc.date = left
-
-maven.docs.outputencoding = UTF-8
-
-maven.junit.fork=true
-
-#maven.latex.src.dir = ${basedir}/src/latex/
-#maven.latex.docs = intro-slides.tex
-
-maven.repo.remote=http://repo1.maven.org/maven,http://dist.codehaus.org/
-maven.repo.central=dist.codehaus.org
-maven.repo.central.directory=/dist
-maven.remote.group=jaxen
\ No newline at end of file
diff --git a/project.xml b/project.xml
deleted file mode 100644
index 6044b90..0000000
--- a/project.xml
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="http://maven.apache.org/xsd/maven-project-3.0.0.xsd">
-
- <pomVersion>3</pomVersion>
- <id>jaxen</id>
- <name>jaxen</name>
- <currentVersion>1.1.1</currentVersion>
-
- <organization>
- <name>Codehaus</name>
- <url>http://codehaus.org</url>
- <logo>http://codehaus.org/codehaus-small.gif</logo>
- </organization>
- <inceptionYear>2001</inceptionYear>
- <package>org.jaxen</package>
-
-
- <logo>./jaxen.gif</logo>
- <description>
- Jaxen is a universal Java XPath engine.
- </description>
- <shortDescription>Universal Java XPath Engine</shortDescription>
-
- <url>http://jaxen.codehaus.org/</url>
-
- <issueTrackingUrl>http://jira.codehaus.org/BrowseProject.jspa?id=10022</issueTrackingUrl>
- <siteAddress>jaxen.codehaus.org</siteAddress>
- <siteDirectory>/home/projects/jaxen/public_html</siteDirectory>
- <distributionDirectory>/dist</distributionDirectory>
-
- <repository>
- <connection>scm:cvs:pserver:anonymous at cvs.jaxen.codehaus.org:/cvs/jaxen:jaxen</connection>
- <url>http://cvs.jaxen.codehaus.org</url>
- </repository>
-
- <mailingLists>
- <mailingList>
- <name>Jaxen Users List</name>
- <subscribe>user-subscribe at jaxen.codehaus.org</subscribe>
- <unsubscribe>user-unsubscribe at jaxen.codehaus.org</unsubscribe>
- <archive>http://archive.jaxen.codehaus.org/user/</archive>
- </mailingList>
- <mailingList>
- <name>Jaxen Developers List</name>
- <subscribe>dev-subscribe at jaxen.codehaus.org</subscribe>
- <unsubscribe>dev-unsubscribe at jaxen.codehaus.org</unsubscribe>
- <archive>http://archive.jaxen.codehaus.org/dev/</archive>
- </mailingList>
- <mailingList>
- <name>Jaxen CVS Commits List</name>
- <subscribe>scm-subscribe at jaxen.codehaus.org</subscribe>
- <unsubscribe>scm-unsubscribe at jaxen.codehaus.org</unsubscribe>
- <archive>http://archive.jaxen.codehaus.org/scm/</archive>
- </mailingList>
- <!-- <mailingList>
- <name>Jaxen Announcement List</name>
- <subscribe>announce-subscribe at jaxen.codehaus.org</subscribe>
- <unsubscribe>announce-unsubscribe at jaxen.codehaus.org</unsubscribe>
- <archive>http://archive.jaxen.codehaus.org/announce/</archive>
- </mailingList> -->
- </mailingLists>
-
-
- <developers>
-
- <developer>
- <name>Bob McWhirter</name>
- <id>bob</id>
- <email>bob at eng.werken.com</email>
- <organization>The Werken Company</organization>
- </developer>
-
- <developer>
- <name>James Strachan</name>
- <id>jstrachan</id>
- <email>james_strachan at yahoo.co.uk</email>
- <organization>Spiritsoft</organization>
- </developer>
-
- <developer>
- <name>David Megginson</name>
- <id>dmegginson</id>
- <email>contact at megginson.com</email>
- <organization>Megginson Technologies</organization>
- </developer>
-
- <developer>
- <name>Erwin Bolwidt</name>
- <id>eboldwidt</id>
- <email>erwin at klomp.org</email>
- </developer>
-
- <developer>
- <name>Mark A. Belonga</name>
- <id>mbelonga</id>
- <email>mbelonga at users.sourceforge.net</email>
- </developer>
-
- <developer>
- <name>Christian Nentwich</name>
- <!-- <id>xcut</id> -->
- <id>cnentwich</id>
- <email>xcut at users.sourceforge.net</email>
- </developer>
-
- <developer>
- <name>Alexander Day Chaffee</name>
- <id>purpletech</id>
- <email>purpletech at users.sourceforge.net</email>
- <organization>Purple Technologies</organization>
- </developer>
-
- <developer>
- <name>Jan Dvorak</name>
- <id>jdvorak</id>
- <email>jdvorak at users.sourceforge.net</email>
- </developer>
-
- <developer>
- <name>Attila Szegedi</name>
- <id>szegedia</id>
- <email>szegedia at users.sourceforge.net</email>
- </developer>
-
- <developer>
- <name>Peter Royal</name>
- <id>proyal</id>
- <email>peter.royal at pobox.com</email>
- <url>http://fotap.org/~osi</url>
- </developer>
-
- <developer>
- <name>Scott Sanders</name>
- <id>ssanders</id>
- <email>scott at dotnot.org</email>
- <organization>dotnot</organization>
- <url>http://dotnot.org/blog</url>
- </developer>
-
- <developer>
- <name>Brian Ewins</name>
- <id>bewins</id>
- <email>brian.ewins at gmail.com</email>
- </developer>
-
- <developer>
- <name>Elliotte Rusty Harold</name>
- <id>elharo</id>
- <email>elharo at metalab.unc.edu</email>
- <organization>Cafe au Lait</organization>
- <url>http://www.elharo.com/</url>
- </developer>
-
- </developers>
-
- <contributors>
- <contributor>
- <name>Ryan Gustafson</name>
- <email>rgustav at users.sourceforge.net</email>
- </contributor>
-
- <contributor>
- <name>David Peterson</name>
- <email>david at randombits.org</email>
- </contributor>
-
- <contributor>
- <name>Mark Wilson</name>
- <email>mark.wilson at wilsoncom.de</email>
- </contributor>
-
- <contributor>
- <name>Jacob Kjome</name>
- <email>hoju at visi.com</email>
- </contributor>
-
- <contributor>
- <name>Michael Brennan</name>
- <email>mpbrennan at earthlink.net</email>
- </contributor>
-
- <contributor>
- <name>Jason Hunter</name>
- <email>jhunter at xquery.com</email>
- </contributor>
-
- <contributor>
- <name>Brett Mclaughlin</name>
- <email>brett.mclaughlin at lutris.com</email>
- </contributor>
-
- <contributor>
- <name>Bradley S. Huffman</name>
- <email>hip at cs.okstate.edu</email>
- </contributor>
-
- <!-- found him on sourceforge http://sourceforge.net/project/memberlist.php?group_id=26014 -->
- <contributor>
- <name>K. Ari Krupnikov</name>
- <email>ari at lib.aero</email>
- </contributor>
-
- <!-- found him on sourceforge http://sourceforge.net/project/memberlist.php?group_id=31447 -->
- <contributor>
- <name>Paul R. Brown</name>
- <email>prb at fivesight.com</email>
- </contributor>
-
-
- <!-- next two found on http://lists.debian.org/debian-mentors/2003/09/msg00217.html -->
- <contributor>
- <name>Guoliang Cao</name>
- <email>cao at ispsoft.com</email>
- </contributor>
-
- <contributor>
- <name>Jérôme Nègre</name>
- <email>jerome.negre at e-xmlmedia.fr</email>
- </contributor>
-
- <!-- org.jaxen.ext.MatrixConcat function -->
- <!-- <contributor>
- <name>James Pereira</name>
- <email>JPereira at CT.BBD.CO.ZA</email>
- </contributor> -->
-
- <!-- found next two in CVS-->
- <contributor>
- <name>Eddie McGreal</name>
- <email>emcgreal at BlackPearl.com</email>
- </contributor>
-
- <contributor>
- <name>Steen Lehmann</name>
- <email>slehmann at users.sourceforge.net</email>
- </contributor>
-
- </contributors>
-
- <reports>
- <report>maven-jdepend-plugin</report>
- <report>maven-checkstyle-plugin</report>
- <report>maven-cobertura-plugin</report>
- <report>maven-changelog-plugin</report>
- <report>maven-developer-activity-plugin</report>
- <report>maven-file-activity-plugin</report>
- <report>maven-license-plugin</report>
- <report>maven-javadoc-plugin</report>
- <report>maven-jxr-plugin</report>
- <report>maven-junit-report-plugin</report>
- <report>maven-linkcheck-plugin</report>
- <report>maven-pmd-plugin</report>
- <report>maven-findbugs-plugin</report>
- <!-- commenting out until they fix their repository <report>jutils-lint4j-plugin</report> -->
- <!-- <report>maven-hammurapi-plugin</report> -->
- </reports>
-
- <!-- Need to mark these as compile-time/run-time -->
-
- <dependencies>
-
- <dependency>
- <groupId>dom4j</groupId>
- <artifactId>dom4j</artifactId>
- <version>1.6.1</version>
- </dependency>
-
- <dependency>
- <groupId>jdom</groupId>
- <artifactId>jdom</artifactId>
- <version>1.0</version>
- <url>http://jdom.org</url>
- </dependency>
-
- <dependency>
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- <version>1.3.02</version>
- </dependency>
-
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- <version>2.6.2</version>
- </dependency>
-
- <dependency>
- <groupId>xom</groupId>
- <artifactId>xom</artifactId>
- <version>1.0</version>
- </dependency>
-
- <dependency>
- <groupId>maven-plugins</groupId>
- <artifactId>maven-cobertura-plugin</artifactId>
- <version>1.3</version>
- <type>plugin</type>
- </dependency>
-
-<!-- <dependency>
- <groupId>maven-plugins</groupId>
- <artifactId>maven-latex-plugin</artifactId>
- <version>1.5</version>
- <type>plugin</type>
- </dependency> -->
-
- <dependency>
- <groupId>maven-plugins</groupId>
- <artifactId>maven-findbugs-plugin</artifactId>
- <version>1.3.1</version>
- <type>plugin</type>
- </dependency>
-
-<!-- <dependency>
- <groupId>lint4j</groupId>
- <artifactId>jutils-lint4j-plugin</artifactId>
- <version>1.1</version>
- <type>plugin</type>
- </dependency> -->
-
- <!-- <dependency>
- <groupId>org.hammurapi</groupId>
- <artifactId>maven-hammurapi-plugin</artifactId>
- <version>1.0</version>
- <type>plugin</type>
- </dependency> -->
- </dependencies>
-
- <build>
-
- <nagEmailAddress>dev at jaxen.codehaus.org</nagEmailAddress>
- <sourceDirectory>src/java/main</sourceDirectory>
- <unitTestSourceDirectory>src/java/test</unitTestSourceDirectory>
-
- <!-- Unit test classes -->
-
- <unitTest>
- <includes>
- <include>**/*Test.java</include>
- </includes>
- </unitTest>
-
- </build>
-
-</project>
-
-
diff --git a/src/java/main/org/jaxen/BaseXPath.java b/src/java/main/org/jaxen/BaseXPath.java
deleted file mode 100644
index 3ca9776..0000000
--- a/src/java/main/org/jaxen/BaseXPath.java
+++ /dev/null
@@ -1,708 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/BaseXPath.java,v 1.50 2007/04/16 15:44:37 elharo Exp $
- * $Revision: 1.50 $
- * $Date: 2007/04/16 15:44:37 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: BaseXPath.java,v 1.50 2007/04/16 15:44:37 elharo Exp $
- */
-
-
-package org.jaxen;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.jaxen.expr.Expr;
-import org.jaxen.expr.XPathExpr;
-import org.jaxen.function.BooleanFunction;
-import org.jaxen.function.NumberFunction;
-import org.jaxen.function.StringFunction;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.XPathReader;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-import org.jaxen.util.SingletonList;
-
-/** Base functionality for all concrete, implementation-specific XPaths.
- *
- * <p>
- * This class provides generic functionality for further-defined
- * implementation-specific XPaths.
- * </p>
- *
- * <p>
- * If you want to adapt the Jaxen engine so that it can traverse your own
- * object model, then this is a good base class to derive from.
- * Typically you only really need to provide your own
- * {@link org.jaxen.Navigator} implementation.
- * </p>
- *
- * @see org.jaxen.dom4j.Dom4jXPath XPath for dom4j
- * @see org.jaxen.jdom.JDOMXPath XPath for JDOM
- * @see org.jaxen.dom.DOMXPath XPath for W3C DOM
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public class BaseXPath implements XPath, Serializable
-{
- /** Original expression text. */
- private final String exprText;
-
- /** the parsed form of the XPath expression */
- private final XPathExpr xpath;
-
- /** the support information and function, namespace and variable contexts */
- private ContextSupport support;
-
- /** the implementation-specific Navigator for retrieving XML nodes **/
- private Navigator navigator;
-
- /** Construct given an XPath expression string.
- *
- * @param xpathExpr the XPath expression
- *
- * @throws JaxenException if there is a syntax error while
- * parsing the expression
- */
- protected BaseXPath(String xpathExpr) throws JaxenException
- {
- try
- {
- XPathReader reader = XPathReaderFactory.createReader();
- JaxenHandler handler = new JaxenHandler();
- reader.setXPathHandler( handler );
- reader.parse( xpathExpr );
- this.xpath = handler.getXPathExpr();
- }
- catch (org.jaxen.saxpath.XPathSyntaxException e)
- {
- throw new org.jaxen.XPathSyntaxException( e );
- }
- catch (SAXPathException e)
- {
- throw new JaxenException( e );
- }
-
- this.exprText = xpathExpr;
- }
-
- /** Construct given an XPath expression string.
- *
- * @param xpathExpr the XPath expression
- *
- * @param navigator the XML navigator to use
- *
- * @throws JaxenException if there is a syntax error while
- * parsing the expression
- */
- public BaseXPath(String xpathExpr, Navigator navigator) throws JaxenException
- {
- this( xpathExpr );
- this.navigator = navigator;
- }
-
- /** Evaluate this XPath against a given context.
- * The context of evaluation may be any object type
- * the navigator recognizes as a node.
- * The return value is either a <code>String</code>,
- * <code>Double</code>, <code>Boolean</code>, or <code>List</code>
- * of nodes.
- *
- * <p>
- * When using this method, one must be careful to
- * test the class of the returned object. If the returned
- * object is a list, then the items in this
- * list will be the actual <code>Document</code>,
- * <code>Element</code>, <code>Attribute</code>, etc. objects
- * as defined by the concrete XML object-model implementation,
- * directly from the context document. This method <strong>does
- * not return <em>copies</em> of anything</strong>, but merely
- * returns references to objects within the source document.
- * </p>
- *
- * @param context the node, node-set or Context object for evaluation.
- * This value can be null.
- *
- * @return the result of evaluating the XPath expression
- * against the supplied context
- * @throws JaxenException if an XPath error occurs during expression evaluation
- * @throws ClassCastException if the context is not a node
- */
- public Object evaluate(Object context) throws JaxenException
- {
- List answer = selectNodes(context);
-
- if ( answer != null
- &&
- answer.size() == 1 )
- {
- Object first = answer.get(0);
-
- if ( first instanceof String
- ||
- first instanceof Number
- ||
- first instanceof Boolean )
- {
- return first;
- }
- }
- return answer;
- }
-
- /** Select all nodes that are selected by this XPath
- * expression. If multiple nodes match, multiple nodes
- * will be returned. Nodes will be returned
- * in document-order, as defined by the XPath
- * specification. If the expression selects a non-node-set
- * (i.e. a number, boolean, or string) then a List
- * containing just that one object is returned.
- * </p>
- *
- * @param node the node, node-set or Context object for evaluation.
- * This value can be null.
- *
- * @return the node-set of all items selected
- * by this XPath expression
- * @throws JaxenException if an XPath error occurs during expression evaluation
- *
- * @see #selectNodesForContext
- */
- public List selectNodes(Object node) throws JaxenException
- {
- Context context = getContext( node );
- return selectNodesForContext( context );
- }
-
- /** Select only the first node selected by this XPath
- * expression. If multiple nodes match, only one node will be
- * returned. The selected node will be the first
- * selected node in document-order, as defined by the XPath
- * specification.
- * </p>
- *
- * @param node the node, node-set or Context object for evaluation.
- * This value can be null.
- *
- * @return the node-set of all items selected
- * by this XPath expression
- * @throws JaxenException if an XPath error occurs during expression evaluation
- *
- * @see #selectNodes
- */
- public Object selectSingleNode(Object node) throws JaxenException
- {
- List results = selectNodes( node );
-
- if ( results.isEmpty() )
- {
- return null;
- }
-
- return results.get( 0 );
- }
-
- /**
- * Returns the XPath string-value of the argument node.
- *
- * @param node the node whose value to take
- * @return the XPath string value of this node
- * @throws JaxenException if an XPath error occurs during expression evaluation
- * @deprecated replaced by {@link #stringValueOf}
- */
- public String valueOf(Object node) throws JaxenException
- {
- return stringValueOf( node );
- }
-
- /** Retrieves the string-value of the result of
- * evaluating this XPath expression when evaluated
- * against the specified context.
- *
- * <p>
- * The string-value of the expression is determined per
- * the <code>string(..)</code> core function defined
- * in the XPath specification. This means that an expression
- * that selects zero nodes will return the empty string,
- * while an expression that selects one-or-more nodes will
- * return the string-value of the first node.
- * </p>
- *
- * @param node the node, node-set or Context object for evaluation. This value can be null.
- *
- * @return the string-value of the result of evaluating this expression with the specified context node
- * @throws JaxenException if an XPath error occurs during expression evaluation
- */
- public String stringValueOf(Object node) throws JaxenException
- {
- Context context = getContext( node );
-
- Object result = selectSingleNodeForContext( context );
-
- if ( result == null )
- {
- return "";
- }
-
- return StringFunction.evaluate( result,
- context.getNavigator() );
- }
-
- /** Retrieve a boolean-value interpretation of this XPath
- * expression when evaluated against a given context.
- *
- * <p>
- * The boolean-value of the expression is determined per
- * the <code>boolean(..)</code> function defined
- * in the XPath specification. This means that an expression
- * that selects zero nodes will return <code>false</code>,
- * while an expression that selects one or more nodes will
- * return <code>true</code>.
- * </p>
- *
- * @param node the node, node-set or Context object for evaluation. This value can be null.
- *
- * @return the boolean-value of the result of evaluating this expression with the specified context node
- * @throws JaxenException if an XPath error occurs during expression evaluation
- */
- public boolean booleanValueOf(Object node) throws JaxenException
- {
- Context context = getContext( node );
- List result = selectNodesForContext( context );
- if ( result == null ) return false;
- return BooleanFunction.evaluate( result, context.getNavigator() ).booleanValue();
- }
-
- /** Retrieve a number-value interpretation of this XPath
- * expression when evaluated against a given context.
- *
- * <p>
- * The number-value of the expression is determined per
- * the <code>number(..)</code> core function as defined
- * in the XPath specification. This means that if this
- * expression selects multiple nodes, the number-value
- * of the first node is returned.
- * </p>
- *
- * @param node the node, node-set or Context object for evaluation. This value can be null.
- *
- * @return a <code>Double</code> indicating the numeric value of
- * evaluating this expression against the specified context
- * @throws JaxenException if an XPath error occurs during expression evaluation
- */
- public Number numberValueOf(Object node) throws JaxenException
- {
- Context context = getContext( node );
- Object result = selectSingleNodeForContext( context );
- return NumberFunction.evaluate( result,
- context.getNavigator() );
- }
-
- // Helpers
-
- /** Add a namespace prefix-to-URI mapping for this XPath
- * expression.
- *
- * <p>
- * Namespace prefix-to-URI mappings in an XPath are independent
- * of those used within any document. Only the mapping explicitly
- * added to this XPath will be available for resolving the
- * XPath expression.
- * </p>
- *
- * <p>
- * This is a convenience method for adding mappings to the
- * default {@link NamespaceContext} in place for this XPath.
- * If you have installed a custom <code>NamespaceContext</code>
- * that is not a <code>SimpleNamespaceContext</code>,
- * then this method will throw a <code>JaxenException</code>.
- * </p>
- *
- * @param prefix the namespace prefix
- * @param uri the namespace URI
- *
- * @throws JaxenException if the <code>NamespaceContext</code>
- * used by this XPath is not a <code>SimpleNamespaceContext</code>
- */
- public void addNamespace(String prefix,
- String uri) throws JaxenException
- {
- NamespaceContext nsContext = getNamespaceContext();
- if ( nsContext instanceof SimpleNamespaceContext )
- {
- ((SimpleNamespaceContext)nsContext).addNamespace( prefix,
- uri );
- return;
- }
-
- throw new JaxenException("Operation not permitted while using a non-simple namespace context.");
- }
-
-
- // ------------------------------------------------------------
- // ------------------------------------------------------------
- // Properties
- // ------------------------------------------------------------
- // ------------------------------------------------------------
-
-
- /** Set a <code>NamespaceContext</code> for use with this
- * XPath expression.
- *
- * <p>
- * A <code>NamespaceContext</code> is responsible for translating
- * namespace prefixes within the expression into namespace URIs.
- * </p>
- *
- * @param namespaceContext the <code>NamespaceContext</code> to
- * install for this expression
- *
- * @see NamespaceContext
- * @see NamespaceContext#translateNamespacePrefixToUri
- */
- public void setNamespaceContext(NamespaceContext namespaceContext)
- {
- getContextSupport().setNamespaceContext(namespaceContext);
- }
-
- /** Set a <code>FunctionContext</code> for use with this XPath
- * expression.
- *
- * <p>
- * A <code>FunctionContext</code> is responsible for resolving
- * all function calls used within the expression.
- * </p>
- *
- * @param functionContext the <code>FunctionContext</code> to
- * install for this expression
- *
- * @see FunctionContext
- * @see FunctionContext#getFunction
- */
- public void setFunctionContext(FunctionContext functionContext)
- {
- getContextSupport().setFunctionContext(functionContext);
- }
-
- /** Set a <code>VariableContext</code> for use with this XPath
- * expression.
- *
- * <p>
- * A <code>VariableContext</code> is responsible for resolving
- * all variables referenced within the expression.
- * </p>
- *
- * @param variableContext The <code>VariableContext</code> to
- * install for this expression
- *
- * @see VariableContext
- * @see VariableContext#getVariableValue
- */
- public void setVariableContext(VariableContext variableContext)
- {
- getContextSupport().setVariableContext(variableContext);
- }
-
- /** Retrieve the <code>NamespaceContext</code> used by this XPath
- * expression.
- *
- * <p>
- * A <code>NamespaceContext</code> is responsible for mapping
- * prefixes used within the expression to namespace URIs.
- * </p>
- *
- * <p>
- * If this XPath expression has not previously had a <code>NamespaceContext</code>
- * installed, a new default <code>NamespaceContext</code> will be created,
- * installed and returned.
- * </p>
- *
- * @return the <code>NamespaceContext</code> used by this expression
- *
- * @see NamespaceContext
- */
- public NamespaceContext getNamespaceContext()
- {
- return getContextSupport().getNamespaceContext();
- }
-
- /** Retrieve the <code>FunctionContext</code> used by this XPath
- * expression.
- *
- * <p>
- * A <code>FunctionContext</code> is responsible for resolving
- * all function calls used within the expression.
- * </p>
- *
- * <p>
- * If this XPath expression has not previously had a <code>FunctionContext</code>
- * installed, a new default <code>FunctionContext</code> will be created,
- * installed and returned.
- * </p>
- *
- * @return the <code>FunctionContext</code> used by this expression
- *
- * @see FunctionContext
- */
- public FunctionContext getFunctionContext()
- {
- return getContextSupport().getFunctionContext();
- }
-
- /** Retrieve the <code>VariableContext</code> used by this XPath
- * expression.
- *
- * <p>
- * A <code>VariableContext</code> is responsible for resolving
- * all variables referenced within the expression.
- * </p>
- *
- * <p>
- * If this XPath expression has not previously had a <code>VariableContext</code>
- * installed, a new default <code>VariableContext</code> will be created,
- * installed and returned.
- * </p>
- *
- * @return the <code>VariableContext</code> used by this expression
- *
- * @see VariableContext
- */
- public VariableContext getVariableContext()
- {
- return getContextSupport().getVariableContext();
- }
-
-
- /** Retrieve the root expression of the internal
- * compiled form of this XPath expression.
- *
- * <p>
- * Internally, Jaxen maintains a form of Abstract Syntax
- * Tree (AST) to represent the structure of the XPath expression.
- * This is normally not required during normal consumer-grade
- * usage of Jaxen. This method is provided for hard-core users
- * who wish to manipulate or inspect a tree-based version of
- * the expression.
- * </p>
- *
- * @return the root of the AST of this expression
- */
- public Expr getRootExpr()
- {
- return xpath.getRootExpr();
- }
-
- /** Return the original expression text.
- *
- * @return the normalized XPath expression string
- */
- public String toString()
- {
- return this.exprText;
- }
-
- /** Returns a string representation of the parse tree.
- *
- * @return a string representation of the parse tree.
- */
- public String debug()
- {
- return this.xpath.toString();
- }
-
- // ------------------------------------------------------------
- // ------------------------------------------------------------
- // Implementation methods
- // ------------------------------------------------------------
- // ------------------------------------------------------------
-
-
- /** Create a {@link Context} wrapper for the provided
- * implementation-specific object.
- *
- * @param node the implementation-specific object
- * to be used as the context
- *
- * @return a <code>Context</code> wrapper around the object
- */
- protected Context getContext(Object node)
- {
- if ( node instanceof Context )
- {
- return (Context) node;
- }
-
- Context fullContext = new Context( getContextSupport() );
-
- if ( node instanceof List )
- {
- fullContext.setNodeSet( (List) node );
- }
- else
- {
- List list = new SingletonList(node);
- fullContext.setNodeSet( list );
- }
-
- return fullContext;
- }
-
- /** Retrieve the {@link ContextSupport} aggregation of
- * <code>NamespaceContext</code>, <code>FunctionContext</code>,
- * <code>VariableContext</code>, and {@link Navigator}.
- *
- * @return aggregate <code>ContextSupport</code> for this
- * XPath expression
- */
- protected ContextSupport getContextSupport()
- {
- if ( support == null )
- {
- support = new ContextSupport(
- createNamespaceContext(),
- createFunctionContext(),
- createVariableContext(),
- getNavigator()
- );
- }
-
- return support;
- }
-
- /** Retrieve the XML object-model-specific {@link Navigator}
- * for us in evaluating this XPath expression.
- *
- * @return the implementation-specific <code>Navigator</code>
- */
- public Navigator getNavigator()
- {
- return navigator;
- }
-
-
-
- // ------------------------------------------------------------
- // ------------------------------------------------------------
- // Factory methods for default contexts
- // ------------------------------------------------------------
- // ------------------------------------------------------------
-
- /** Create a default <code>FunctionContext</code>.
- *
- * @return a default <code>FunctionContext</code>
- */
- protected FunctionContext createFunctionContext()
- {
- return XPathFunctionContext.getInstance();
- }
-
- /** Create a default <code>NamespaceContext</code>.
- *
- * @return a default <code>NamespaceContext</code> instance
- */
- protected NamespaceContext createNamespaceContext()
- {
- return new SimpleNamespaceContext();
- }
-
- /** Create a default <code>VariableContext</code>.
- *
- * @return a default <code>VariableContext</code> instance
- */
- protected VariableContext createVariableContext()
- {
- return new SimpleVariableContext();
- }
-
- /** Select all nodes that match this XPath
- * expression on the given Context object.
- * If multiple nodes match, multiple nodes
- * will be returned in document-order, as defined by the XPath
- * specification. If the expression selects a non-node-set
- * (i.e. a number, boolean, or string) then a List
- * containing just that one object is returned.
- * </p>
- *
- * @param context the Context which gets evaluated
- *
- * @return the node-set of all items selected
- * by this XPath expression
- * @throws JaxenException if an XPath error occurs during expression evaluation
- *
- */
- protected List selectNodesForContext(Context context) throws JaxenException
- {
- List list = this.xpath.asList( context );
- return list;
-
- }
-
-
- /** Return only the first node that is selected by this XPath
- * expression. If multiple nodes match, only one node will be
- * returned. The selected node will be the first
- * selected node in document-order, as defined by the XPath
- * specification. If the XPath expression selects a double,
- * String, or boolean, then that object is returned.
- * </p>
- *
- * @param context the Context against which this expression is evaluated
- *
- * @return the first node in document order of all nodes selected
- * by this XPath expression
- * @throws JaxenException if an XPath error occurs during expression evaluation
- *
- * @see #selectNodesForContext
- */
- protected Object selectSingleNodeForContext(Context context) throws JaxenException
- {
- List results = selectNodesForContext( context );
-
- if ( results.isEmpty() )
- {
- return null;
- }
-
- return results.get( 0 );
- }
-
-}
diff --git a/src/java/main/org/jaxen/Context.java b/src/java/main/org/jaxen/Context.java
deleted file mode 100644
index 5a4f7f2..0000000
--- a/src/java/main/org/jaxen/Context.java
+++ /dev/null
@@ -1,285 +0,0 @@
-package org.jaxen;
-
-/*
- $Id: Context.java,v 1.20 2006/10/15 21:08:16 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/** Wrapper around implementation-specific objects used
- * as the context of an expression evaluation.
- *
- * <p>
- * <strong>NOTE:</strong> This class is not typically used directly,
- * but is exposed for writers of implementation-specific
- * XPath packages.
- * </p>
- *
- * <p>
- * The <code>Context</code> bundles utilities together
- * for evaluation of the expression. It wraps the provided
- * objects for ease-of-passage through the expression
- * <acronym title="Abstract Syntax Tree">AST</acronym>.
- * </p>
- *
- * @see ContextSupport
- * @see BaseXPath
- * @see org.jaxen.dom4j.Dom4jXPath XPath for dom4j
- * @see org.jaxen.jdom.JDOMXPath XPath for JDOM
- * @see org.jaxen.dom.DOMXPath XPath for W3C DOM
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public class Context implements Serializable {
-
- /**
- *
- */
- private static final long serialVersionUID = 2315979994685591055L;
-
- // ----------------------------------------------------------------------
- // Instance members
- // ----------------------------------------------------------------------
-
- /** Context-support */
- private ContextSupport contextSupport;
-
- /** Context node-set */
- private List nodeSet;
-
- /** Current context size */
- private int size;
-
- /** Current context position */
- private int position;
-
- // ----------------------------------------------------------------------
- // Constructors
- // ----------------------------------------------------------------------
-
- /** Create a new context.
- *
- * @param contextSupport the context-support
- */
- public Context(ContextSupport contextSupport)
- {
- this.contextSupport = contextSupport;
- this.nodeSet = Collections.EMPTY_LIST;
- this.size = 0;
- this.position = 0;
- }
-
- // ----------------------------------------------------------------------
- // Instance methods
- // ----------------------------------------------------------------------
-
- /**
- * <p>
- * Set the context node-set, and sets the current context size to the size
- * of this node-set. </p>
- *
- * <p>The actual list is stored in this object. A copy
- * is not made. This list should not be modified in other code after
- * calling this method.</p>
- *
- * <p>
- * After invoking this method, the client should immediately call
- * {@link #setSize(int) setSize} and {@link #setPosition(int) setPosition}.
- *</p>
- *
- * @param nodeSet the context node-set
- */
- public void setNodeSet(List nodeSet)
- {
- this.nodeSet = nodeSet;
- this.size = nodeSet.size();
- if (position >= size) this.position = 0;
- }
-
- /** Retrieve the context node-set.
- * This is a live list. It is not a copy.
- * Do not modify it.
- *
- * @return the context node-set
- */
- public List getNodeSet()
- {
- return this.nodeSet;
- }
-
- /** Set the <code>ContextSupport</code>.
- *
- * @param contextSupport the context-support
- */
- public void setContextSupport(ContextSupport contextSupport)
- {
- this.contextSupport = contextSupport;
- }
-
- /** Retrieve the <code>ContextSupport</code>.
- *
- * @return the context-support
- */
- public ContextSupport getContextSupport()
- {
- return this.contextSupport;
- }
-
- /** Retrieve the current <code>Navigator</code>.
- *
- * @return the navigator
- */
- public Navigator getNavigator()
- {
- return getContextSupport().getNavigator();
- }
-
- /** Translate a namespace prefix to its URI.
- *
- * @param prefix the prefix
- *
- * @return the namespace URI mapped to the prefix
- */
- public String translateNamespacePrefixToUri(String prefix)
- {
- return getContextSupport().translateNamespacePrefixToUri( prefix );
- }
-
- /** Retrieve a variable value.
- *
- * @param namespaceURI the function namespace URI
- * @param prefix the function prefix
- * @param localName the function name
- *
- * @return the variable value
- *
- * @throws UnresolvableException if unable to locate a bound variable
- */
- public Object getVariableValue(String namespaceURI,
- String prefix,
- String localName)
- throws UnresolvableException
- {
- return getContextSupport().getVariableValue( namespaceURI,
- prefix,
- localName );
- }
-
- /** Retrieve a <code>Function</code>.
- *
- * @param namespaceURI the function namespace URI
- * @param prefix the function prefix
- * @param localName the function name
- *
- * @return the function object
- *
- * @throws UnresolvableException if unable to locate a bound function
- */
- public Function getFunction(String namespaceURI,
- String prefix,
- String localName)
- throws UnresolvableException
- {
- return getContextSupport().getFunction( namespaceURI,
- prefix,
- localName );
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Properties
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- /** Set the current size in the context node-set.
- *
- * @param size the size
- */
- public void setSize(int size)
- {
- this.size = size;
- }
-
- /** Retrieve the size of the current context node-set.
- *
- * @return the size
- */
- public int getSize()
- {
- return this.size;
- }
-
- /** Set the current position in the context node-set.
- *
- * @param position the position
- */
- public void setPosition(int position)
- {
- this.position = position;
- }
-
- /** Retrieve current position in the context node-set.
- *
- * @return the current position
- */
- public int getPosition()
- {
- return this.position;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Helpers
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- /** Create a type-safe shallow copy.
- *
- * @return the duplicate
- */
- public Context duplicate()
- {
- Context dupe = new Context( getContextSupport() );
-
- List thisNodeSet = getNodeSet();
-
- if ( thisNodeSet != null )
- {
- List dupeNodeSet = new ArrayList( thisNodeSet.size() );
- dupeNodeSet.addAll( thisNodeSet );
- dupe.setNodeSet( dupeNodeSet );
- dupe.setPosition(this.position);
- }
-
- return dupe;
- }
-}
diff --git a/src/java/main/org/jaxen/ContextSupport.java b/src/java/main/org/jaxen/ContextSupport.java
deleted file mode 100644
index efd3f01..0000000
--- a/src/java/main/org/jaxen/ContextSupport.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package org.jaxen;
-
-/*
- $Id: ContextSupport.java,v 1.13 2006/06/03 20:06:06 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-
-import java.io.Serializable;
-
-/** Supporting context information for resolving
- * namespace prefixes, functions, and variables.
- *
- * <p>
- * <strong>NOTE:</strong> This class is not typically used directly,
- * but is exposed for writers of implementation-specific
- * XPath packages.
- * </p>
- *
- * @see org.jaxen.dom4j.Dom4jXPath XPath for dom4j
- * @see org.jaxen.jdom.JDOMXPath XPath for JDOM
- * @see org.jaxen.dom.DOMXPath XPath for W3C DOM
- *
- * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
- *
- * @version $Id: ContextSupport.java,v 1.13 2006/06/03 20:06:06 elharo Exp $
- */
-public class ContextSupport implements Serializable {
-
- /**
- *
- */
- private static final long serialVersionUID = 4494082174713652559L;
-
- /** Function context. */
- private transient FunctionContext functionContext;
-
- /** Namespace context. */
- private NamespaceContext namespaceContext;
-
- /** Variable context. */
- private VariableContext variableContext;
-
- /** Model navigator. */
- private Navigator navigator;
-
- // ----------------------------------------------------------------------
- // Constructors
- // ----------------------------------------------------------------------
-
- /** Construct an empty <code>ContextSupport</code>.
- */
- public ContextSupport()
- {
- // intentionally left blank
- }
-
- /** Create a new ContextSupport object.
- *
- * @param namespaceContext the NamespaceContext
- * @param functionContext the FunctionContext
- * @param variableContext the VariableContext
- * @param navigator the model navigator
- */
- public ContextSupport(NamespaceContext namespaceContext,
- FunctionContext functionContext,
- VariableContext variableContext,
- Navigator navigator)
- {
- setNamespaceContext( namespaceContext );
- setFunctionContext( functionContext );
- setVariableContext( variableContext );
-
- this.navigator = navigator;
- }
-
- // ----------------------------------------------------------------------
- // Instance methods
- // ----------------------------------------------------------------------
-
- /** Set the <code>NamespaceContext</code>.
- *
- * @param namespaceContext the namespace context
- */
- public void setNamespaceContext(NamespaceContext namespaceContext)
- {
- this.namespaceContext = namespaceContext;
- }
-
- /** Retrieve the <code>NamespaceContext</code>.
- *
- * @return the namespace context
- */
- public NamespaceContext getNamespaceContext()
- {
- return this.namespaceContext;
- }
-
- /** Set the <code>FunctionContext</code>.
- *
- * @param functionContext the function context
- */
- public void setFunctionContext(FunctionContext functionContext)
- {
- this.functionContext = functionContext;
- }
-
- /** Retrieve the <code>FunctionContext</code>.
- *
- * @return the function context
- */
- public FunctionContext getFunctionContext()
- {
- return this.functionContext;
- }
-
- /** Set the <code>VariableContext</code>.
- *
- * @param variableContext the variable context
- */
- public void setVariableContext(VariableContext variableContext)
- {
- this.variableContext = variableContext;
- }
-
- /** Retrieve the <code>VariableContext</code>.
- *
- * @return the variable context
- */
- public VariableContext getVariableContext()
- {
- return this.variableContext;
- }
-
- /** Retrieve the <code>Navigator</code>.
- *
- * @return the navigator
- */
- public Navigator getNavigator()
- {
- return this.navigator;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- /** Translate a namespace prefix to its URI.
- *
- * @param prefix The prefix
- *
- * @return the namespace URI mapped to the prefix
- */
- public String translateNamespacePrefixToUri(String prefix)
- {
-
- if ("xml".equals(prefix)) {
- return "http://www.w3.org/XML/1998/namespace";
- }
- NamespaceContext context = getNamespaceContext();
-
- if ( context != null )
- {
- return context.translateNamespacePrefixToUri( prefix );
- }
-
- return null;
- }
-
- /** Retrieve a variable value.
- *
- * @param namespaceURI the function namespace URI
- * @param prefix the function prefix
- * @param localName the function name
- *
- * @return the variable value.
- *
- * @throws UnresolvableException if unable to locate a bound variable.
- */
- public Object getVariableValue( String namespaceURI,
- String prefix,
- String localName )
- throws UnresolvableException
- {
- VariableContext context = getVariableContext();
-
- if ( context != null )
- {
- return context.getVariableValue( namespaceURI, prefix, localName );
- }
- else
- {
- throw new UnresolvableException( "No variable context installed" );
- }
- }
-
- /** Retrieve a <code>Function</code>.
- *
- * @param namespaceURI the function namespace URI
- * @param prefix the function prefix
- * @param localName the function name
- *
- * @return the function object
- *
- * @throws UnresolvableException if unable to locate a bound function
- */
- public Function getFunction( String namespaceURI,
- String prefix,
- String localName )
- throws UnresolvableException
- {
- FunctionContext context = getFunctionContext();
-
- if ( context != null )
- {
- return context.getFunction( namespaceURI, prefix, localName );
- }
- else
- {
- throw new UnresolvableException( "No function context installed" );
- }
- }
-
-}
diff --git a/src/java/main/org/jaxen/DefaultNavigator.java b/src/java/main/org/jaxen/DefaultNavigator.java
deleted file mode 100644
index b8781c1..0000000
--- a/src/java/main/org/jaxen/DefaultNavigator.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/DefaultNavigator.java,v 1.19 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.19 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultNavigator.java,v 1.19 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-
-package org.jaxen;
-
-import java.util.Iterator;
-
-import org.jaxen.pattern.Pattern;
-import org.jaxen.util.AncestorAxisIterator;
-import org.jaxen.util.AncestorOrSelfAxisIterator;
-import org.jaxen.util.DescendantAxisIterator;
-import org.jaxen.util.DescendantOrSelfAxisIterator;
-import org.jaxen.util.FollowingAxisIterator;
-import org.jaxen.util.FollowingSiblingAxisIterator;
-import org.jaxen.util.PrecedingAxisIterator;
-import org.jaxen.util.PrecedingSiblingAxisIterator;
-import org.jaxen.util.SelfAxisIterator;
-
-/** Default implementation of {@link Navigator}.
- *
- * <p>
- * This implementation is an abstract class, since
- * some required operations cannot be implemented without
- * additional knowledge of the object model.
- * </p>
- *
- * <p>
- * When possible, default method implementations build
- * upon each other, to reduce the number of methods required
- * to be implemented for each object model. All methods,
- * of course, may be overridden, to provide more-efficient
- * implementations.
- * </p>
- *
- * @author bob mcwhirter (bob at werken.com)
- * @author Erwin Bolwidt (ejb at klomp.org)
- */
-public abstract class DefaultNavigator implements Navigator
-{
-
- /** Throws <code>UnsupportedAxisException</code>
- *
- * @param contextNode
- * @return never returns
- * @throws UnsupportedAxisException always
- */
- public Iterator getChildAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- throw new UnsupportedAxisException("child");
- }
-
- /* (non-Javadoc)
- * @see org.jaxen.Navigator#getDescendantAxisIterator(java.lang.Object)
- */
- public Iterator getDescendantAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new DescendantAxisIterator( contextNode,
- this );
- }
-
- /** Throws <code>UnsupportedAxisException</code>
- *
- * @param contextNode
- * @return never returns
- * @throws UnsupportedAxisException
- */
- public Iterator getParentAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- throw new UnsupportedAxisException("parent");
- }
-
- public Iterator getAncestorAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new AncestorAxisIterator( contextNode,
- this );
- }
-
-
- public Iterator getFollowingSiblingAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new FollowingSiblingAxisIterator( contextNode,
- this );
- }
-
-
- public Iterator getPrecedingSiblingAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new PrecedingSiblingAxisIterator( contextNode,
- this );
- }
-
- public Iterator getFollowingAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new FollowingAxisIterator( contextNode,
- this );
-
- // throw new UnsupportedAxisException("following");
- }
-
-
- public Iterator getPrecedingAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new PrecedingAxisIterator( contextNode,
- this );
-
- // throw new UnsupportedAxisException("preceding");
- }
-
- /** Throws <code>UnsupportedAxisException</code>. Subclasses that
- * support the attribute axis must override this method.
- *
- * @param contextNode
- * @return never returns
- * @throws UnsupportedAxisException
- */
- public Iterator getAttributeAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- throw new UnsupportedAxisException("attribute");
- }
-
- /** Throws <code>UnsupportedAxisException</code>. Subclasses that
- * support the namespace axis must override this method.
- *
- * @param contextNode
- * @return never returns
- * @throws UnsupportedAxisException
- */
- public Iterator getNamespaceAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- throw new UnsupportedAxisException("namespace");
- }
-
- public Iterator getSelfAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new SelfAxisIterator( contextNode );
- }
-
- public Iterator getDescendantOrSelfAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new DescendantOrSelfAxisIterator( contextNode,
- this );
- }
-
- public Iterator getAncestorOrSelfAxisIterator(Object contextNode) throws UnsupportedAxisException
- {
- return new AncestorOrSelfAxisIterator( contextNode,
- this );
- }
-
- public Object getDocumentNode(Object contextNode)
- {
- return null;
- }
-
- public String translateNamespacePrefixToUri(String prefix, Object element)
- {
- return null;
- }
-
- public String getProcessingInstructionTarget(Object obj)
- {
- return null;
- }
-
- public String getProcessingInstructionData(Object obj)
- {
- return null;
- }
-
- public short getNodeType(Object node)
- {
- if ( isElement(node) )
- {
- return Pattern.ELEMENT_NODE;
- }
- else if ( isAttribute(node) )
- {
- return Pattern.ATTRIBUTE_NODE;
- }
- else if ( isText(node) )
- {
- return Pattern.TEXT_NODE;
- }
- else if ( isComment(node) )
- {
- return Pattern.COMMENT_NODE;
- }
- else if ( isDocument(node) )
- {
- return Pattern.DOCUMENT_NODE;
- }
- else if ( isProcessingInstruction(node) )
- {
- return Pattern.PROCESSING_INSTRUCTION_NODE;
- }
- else if ( isNamespace(node) )
- {
- return Pattern.NAMESPACE_NODE;
- }
- else {
- return Pattern.UNKNOWN_NODE;
- }
- }
-
- /**
- * Default inefficient implementation. Subclasses
- * should override this method.
- *
- * @param contextNode the node whose parent to return
- * @return the parent node
- * @throws UnsupportedAxisException if the parent axis is not supported
- */
- public Object getParentNode(Object contextNode) throws UnsupportedAxisException
- {
- Iterator iter = getParentAxisIterator( contextNode );
- if ( iter != null && iter.hasNext() )
- {
- return iter.next();
- }
- return null;
- }
-
- /**
- * Default implementation that always returns null. Override in subclass
- * if the subclass can load documents.
- *
- * @param url the URL of the document to load
- *
- * @return null
- * @throws FunctionCallException if an error occurs while loading the
- * URL; e.g. an I/O error or the document is malformed
- */
- public Object getDocument(String url) throws FunctionCallException
- {
- return null;
- }
-
- /**
- * Default implementation that cannot find elements. Override in subclass
- * if subclass does know about attribute types.
- *
- * @param contextNode a node from the document in which to look for the
- * id
- * @param elementId id to look for
- *
- * @return null
- */
- public Object getElementById(Object contextNode, String elementId)
- {
- return null;
- }
-
-}
diff --git a/src/java/main/org/jaxen/Function.java b/src/java/main/org/jaxen/Function.java
deleted file mode 100644
index f39038b..0000000
--- a/src/java/main/org/jaxen/Function.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/Function.java,v 1.8 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Function.java,v 1.8 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen;
-
-import java.util.List;
-
-/** Interface for the extensible function framework.
- *
- * <p>
- * <strong>NOTE:</strong> This class is not typically used directly,
- * but is exposed for writers of extended XPath packages.
- * </p>
- *
- * <p>
- * Implementations of <code>Function</code> are functors
- * which are used to evaluate a function-call within an
- * XPath expression.
- * </p>
- *
- * @see FunctionContext
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public interface Function
-{
- /** Evaluate this function.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args arguments provided to the function
- *
- * @return the result of evaluating the function; a <code>List</code>
- * (node-set), <code>Double</code>, <code>Boolean</code>, or
- * <code>String</code>
- *
- * @throws FunctionCallException if an XPath error occurs during evaluation;
- * for instance, if the number or type of the arguments is incorrect
- */
- Object call(Context context,
- List args) throws FunctionCallException;
-}
diff --git a/src/java/main/org/jaxen/FunctionCallException.java b/src/java/main/org/jaxen/FunctionCallException.java
deleted file mode 100644
index 65c949b..0000000
--- a/src/java/main/org/jaxen/FunctionCallException.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/FunctionCallException.java,v 1.13 2006/07/16 11:07:25 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/07/16 11:07:25 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FunctionCallException.java,v 1.13 2006/07/16 11:07:25 elharo Exp $
- */
-
-
-package org.jaxen;
-
-/**
- * Thrown if an exception occurs during the evaluation of a function.
- * This exception may include a root exception--for instance an
- * <code>IOException</code> if the real problem was failure to
- * load an XML document via the XSLT <code>document()</code> function.
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public class FunctionCallException extends JaxenException
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 7908649612495640943L;
-
- /**
- * Create a new FunctionCallException with the specified detail message.
- *
- * @param message the detail message
- */
- public FunctionCallException(String message) {
- super( message );
- }
-
- /**
- * Create a new FunctionCallException with the specified root cause.
- *
- * @param nestedException the cause of this exception
- */
- public FunctionCallException(Throwable nestedException) {
- super( nestedException );
- }
-
- /**
- * Create a new FunctionCallException with the specified detail message
- * and root cause.
- *
- * @param message the detail message
- * @param nestedException the cause of this exception
- */
- public FunctionCallException(String message, Exception nestedException) {
- super( message, nestedException );
- }
-
- /**
- * <p>
- * Returns the exception that caused this function call to fail.
- * Use <code>getCause</code> instead.
- * </p>
- *
- * @return the exception that caused this function call to fail
- *
- * @deprecated replaced by {@link #getCause()}
- */
- public Throwable getNestedException() {
- return getCause();
- }
-
-}
diff --git a/src/java/main/org/jaxen/FunctionContext.java b/src/java/main/org/jaxen/FunctionContext.java
deleted file mode 100644
index a2daf0a..0000000
--- a/src/java/main/org/jaxen/FunctionContext.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/FunctionContext.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FunctionContext.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen;
-
-/** Implemented by classes that know how to resolve XPath function names and
- * namespaces to implementations of these functions.
- *
- * <p>
- * By using a custom <code>FunctionContext</code>, new or different
- * functions may be installed and available to XPath expression writers.
- * </p>
- *
- * @see XPathFunctionContext
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public interface FunctionContext
-{
- /** An implementation should return a <code>Function</code> implementation object
- * based on the namespace URI and local name of the function-call
- * expression.
- *
- * <p>
- * It must not use the prefix parameter to select an implementation,
- * because a prefix could be bound to any namespace; the prefix parameter
- * could be used in debugging output or other generated information.
- * The prefix may otherwise be completely ignored.
- * </p>
- *
- * @param namespaceURI the namespace URI to which the prefix parameter
- * is bound in the XPath expression. If the function
- * call expression had no prefix, the namespace URI
- * is <code>null</code>.
- * @param prefix the prefix that was used in the function call
- * expression
- * @param localName the local name of the function-call expression.
- * If there is no prefix, then this is the whole
- * name of the function.
- *
- * @return a Function implementation object.
- * @throws UnresolvableException when the function cannot be resolved
- */
- Function getFunction( String namespaceURI,
- String prefix,
- String localName ) throws UnresolvableException;
-}
diff --git a/src/java/main/org/jaxen/JaxenConstants.java b/src/java/main/org/jaxen/JaxenConstants.java
deleted file mode 100644
index 004003f..0000000
--- a/src/java/main/org/jaxen/JaxenConstants.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.jaxen;
-
-/*
- * $Header: $
- * $Revision: $
- * $Date: $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: $
-*/
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.ListIterator;
-
-/**
- * Thread-safe constant iterators used to avoid the overhead of creating
- * empty lists.
- */
-public class JaxenConstants
-{
-
- private JaxenConstants() {}
-
- /**
- * An iterator with no elements. <code>hasNext()</code> always
- * returns false. This is thread-safe.
- */
- public static final Iterator EMPTY_ITERATOR = Collections.EMPTY_LIST.iterator();
-
- /**
- * A list iterator with no elements. <code>hasNext()</code> always
- * returns false. This is thread-safe.
- */
- public static final ListIterator EMPTY_LIST_ITERATOR = Collections.EMPTY_LIST.listIterator();
-
-}
diff --git a/src/java/main/org/jaxen/JaxenException.java b/src/java/main/org/jaxen/JaxenException.java
deleted file mode 100644
index 4467c21..0000000
--- a/src/java/main/org/jaxen/JaxenException.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/JaxenException.java,v 1.17 2006/06/03 20:27:21 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/06/03 20:27:21 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: JaxenException.java,v 1.17 2006/06/03 20:27:21 elharo Exp $
- */
-
-
-package org.jaxen;
-
-
-/**
- * Generic Jaxen exception.
- *
- * <p> This is the root of all Jaxen exceptions. It may wrap other exceptions.
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public class JaxenException extends org.jaxen.saxpath.SAXPathException
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 7132891439526672639L;
- static double javaVersion = 1.4;
-
- static {
- try {
- String versionString = System.getProperty("java.version");
- versionString = versionString.substring(0, 3);
- javaVersion = Double.valueOf(versionString).doubleValue();
- }
- catch (RuntimeException ex) {
- // The version string format changed so presumably it's
- // 1.4 or later.
- }
- }
-
- /**
- * Create an exception with a detail message.
- *
- * @param message the error message
- */
- public JaxenException( String message )
- {
- super( message );
- }
-
- /**
- * Create an exception caused by another exception.
- *
- * @param rootCause the root cause of this exception
- */
- public JaxenException( Throwable rootCause )
- {
- super( rootCause );
- }
-
- /**
- * Create a new JaxenException with the specified detail message
- * and root cause.
- *
- * @param message the detail message
- * @param nestedException the cause of this exception
- */
- public JaxenException(String message, Throwable nestedException) {
- super( message, nestedException );
- }
-
-}
\ No newline at end of file
diff --git a/src/java/main/org/jaxen/JaxenHandler.java b/src/java/main/org/jaxen/JaxenHandler.java
deleted file mode 100644
index d94ad69..0000000
--- a/src/java/main/org/jaxen/JaxenHandler.java
+++ /dev/null
@@ -1,616 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/JaxenHandler.java,v 1.15 2006/03/30 13:53:11 elharo Exp $
- * $Revision: 1.15 $
- * $Date: 2006/03/30 13:53:11 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: JaxenHandler.java,v 1.15 2006/03/30 13:53:11 elharo Exp $
- */
-
-
-
-package org.jaxen;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-
-import org.jaxen.expr.DefaultXPathFactory;
-import org.jaxen.expr.Expr;
-import org.jaxen.expr.FilterExpr;
-import org.jaxen.expr.FunctionCallExpr;
-import org.jaxen.expr.LocationPath;
-import org.jaxen.expr.Predicate;
-import org.jaxen.expr.Predicated;
-import org.jaxen.expr.Step;
-import org.jaxen.expr.XPathExpr;
-import org.jaxen.expr.XPathFactory;
-import org.jaxen.saxpath.Operator;
-import org.jaxen.saxpath.XPathHandler;
-
-/** SAXPath <code>XPathHandler</code> implementation capable
- * of building Jaxen expression trees which can walk various
- * different object models.
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public class JaxenHandler implements XPathHandler
-{
- private XPathFactory xpathFactory;
- private XPathExpr xpath;
-
- /**
- * ????
- */
- protected boolean simplified;
-
- /**
- * This may be changed to an ArrayList in the future (i.e. version >= 1.2).
- * You really shouldn't be accessing this field directly, but
- * if you are please try to use it as a generic List. Don't use the
- * methods that are only available in LinkedList.
- */
- protected LinkedList stack;
-
- /** Constructor
- */
- public JaxenHandler()
- {
- this.stack = new LinkedList();
- this.xpathFactory = new DefaultXPathFactory();
- }
-
- /** Set the Jaxen <code>XPathFactory</code> that constructs
- * the XPath expression tree during the parse.
- *
- * @param xpathFactory the factory to use during the parse
- */
- public void setXPathFactory(XPathFactory xpathFactory)
- {
- this.xpathFactory = xpathFactory;
- }
-
- /** Retrieve the Jaxen <code>XPathFactory</code> used
- * during the parse to construct the XPath expression tree.
- *
- * @return the <code>XPathFactory</code> used during the parse.
- */
- public XPathFactory getXPathFactory()
- {
- return this.xpathFactory;
- }
-
- /** Retrieve the simplified Jaxen XPath expression tree.
- *
- * <p>
- * This method is only valid once <code>XPathReader.parse(...)</code>
- * successfully returned.
- * </p>
- *
- * @return the XPath expression tree
- */
- public XPathExpr getXPathExpr()
- {
- return getXPathExpr( true );
- }
-
- /** Retrieve the Jaxen XPath expression tree, optionally
- * simplified.
- *
- * <p>
- * This method is only valid once <code>XPathReader.parse(...)</code>
- * successfully returned.
- * </p>
- *
- * @param shouldSimplify ????
- *
- * @return the XPath expression tree
- */
- public XPathExpr getXPathExpr(boolean shouldSimplify)
- {
- if ( shouldSimplify && ! this.simplified )
- {
- this.xpath.simplify();
- this.simplified = true;
- }
-
- return this.xpath;
- }
-
- public void startXPath()
- {
- this.simplified = false;
- pushFrame();
- }
-
- public void endXPath() throws JaxenException
- {
- this.xpath = getXPathFactory().createXPath( (Expr) pop() );
- popFrame();
- }
-
- public void startPathExpr()
- {
- pushFrame();
- }
-
- public void endPathExpr() throws JaxenException
- {
-
- // PathExpr ::= LocationPath
- // | FilterExpr
- // | FilterExpr / RelativeLocationPath
- // | FilterExpr // RelativeLocationPath
- //
- // If the current stack-frame has two items, it's a
- // FilterExpr and a LocationPath (of some flavor).
- //
- // If the current stack-frame has one item, it's simply
- // a FilterExpr, and more than likely boils down to a
- // primary expr of some flavor. But that's for another
- // method...
-
- FilterExpr filterExpr;
- LocationPath locationPath;
-
- Object popped;
-
- if ( stackSize() == 2 )
- {
- locationPath = (LocationPath) pop();
- filterExpr = (FilterExpr) pop();
- }
- else
- {
- popped = pop();
-
- if ( popped instanceof LocationPath )
- {
- locationPath = (LocationPath) popped;
- filterExpr = null;
- }
- else
- {
- locationPath = null;
- filterExpr = (FilterExpr) popped;
- }
- }
- popFrame();
-
- push( getXPathFactory().createPathExpr( filterExpr,
- locationPath ) );
- }
-
- public void startAbsoluteLocationPath() throws JaxenException
- {
- pushFrame();
-
- push( getXPathFactory().createAbsoluteLocationPath() );
- }
-
- public void endAbsoluteLocationPath() throws JaxenException
- {
- endLocationPath();
- }
-
- public void startRelativeLocationPath() throws JaxenException
- {
- pushFrame();
-
- push( getXPathFactory().createRelativeLocationPath() );
- }
-
- public void endRelativeLocationPath() throws JaxenException
- {
- endLocationPath();
- }
-
- protected void endLocationPath() throws JaxenException
- {
- LocationPath path = (LocationPath) peekFrame().removeFirst();
-
- addSteps( path,
- popFrame().iterator() );
-
- push( path );
- }
-
- protected void addSteps(LocationPath locationPath,
- Iterator stepIter)
- {
- while ( stepIter.hasNext() )
- {
- locationPath.addStep( (Step) stepIter.next() );
- }
- }
-
- public void startNameStep(int axis,
- String prefix,
- String localName) throws JaxenException
- {
- pushFrame();
-
- push( getXPathFactory().createNameStep( axis,
- prefix,
- localName ) );
- }
-
- public void endNameStep()
- {
- endStep();
- }
-
- public void startTextNodeStep(int axis) throws JaxenException
- {
- //System.err.println("startTextNodeStep()");
- pushFrame();
-
- push( getXPathFactory().createTextNodeStep( axis ) );
- }
-
- public void endTextNodeStep()
- {
- endStep();
- }
-
- public void startCommentNodeStep(int axis) throws JaxenException
- {
- pushFrame();
-
- push( getXPathFactory().createCommentNodeStep( axis ) );
- }
-
- public void endCommentNodeStep()
- {
- endStep();
- }
-
- public void startAllNodeStep(int axis) throws JaxenException
- {
- pushFrame();
-
- push( getXPathFactory().createAllNodeStep( axis ) );
- }
-
- public void endAllNodeStep()
- {
- endStep();
- }
-
- public void startProcessingInstructionNodeStep(int axis,
- String name) throws JaxenException
- {
- pushFrame();
-
- push( getXPathFactory().createProcessingInstructionNodeStep( axis,
- name ) );
- }
-
- public void endProcessingInstructionNodeStep()
- {
- endStep();
- }
-
- protected void endStep()
- {
- Step step = (Step) peekFrame().removeFirst();
-
- addPredicates( step,
- popFrame().iterator() );
-
- push( step );
- }
-
- public void startPredicate()
- {
- pushFrame();
- }
-
- public void endPredicate() throws JaxenException
- {
- Predicate predicate = getXPathFactory().createPredicate( (Expr) pop() );
-
- popFrame();
-
- push( predicate );
- }
-
- public void startFilterExpr()
- {
- pushFrame();
- }
-
- public void endFilterExpr() throws JaxenException
- {
- Expr expr = (Expr) peekFrame().removeFirst();
-
- FilterExpr filter = getXPathFactory().createFilterExpr( expr );
-
- Iterator predIter = popFrame().iterator();
-
- addPredicates( filter,
- predIter );
-
- push( filter );
- }
-
- protected void addPredicates(Predicated obj,
- Iterator predIter)
- {
- while ( predIter.hasNext() )
- {
- obj.addPredicate( (Predicate) predIter.next() );
- }
- }
-
- protected void returnExpr()
- {
- Expr expr = (Expr) pop();
- popFrame();
- push( expr );
- }
-
- public void startOrExpr()
- {
- }
-
- public void endOrExpr(boolean create) throws JaxenException
- {
-
- if ( create )
- {
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createOrExpr( lhs,
- rhs ) );
- }
- }
-
- public void startAndExpr()
- {
- }
-
- public void endAndExpr(boolean create) throws JaxenException
- {
-
- if ( create )
- {
-
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createAndExpr( lhs,
- rhs ) );
- }
- }
-
- public void startEqualityExpr()
- {
- }
-
- public void endEqualityExpr(int operator) throws JaxenException
- {
-
- if ( operator != Operator.NO_OP )
- {
-
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createEqualityExpr( lhs,
- rhs,
- operator ) );
- }
- }
-
- public void startRelationalExpr()
- {
- }
-
- public void endRelationalExpr(int operator) throws JaxenException
- {
-
- if ( operator != Operator.NO_OP )
- {
-
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createRelationalExpr( lhs,
- rhs,
- operator ) );
- }
- }
-
- public void startAdditiveExpr()
- {
- }
-
- public void endAdditiveExpr(int operator) throws JaxenException
- {
-
- if ( operator != Operator.NO_OP )
- {
-
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createAdditiveExpr( lhs,
- rhs,
- operator ) );
- }
- }
-
- public void startMultiplicativeExpr()
- {
- }
-
- public void endMultiplicativeExpr(int operator) throws JaxenException
- {
-
- if ( operator != Operator.NO_OP )
- {
-
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createMultiplicativeExpr( lhs,
- rhs,
- operator ) );
- }
- }
-
- public void startUnaryExpr()
- {
- }
-
- public void endUnaryExpr(int operator) throws JaxenException
- {
-
- if ( operator != Operator.NO_OP )
- {
- push( getXPathFactory().createUnaryExpr( (Expr) pop(),
- operator ) );
- }
- }
-
- public void startUnionExpr()
- {
- }
-
- public void endUnionExpr(boolean create) throws JaxenException
- {
-
- if ( create )
- {
-
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createUnionExpr( lhs,
- rhs ) );
- }
- }
-
- public void number(int number) throws JaxenException
- {
- push( getXPathFactory().createNumberExpr( number ) );
- }
-
- public void number(double number) throws JaxenException
- {
- push( getXPathFactory().createNumberExpr( number ) );
- }
-
- public void literal(String literal) throws JaxenException
- {
- push( getXPathFactory().createLiteralExpr( literal ) );
- }
-
- public void variableReference(String prefix,
- String variableName) throws JaxenException
- {
- push( getXPathFactory().createVariableReferenceExpr( prefix,
- variableName ) );
- }
-
- public void startFunction(String prefix,
- String functionName) throws JaxenException
- {
- pushFrame();
- push( getXPathFactory().createFunctionCallExpr( prefix,
- functionName ) );
- }
-
- public void endFunction()
- {
- FunctionCallExpr function = (FunctionCallExpr) peekFrame().removeFirst();
-
- addParameters( function,
- popFrame().iterator() );
-
- push( function );
- }
-
- protected void addParameters(FunctionCallExpr function,
- Iterator paramIter)
- {
- while ( paramIter.hasNext() )
- {
- function.addParameter( (Expr) paramIter.next() );
- }
- }
-
- protected int stackSize()
- {
- return peekFrame().size();
- }
-
- protected void push(Object obj)
- {
- peekFrame().addLast( obj );
- }
-
- protected Object pop()
- {
- return peekFrame().removeLast();
- }
-
- protected boolean canPop()
- {
- return ( peekFrame().size() > 0 );
- }
-
- protected void pushFrame()
- {
- this.stack.addLast( new LinkedList() );
- }
-
- protected LinkedList popFrame()
- {
- return (LinkedList) this.stack.removeLast();
- }
-
- protected LinkedList peekFrame()
- {
- return (LinkedList) this.stack.getLast();
- }
-}
diff --git a/src/java/main/org/jaxen/JaxenRuntimeException.java b/src/java/main/org/jaxen/JaxenRuntimeException.java
deleted file mode 100644
index 9604cab..0000000
--- a/src/java/main/org/jaxen/JaxenRuntimeException.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package org.jaxen;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/*
- * $Header: $
- * $Revision: $
- * $Date: $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: $
-*/
-
-/**
- * This class exists to wrap Jaxen exceptions that otherwise wouldn't be propagated
- * up through the axis iterators.
- */
-public class JaxenRuntimeException extends RuntimeException
-{
- /**
- *
- */
- private static final long serialVersionUID = -930309761511911193L;
-
- private Throwable cause;
- private boolean causeSet = false;
-
- /**
- * Create a new JaxenRuntimeException.
- *
- * @param cause the nested exception that's wrapped
- * inside this exception
- */
- public JaxenRuntimeException(Throwable cause)
- {
- super(cause.getMessage());
- initCause(cause);
- }
-
- /**
- * Create a new JaxenRuntimeException.
- *
- * @param message the detail message
- */
- public JaxenRuntimeException(String message) {
- super(message);
- }
-
- /**
- * Returns the exception that caused this exception.
- * This is necessary to implement Java 1.4 chained exception
- * functionality in a Java 1.3-compatible way.
- *
- * @return the exception that caused this exception
- */
- public Throwable getCause() {
- return cause;
- }
-
-
- /**
- * Sets the exception that caused this exception.
- * This is necessary to implement Java 1.4 chained exception
- * functionality in a Java 1.3-compatible way.
- *
- * @param cause the exception wrapped in this runtime exception
- *
- * @return this exception
- */
- public Throwable initCause(Throwable cause) {
- if (causeSet) throw new IllegalStateException("Cause cannot be reset");
- if (cause == this) throw new IllegalArgumentException("Exception cannot be its own cause");
- causeSet = true;
- this.cause = cause;
- return this;
- }
-
- /** Print this exception's stack trace, followed by the
- * source exception's trace, if any.
- *
- * @param s the stream on which to print the stack trace
- */
- public void printStackTrace ( PrintStream s )
- {
- super.printStackTrace ( s );
- if (JaxenException.javaVersion < 1.4 && getCause() != null) {
- s.print( "Caused by: " );
- getCause().printStackTrace( s );
- }
- }
-
- /** Print this exception's stack trace, followed by the
- * source exception's stack trace, if any.
- *
- * @param s the writer on which to print the stack trace
- */
- public void printStackTrace ( PrintWriter s )
- {
- super.printStackTrace( s );
- if (JaxenException.javaVersion < 1.4 && getCause() != null) {
- s.print( "Caused by: " );
- getCause().printStackTrace( s );
- }
- }
-
-}
diff --git a/src/java/main/org/jaxen/NamedAccessNavigator.java b/src/java/main/org/jaxen/NamedAccessNavigator.java
deleted file mode 100644
index 04ab4fc..0000000
--- a/src/java/main/org/jaxen/NamedAccessNavigator.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- $Id: NamedAccessNavigator.java,v 1.4 2006/02/05 21:47:41 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen;
-
-import java.util.Iterator;
-
-/**
- * Interface for navigating around an arbitrary object model
- * accessing certain parts by name for performance.
- * <p>
- * This interface must only be implemented by those models that
- * can support this named access behavior.
- *
- * @author Stephen Colebourne
- */
-public interface NamedAccessNavigator extends Navigator {
-
- /**
- * Retrieve an <code>Iterator</code> that returns the <code>child</code>
- * XPath axis where the names of the children match the supplied name
- * and optional namespace.
- * <p>
- * This method must only return element nodes with the correct name.
- * <p>
- * If the namespaceURI is null, no namespace should be used.
- * The prefix will never be null.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the children to return, always present
- * @param namespacePrefix the prefix of the namespace of the children to return
- * @param namespaceURI the namespace URI of the children to return
- *
- * @return an Iterator capable of traversing the named children, or null if none
- *
- * @throws UnsupportedAxisException if the child axis is
- * not supported by this object model
- */
- Iterator getChildAxisIterator(
- Object contextNode,
- String localName, String namespacePrefix, String namespaceURI)
- throws UnsupportedAxisException;
-
- /**
- * Retrieve an <code>Iterator</code> that returns the <code>attribute</code>
- * XPath axis where the names of the attributes match the supplied name
- * and optional namespace.
- * <p>
- * This method must only return attribute nodes with the correct name.
- * <p>
- * If the namespaceURI is null, no namespace should be used.
- * The prefix will never be null.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the attributes to return, always present
- * @param namespacePrefix the prefix of the namespace of the attributes to return
- * @param namespaceURI the URI of the namespace of the attributes to return
- *
- * @return an Iterator capable of traversing the named attributes, or null if none
- *
- * @throws UnsupportedAxisException if the attribute axis is
- * not supported by this object model
- */
- Iterator getAttributeAxisIterator(
- Object contextNode,
- String localName, String namespacePrefix, String namespaceURI)
- throws UnsupportedAxisException;
-
-}
diff --git a/src/java/main/org/jaxen/NamespaceContext.java b/src/java/main/org/jaxen/NamespaceContext.java
deleted file mode 100644
index ff60bac..0000000
--- a/src/java/main/org/jaxen/NamespaceContext.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/NamespaceContext.java,v 1.10 2006/07/03 11:58:06 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/07/03 11:58:06 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NamespaceContext.java,v 1.10 2006/07/03 11:58:06 elharo Exp $
- */
-
-
-package org.jaxen;
-
-/** Resolves namespace prefixes to namespace URIs.
- *
- * <p>
- * The prefixes used within an XPath expression are
- * independent of those used within any target document.
- * When evaluating an XPath against a document, only
- * the resolved namespace URIs are compared, not their
- * prefixes.
- * </p>
- *
- * <p>
- * A <code>NamespaceContext</code> is responsible for
- * translating prefixes as they appear in XPath expressions
- * into URIs for comparison. A document's prefixes are
- * resolved internal to the document based upon its own
- * namespace nodes.
- * </p>
- *
- * <p>
- * Implementations of this interface should implement <code>Serializable</code>.
- * </p>
- *
- * @see BaseXPath
- * @see Navigator#getElementNamespaceUri
- * @see Navigator#getAttributeNamespaceUri
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public interface NamespaceContext
-{
- /** Translate the provided namespace prefix into
- * the matching bound namespace URI.
- *
- * <p>
- * In XPath, there is no such thing as a 'default namespace'.
- * The empty prefix <strong>always</strong> resolves to the empty
- * namespace URI. This method should return null for the
- * empty prefix.
- * Similarly, the prefix "xml" always resolves to
- * the URI "http://www.w3.org/XML/1998/namespace".
- * </p>
- *
- * @param prefix the namespace prefix to resolve
- *
- * @return the namespace URI bound to the prefix; or null if there
- * is no such namespace
- */
- String translateNamespacePrefixToUri(String prefix);
-}
diff --git a/src/java/main/org/jaxen/Navigator.java b/src/java/main/org/jaxen/Navigator.java
deleted file mode 100644
index 733c93d..0000000
--- a/src/java/main/org/jaxen/Navigator.java
+++ /dev/null
@@ -1,549 +0,0 @@
-package org.jaxen;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/Navigator.java,v 1.30 2006/06/03 20:07:19 elharo Exp $
- * $Revision: 1.30 $
- * $Date: 2006/06/03 20:07:19 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Navigator.java,v 1.30 2006/06/03 20:07:19 elharo Exp $
-*/
-
-import java.io.Serializable;
-import java.util.Iterator;
-
-import org.jaxen.saxpath.SAXPathException;
-
-/** Interface for navigating around an arbitrary object
- * model, using XPath semantics.
- *
- * <p>
- * There is a method to obtain a <code>java.util.Iterator</code>,
- * for each axis specified by XPath. If the target object model
- * does not support the semantics of a particular axis, an
- * {@link UnsupportedAxisException} is to be thrown. If there are
- * no nodes on that axis, an empty iterator should be returned.
- * </p>
- *
- * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- *
- * @version $Id: Navigator.java,v 1.30 2006/06/03 20:07:19 elharo Exp $
- */
-public interface Navigator extends Serializable
-{
- // ----------------------------------------------------------------------
- // Axis Iterators
- // ----------------------------------------------------------------------
-
- /** Retrieve an <code>Iterator</code> matching the <code>child</code>
- * XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the child axis are
- * not supported by this object model
- */
- Iterator getChildAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>descendant</code>
- * XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the desscendant axis are
- * not supported by this object model
- */
- Iterator getDescendantAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>parent</code> XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the parent axis are
- * not supported by this object model
- */
- Iterator getParentAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>ancestor</code>
- * XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the ancestor axis are
- * not supported by this object model
- */
- Iterator getAncestorAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the
- * <code>following-sibling</code> XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the following-sibling axis are
- * not supported by this object model
- */
- Iterator getFollowingSiblingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the
- * <code>preceding-sibling</code> XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the preceding-sibling axis are
- * not supported by this object model
- */
- Iterator getPrecedingSiblingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>following</code>
- * XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the following axis are
- * not supported by this object model
- */
- Iterator getFollowingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>preceding</code> XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the preceding axis are
- * not supported by this object model
- */
- Iterator getPrecedingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>attribute</code>
- * XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the attribute axis are
- * not supported by this object model
- */
- Iterator getAttributeAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>namespace</code>
- * XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the namespace axis are
- * not supported by this object model
- */
- Iterator getNamespaceAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the <code>self</code> XPath
- * axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the self axis are
- * not supported by this object model
- */
- Iterator getSelfAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the
- * <code>descendant-or-self</code> XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the descendant-or-self axis are
- * not supported by this object model
- */
- Iterator getDescendantOrSelfAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve an <code>Iterator</code> matching the
- * <code>ancestor-or-self</code> XPath axis.
- *
- * @param contextNode the original context node
- *
- * @return an Iterator capable of traversing the axis, not null
- *
- * @throws UnsupportedAxisException if the semantics of the ancestor-or-self axis are
- * not supported by this object model
- */
- Iterator getAncestorOrSelfAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- // ----------------------------------------------------------------------
- // Extractors
- // ----------------------------------------------------------------------
-
- /** Loads a document from the given URI
- *
- * @param uri the URI of the document to load
- *
- * @return the document
- *
- * @throws FunctionCallException if the document could not be loaded
- */
- Object getDocument(String uri)
- throws FunctionCallException;
-
- /** Returns the document node that contains the given context node.
- *
- * @see #isDocument(Object)
- *
- * @param contextNode the context node
- *
- * @return the document of the context node
- */
- Object getDocumentNode(Object contextNode);
-
- /** Returns the parent of the given context node.
- *
- * <p>
- * The parent of any node must either be a document
- * node or an element node.
- * </p>
- *
- * @see #isDocument
- * @see #isElement
- *
- * @param contextNode the context node
- *
- * @return the parent of the context node, or null if this is a document node.
- *
- * @throws UnsupportedAxisException if the parent axis is not
- * supported by the model
- */
- Object getParentNode(Object contextNode)
- throws UnsupportedAxisException;
-
- /** Retrieve the namespace URI of the given element node.
- *
- * @param element the context element node
- *
- * @return the namespace URI of the element node
- */
- String getElementNamespaceUri(Object element);
-
- /** Retrieve the local name of the given element node.
- *
- * @param element the context element node
- *
- * @return the local name of the element node
- */
- String getElementName(Object element);
-
- /** Retrieve the qualified name of the given element node.
- *
- * @param element the context element node
- *
- * @return the qualified name of the element node
- */
- String getElementQName(Object element);
-
- /** Retrieve the namespace URI of the given attribute node.
- *
- * @param attr the context attribute node
- *
- * @return the namespace URI of the attribute node
- */
- String getAttributeNamespaceUri(Object attr);
-
- /** Retrieve the local name of the given attribute node.
- *
- * @param attr the context attribute node
- *
- * @return the local name of the attribute node
- */
- String getAttributeName(Object attr);
-
- /** Retrieve the qualified name of the given attribute node.
- *
- * @param attr the context attribute node
- *
- * @return the qualified name of the attribute node
- */
- String getAttributeQName(Object attr);
-
- /** Retrieve the target of a processing-instruction.
- *
- * @param pi the context processing-instruction node
- *
- * @return the target of the processing-instruction node
- */
- String getProcessingInstructionTarget(Object pi);
-
- /** Retrieve the data of a processing-instruction.
- *
- * @param pi the context processing-instruction node
- *
- * @return the data of the processing-instruction node
- */
- String getProcessingInstructionData(Object pi);
-
- // ----------------------------------------------------------------------
- // isXXX testers
- // ----------------------------------------------------------------------
-
- /** Returns whether the given object is a document node. A document node
- * is the node that is selected by the XPath expression <code>/</code>.
- *
- * @param object the object to test
- *
- * @return <code>true</code> if the object is a document node,
- * else <code>false</code>
- */
- boolean isDocument(Object object);
-
- /** Returns whether the given object is an element node.
- *
- * @param object the object to test
- *
- * @return <code>true</code> if the object is an element node,
- * else <code>false</code>
- */
- boolean isElement(Object object);
-
- /** Returns whether the given object is an attribute node.
- *
- * @param object the object to test
- *
- * @return <code>true</code> if the object is an attribute node,
- * else <code>false</code>
- */
- boolean isAttribute(Object object);
-
- /** Returns whether the given object is a namespace node.
- *
- * @param object the object to test
- *
- * @return <code>true</code> if the object is a namespace node,
- * else <code>false</code>
- */
- boolean isNamespace(Object object);
-
- /** Returns whether the given object is a comment node.
- *
- * @param object the object to test
- *
- * @return <code>true</code> if the object is a comment node,
- * else <code>false</code>
- */
- boolean isComment(Object object);
-
- /** Returns whether the given object is a text node.
- *
- * @param object the object to test
- *
- * @return <code>true</code> if the object is a text node,
- * else <code>false</code>
- */
- boolean isText(Object object);
-
- /** Returns whether the given object is a processing-instruction node.
- *
- * @param object the object to test
- *
- * @return <code>true</code> if the object is a processing-instruction node,
- * else <code>false</code>
- */
- boolean isProcessingInstruction(Object object);
-
- // ----------------------------------------------------------------------
- // String-Value extractors
- // ----------------------------------------------------------------------
-
- /** Retrieve the string-value of a comment node.
- * This may be the empty string if the comment is empty,
- * but must not be null.
- *
- * @param comment the comment node
- *
- * @return the string-value of the node
- */
- String getCommentStringValue(Object comment);
-
- /** Retrieve the string-value of an element node.
- * This may be the empty string if the element is empty,
- * but must not be null.
- *
- * @param element the comment node.
- *
- * @return the string-value of the node.
- */
- String getElementStringValue(Object element);
-
- /** Retrieve the string-value of an attribute node.
- * This should be the XML 1.0 normalized attribute value.
- * This may be the empty string but must not be null.
- *
- * @param attr the attribute node
- *
- * @return the string-value of the node
- */
- String getAttributeStringValue(Object attr);
-
- /** Retrieve the string-value of a namespace node.
- * This is generally the namespace URI.
- * This may be the empty string but must not be null.
- *
- * @param ns the namespace node
- *
- * @return the string-value of the node
- */
- String getNamespaceStringValue(Object ns);
-
- /** Retrieve the string-value of a text node.
- * This must not be null and should not be the empty string.
- * The XPath data model does not allow empty text nodes.
- *
- * @param text the text node
- *
- * @return the string-value of the node
- */
- String getTextStringValue(Object text);
-
- // ----------------------------------------------------------------------
- // General utilities
- // ----------------------------------------------------------------------
-
- /** Retrieve the namespace prefix of a namespace node.
- *
- * @param ns the namespace node
- *
- * @return the prefix associated with the node
- */
- String getNamespacePrefix(Object ns);
-
-
- /** Translate a namespace prefix to a namespace URI, <strong>possibly</strong>
- * considering a particular element node.
- *
- * <p>
- * Strictly speaking, prefix-to-URI translation should occur
- * irrespective of any element in the document. This method
- * is provided to allow a non-conforming ease-of-use enhancement.
- * </p>
- *
- * @see NamespaceContext
- *
- * @param prefix the prefix to translate
- * @param element the element to consider during translation
- *
- * @return the namespace URI associated with the prefix
- */
- String translateNamespacePrefixToUri(String prefix,
- Object element);
-
- /** Returns a parsed form of the given XPath string, which will be suitable
- * for queries on documents that use the same navigator as this one.
- *
- * @see XPath
- *
- * @param xpath the XPath expression
- *
- * @return a new XPath expression object
- *
- * @throws SAXPathException if the string is not a syntactically
- * correct XPath expression
- */
- XPath parseXPath(String xpath) throws SAXPathException;
-
- /**
- * Returns the element whose ID is given by elementId.
- * If no such element exists, returns null.
- * Attributes with the name "ID" are not of type ID unless so defined.
- * Implementations that do not know whether attributes are of type ID or
- * not are expected to return null.
- *
- * @param contextNode a node from the document in which to look for the
- * id
- * @param elementId id to look for
- *
- * @return element whose ID is given by elementId, or null if no such
- * element exists in the document or if the implementation
- * does not know about attribute types
- */
- Object getElementById(Object contextNode,
- String elementId);
-
- /** Returns a number that identifies the type of node that the given
- * object represents in this navigator.
- *
- * @param node ????
- * @return ????
- *
- * @see org.jaxen.pattern.Pattern
- */
- short getNodeType(Object node);
-}
diff --git a/src/java/main/org/jaxen/QualifiedName.java b/src/java/main/org/jaxen/QualifiedName.java
deleted file mode 100644
index 1f7953f..0000000
--- a/src/java/main/org/jaxen/QualifiedName.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/QualifiedName.java,v 1.12 2006/06/01 13:19:30 elharo Exp $
- * $Revision: 1.12 $
- * $Date: 2006/06/01 13:19:30 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: QualifiedName.java,v 1.12 2006/06/01 13:19:30 elharo Exp $
- */
-
-package org.jaxen;
-
-import java.io.Serializable;
-
-/** A local name (that matches the XML NCName production) and a namespace URI
- * with which the local name is qualified.
- *
- * @author Erwin Bolwidt ( ejb at klomp.org )
- */
-class QualifiedName implements Serializable
-{
-
- private static final long serialVersionUID = 2734958615642751535L;
-
- private String namespaceURI;
- private String localName;
-
- /** Constructs a QualifiedName object.
- *
- * @param namespaceURI namespace URI that qualifies the name, or
- * <code>null</code> for default namespace
- * @param localName local name that is qualified by the namespace uri;
- * must not be <code>null</code>
- */
- QualifiedName( String namespaceURI, String localName )
- {
- if (namespaceURI == null) namespaceURI = "";
- this.namespaceURI = namespaceURI;
- this.localName = localName;
- }
-
- public int hashCode()
- {
- return ( localName.hashCode() ^ namespaceURI.hashCode() );
- }
-
- public boolean equals( Object o )
- {
- // Because this class is package protected and used in only
- // two other classes, it's never actually compared to anything
- // other than another QualifiedName. No instanceof test is
- // necessary here.
- QualifiedName other = (QualifiedName) o;
- return ( namespaceURI.equals(other.namespaceURI) &&
- other.localName.equals(localName) );
- }
-
- /**
- * @return James Clark's namespace form
- */
- String getClarkForm() {
- if ("".equals(namespaceURI)) return localName;
- else return "{" + namespaceURI + "}" + ":" + localName;
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/SimpleFunctionContext.java b/src/java/main/org/jaxen/SimpleFunctionContext.java
deleted file mode 100644
index 6d05eeb..0000000
--- a/src/java/main/org/jaxen/SimpleFunctionContext.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/SimpleFunctionContext.java,v 1.14 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SimpleFunctionContext.java,v 1.14 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen;
-
-import java.util.HashMap;
-
-/** Simple default implementation of <code>FunctionContext</code>.
- *
- * <p>
- * This is a simple table-based key-lookup implementation
- * for <code>FunctionContext</code> which can be programmatically
- * extended by registering additional functions.
- * </p>
- *
- * @see XPathFunctionContext
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public class SimpleFunctionContext implements FunctionContext
-{
- /** Table of functions. */
- private HashMap functions;
-
- /**
- * <p>
- * Construct an empty function context.
- * </p>
- */
- public SimpleFunctionContext()
- {
- this.functions = new HashMap();
- }
-
- /** Register a new function.
- *
- * <p>
- * By registering a new function, any XPath expression
- * that utilizes this <code>FunctionContext</code> may
- * refer to and use the new function.
- * </p>
- *
- * <p>
- * Functions may exist either in a namespace or not.
- * Namespace prefix-to-URI resolution is the responsibility
- * of a {@link NamespaceContext}. Within this <code>FunctionContext</code>
- * functions are only referenced using the URI, <strong>not</strong>
- * the prefix.
- * </p>
- *
- * <p>
- * The namespace URI of a function may be <code>null</code>
- * to indicate that it exists without a namespace.
- * </p>
- *
- * @param namespaceURI the namespace URI of the function to
- * be registered with this context
- * @param localName the non-prefixed local portion of the
- * function to be registered with this context
- * @param function a {@link Function} implementation object
- * to be used when evaluating the function
- */
- public void registerFunction(String namespaceURI,
- String localName,
- Function function )
- {
- this.functions.put( new QualifiedName(namespaceURI, localName),
- function );
- }
-
- public Function getFunction(String namespaceURI,
- String prefix,
- String localName )
- throws UnresolvableException
- {
- QualifiedName key = new QualifiedName( namespaceURI, localName );
-
- if ( this.functions.containsKey(key) ) {
- return (Function) this.functions.get( key );
- }
- else {
- throw new UnresolvableException( "No Such Function " + key.getClarkForm() );
- }
- }
-}
diff --git a/src/java/main/org/jaxen/SimpleNamespaceContext.java b/src/java/main/org/jaxen/SimpleNamespaceContext.java
deleted file mode 100644
index 30ae2f3..0000000
--- a/src/java/main/org/jaxen/SimpleNamespaceContext.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/SimpleNamespaceContext.java,v 1.18 2006/06/03 20:19:26 elharo Exp $
- * $Revision: 1.18 $
- * $Date: 2006/06/03 20:19:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SimpleNamespaceContext.java,v 1.18 2006/06/03 20:19:26 elharo Exp $
- */
-
-
-package org.jaxen;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Provides mappings from namespace prefix to namespace URI to the XPath
- * engine.
- */
-public class SimpleNamespaceContext implements NamespaceContext, Serializable
-{
-
- /**
- *
- */
- private static final long serialVersionUID = -808928409643497762L;
- // XXX should this prebind the xml prefix?
- private Map namespaces;
-
- /**
- * Creates a new empty namespace context.
- */
- public SimpleNamespaceContext()
- {
- this.namespaces = new HashMap();
- }
-
- /**
- * Creates a new namespace context pre-populated with the specified bindings.
- *
- * @param namespaces the initial namespace bindings in scope. The keys in this
- * must be strings containing the prefixes and the values are strings
- * containing the namespace URIs.
- *
- * @throws NullPointerException if the argument is null
- * @throws ClassCastException if any keys or values in the map are not strings
- */
- public SimpleNamespaceContext(Map namespaces)
- {
- Iterator entries = namespaces.entrySet().iterator();
- while (entries.hasNext()) {
- Map.Entry entry = (Map.Entry) entries.next();
- if (! (entry.getKey() instanceof String)
- || ! (entry.getValue() instanceof String)) {
- throw new ClassCastException("Non-string namespace binding");
- }
- }
- this.namespaces = new HashMap(namespaces);
- }
-
- /**
- * Adds all the namespace declarations that are in scope on the given
- * element. In the case of an XSLT stylesheet, this would be the element
- * that has the XPath expression in one of its attributes; e.g.
- * <code><xsl:if test="condition/xpath/expression"></code>.
- *
- * @param nav the navigator for use in conjunction with
- * <code>element</code>
- * @param element the element to copy the namespaces from
- * @throws UnsupportedAxisException if the navigator does not support the
- * namespace axis
- */
- public void addElementNamespaces( Navigator nav, Object element )
- throws UnsupportedAxisException
- {
- Iterator namespaceAxis = nav.getNamespaceAxisIterator( element );
-
- while ( namespaceAxis.hasNext() ) {
- Object namespace = namespaceAxis.next();
- String prefix = nav.getNamespacePrefix( namespace );
- String uri = nav.getNamespaceStringValue( namespace );
- if ( translateNamespacePrefixToUri(prefix) == null ) {
- addNamespace( prefix, uri );
- }
- }
- }
-
- // ???? What if prefix or URI is null, or both?
- /**
- * Binds a prefix to a URI in this context.
- *
- * @param prefix the namespace prefix
- * @param URI the namespace URI
- */
- public void addNamespace(String prefix, String URI)
- {
- this.namespaces.put( prefix, URI );
- }
-
- public String translateNamespacePrefixToUri(String prefix)
- {
- if ( this.namespaces.containsKey( prefix ) )
- {
- return (String) this.namespaces.get( prefix );
- }
-
- return null;
- }
-}
diff --git a/src/java/main/org/jaxen/SimpleVariableContext.java b/src/java/main/org/jaxen/SimpleVariableContext.java
deleted file mode 100644
index a15a050..0000000
--- a/src/java/main/org/jaxen/SimpleVariableContext.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/SimpleVariableContext.java,v 1.19 2006/06/03 20:19:54 elharo Exp $
- * $Revision: 1.19 $
- * $Date: 2006/06/03 20:19:54 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SimpleVariableContext.java,v 1.19 2006/06/03 20:19:54 elharo Exp $
- */
-
-
-package org.jaxen;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-/** Simple default implementation for <code>VariableContext</code>.
- *
- * <p>
- * This is a simple table-based key-lookup implementation
- * for <code>VariableContext</code> which can be programmatically
- * extended by setting additional variables.
- * </p>
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public class SimpleVariableContext implements VariableContext, Serializable
-{
- /**
- *
- */
- private static final long serialVersionUID = 961322093794516518L;
- /** Table of variable bindings. */
- private Map variables;
-
- /** Construct.
- *
- * <p>
- * Create a new empty variable context.
- * </p>
- */
- public SimpleVariableContext()
- {
- variables = new HashMap();
- }
-
- /** Set the value associated with a variable.
- *
- * <p>
- * This method sets a variable that is
- * associated with a particular namespace.
- * These variables appear such as <code>$prefix:foo</code>
- * in an XPath expression. Prefix to URI resolution
- * is the responsibility of a <code>NamespaceContext</code>.
- * Variables within a <code>VariableContext</code> are
- * referred to purely based upon their namespace URI,
- * if any.
- * </p>
- *
- * @param namespaceURI the namespace URI of the variable
- * @param localName the local name of the variable
- * @param value The value to be bound to the variable
- */
- public void setVariableValue( String namespaceURI,
- String localName,
- Object value )
- {
- this.variables.put( new QualifiedName(namespaceURI, localName),
- value );
- }
-
- /** Set the value associated with a variable.
- *
- * <p>
- * This method sets a variable that is <strong>not</strong>
- * associated with any particular namespace.
- * These variables look like <code>$foo</code>
- * in an XPath expression.
- * </p>
- *
- * @param localName the local name of the variable
- * @param value the value to be bound to the variable
- */
- public void setVariableValue( String localName,
- Object value )
- {
- this.variables.put( new QualifiedName(null, localName), value );
- }
-
- public Object getVariableValue( String namespaceURI,
- String prefix,
- String localName )
- throws UnresolvableException
- {
- QualifiedName key = new QualifiedName( namespaceURI, localName );
-
- if ( this.variables.containsKey(key) )
- {
- return this.variables.get( key );
- }
- else
- {
- throw new UnresolvableException( "Variable " + key.getClarkForm() );
- }
- }
-}
diff --git a/src/java/main/org/jaxen/UnresolvableException.java b/src/java/main/org/jaxen/UnresolvableException.java
deleted file mode 100644
index 1ae87cf..0000000
--- a/src/java/main/org/jaxen/UnresolvableException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/UnresolvableException.java,v 1.7 2006/06/03 20:21:05 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:21:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: UnresolvableException.java,v 1.7 2006/06/03 20:21:05 elharo Exp $
- */
-
-
-package org.jaxen;
-
-/** Thrown when a function-call or variable-reference, or any other lookup
- * based on namespace and local name, couldn't be resolved.
- *
- * @author Erwin Bolwidt (ejb @ klomp.org)
- */
-public class UnresolvableException extends JaxenException
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 953578478331961473L;
-
- /**
- * Create a new UnresolvableException.
- *
- * @param message the detail message
- */
- public UnresolvableException(String message)
- {
- super( message );
- }
-}
-
diff --git a/src/java/main/org/jaxen/UnsupportedAxisException.java b/src/java/main/org/jaxen/UnsupportedAxisException.java
deleted file mode 100644
index 0f3d6e2..0000000
--- a/src/java/main/org/jaxen/UnsupportedAxisException.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/UnsupportedAxisException.java,v 1.11 2006/06/03 20:26:02 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/06/03 20:26:02 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: UnsupportedAxisException.java,v 1.11 2006/06/03 20:26:02 elharo Exp $
- */
-
-
-
-package org.jaxen;
-
-/**
- * Indicates attempt to evaluate an XPath axis that
- * is unsupported by the current object-model. If this is thrown
- * the XPath expressions cannot be evaluated correctly, unless there is a fallback
- * evaluation path. Hence you should <em>not</em> just catch this
- * and ignore it, nor should navigators throw it to indicate that
- * an axis is exhausted: instead return an empty iterator.
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public class UnsupportedAxisException extends JaxenException
-{
- /**
- *
- */
- private static final long serialVersionUID = 3385500112257420949L;
-
- /** Create a new UnsupportedAxisException.
- *
- * @param message the error message
- */
- public UnsupportedAxisException(String message)
- {
- super( message );
- }
-}
diff --git a/src/java/main/org/jaxen/VariableContext.java b/src/java/main/org/jaxen/VariableContext.java
deleted file mode 100644
index 674d5a5..0000000
--- a/src/java/main/org/jaxen/VariableContext.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/VariableContext.java,v 1.11 2006/07/03 11:58:31 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/07/03 11:58:31 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: VariableContext.java,v 1.11 2006/07/03 11:58:31 elharo Exp $
- */
-
-
-package org.jaxen;
-
-/** Resolves variable bindings within an XPath expression.
- *
- * <p>
- * Variables within an XPath expression are denoted using
- * notation such as <code>$varName</code> or
- * <code>$nsPrefix:varName</code>, and may
- * refer to a <code>Boolean</code>, <code>Double</code>, <code>String</code>,
- * node-set (<code>List</code>) or individual XML node.
- * </p>
- *
- * <p>
- * When a variable is bound to a node-set, the
- * actual Java object returned should be a <code>java.util.List</code>
- * containing XML nodes from the object-model (e.g. dom4j, JDOM, DOM, etc.)
- * being used with the XPath.
- * </p>
- *
- * <p>
- * A variable may validly be assigned the <code>null</code> value,
- * but an unbound variable (one that this context does not know about)
- * should cause an {@link UnresolvableException} to be thrown.
- * </p>
- *
- * <p>
- * Implementations of this interface should implement <code>Serializable</code>.
- * </p>
- *
- * @see SimpleVariableContext
- * @see NamespaceContext
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public interface VariableContext
-{
- /** An implementation should return the value of an XPath variable
- * based on the namespace URI and local name of the variable-reference
- * expression.
- *
- * <p>
- * It must not use the prefix parameter to select a variable,
- * because a prefix could be bound to any namespace; the prefix parameter
- * could be used in debugging output or other generated information.
- * The prefix may otherwise be ignored.
- * </p>
- *
- * @param namespaceURI the namespace URI to which the prefix parameter
- * is bound in the XPath expression. If the variable
- * reference expression had no prefix, the namespace
- * URI is <code>null</code>.
- * @param prefix the prefix that was used in the variable reference
- * expression; this value is ignored and has no effect
- * @param localName the local name of the variable-reference
- * expression. If there is no prefix, then this is
- * the whole name of the variable.
- *
- * @return the variable's value (which can be <code>null</code>)
- * @throws UnresolvableException when the variable cannot be resolved
- */
- public Object getVariableValue( String namespaceURI,
- String prefix,
- String localName )
- throws UnresolvableException;
-}
diff --git a/src/java/main/org/jaxen/XPath.java b/src/java/main/org/jaxen/XPath.java
deleted file mode 100644
index 6cd1775..0000000
--- a/src/java/main/org/jaxen/XPath.java
+++ /dev/null
@@ -1,399 +0,0 @@
-package org.jaxen;
-
-/*
- $Id: XPath.java,v 1.13 2007/05/02 15:00:13 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-
-import java.util.List;
-
-/** Represents an XPath 1.0 expression which
- * can be evaluated against a variety of different XML object models.
- *
- * <p>
- * Most of the evaluation methods take a context object. This is typically a
- * node or node-set object (which is typically a <code>List</code>
- * of node objects) or a Jaxen <code>Context</code> object.
- * A null context is allowed, meaning that
- * there are no XML nodes on which to evaluate.
- * </p>
- *
- * @see org.jaxen.dom4j.Dom4jXPath XPath for dom4j
- * @see org.jaxen.jdom.JDOMXPath XPath for JDOM
- * @see org.jaxen.dom.DOMXPath XPath for W3C DOM
- *
- * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public interface XPath
-{
- // ----------------------------------------------------------------------
- // Basic Evaluation
- // ----------------------------------------------------------------------
-
- /** Evaluate this XPath against the given context.
- *
- * <p>
- * The context of evaluation my be a <em>document</em>,
- * an <em>element</em>, or a set of <em>elements</em>.
- * </p>
- *
- * <p>
- * If the expression evaluates to an XPath string, number, or boolean
- * type, then the equivalent Java object type is returned.
- * Otherwise, if the result is a node-set, then the returned value is a
- * <code>List</code>.
- * </p>
- *
- * <p>
- * When using this method, one must be careful to
- * test the class of the returned objects, and of
- * each of the composite members if a <code>List</code>
- * is returned. If the returned members are XML nodes,
- * they will be the actual <code>Document</code>,
- * <code>Element</code> or <code>Attribute</code> objects
- * as defined by the concrete XML object-model implementation,
- * directly from the context document. This method <strong>does not
- * return <em>copies</em> of anything</strong>. It merely returns
- * references to nodes within the source document.
- * </p>
- *
- * @param context the node, node-set or Context object for evaluation.
- * This value can be null.
- *
- * @return the result of evaluating the XPath expression
- * against the supplied context
- *
- * @throws JaxenException if an error occurs while attempting
- * to evaluate the expression
- */
- Object evaluate(Object context) throws JaxenException;
-
- // ----------------------------------------------------------------------
- // Advanced Evaluation
- // ----------------------------------------------------------------------
-
- /** Retrieve a string-value interpretation of this XPath
- * expression when evaluated against the given context.
- *
- * <p>
- * The string-value of the expression is determined per
- * the <code>string(..)</code> core function as defined
- * in the XPath specification. This means that an expression
- * that selects more than one nodes will return the string value
- * of the first node in the node set..
- * </p>
- *
- * @deprecated use {@link #stringValueOf(Object)} instead
- *
- * @param context the node, node-set or Context object for evaluation.
- * This value can be null.
- *
- * @return the string-value of this expression
- *
- * @throws JaxenException if an error occurs while attempting
- * to evaluate the expression
- */
- String valueOf(Object context)
- throws JaxenException;
-
- /** Retrieve a string-value interpretation of this XPath
- * expression when evaluated against the given context.
- *
- * <p>
- * The string-value of the expression is determined per
- * the <code>string(..)</code> core function as defined
- * in the XPath specification. This means that an expression
- * that selects more than one nodes will return the string value
- * of the first node in the node set..
- * </p>
- *
- * @param context the node, node-set or Context object for evaluation.
- * This value can be null
- *
- * @return the string-value interpretation of this expression
- *
- * @throws JaxenException if an error occurs while attempting
- * to evaluate the expression
- */
- String stringValueOf(Object context)
- throws JaxenException;
-
- /** Retrieve the boolean value of the first node in document order
- * returned by this XPath expression when evaluated in
- * the given context.
- *
- * <p>
- * The boolean-value of the expression is determined per
- * the <code>boolean()</code> function defined
- * in the XPath specification. This means that an expression
- * that selects zero nodes will return <code>false</code>,
- * while an expression that selects one or more nodes will
- * return <code>true</code>. An expression that returns a string
- * returns false for empty strings and true for all other strings.
- * An expression that returns a number
- * returns false for zero and true for non-zero numbers.
- * </p>
- *
- * @param context the node, node-set or Context object for evaluation. This value can be null.
- *
- * @return the boolean-value of this expression
- *
- * @throws JaxenException if an error occurs while attempting
- * to evaluate the expression
- */
- boolean booleanValueOf(Object context)
- throws JaxenException;
-
-
- /** Retrieve the number-value of the first node in document order
- * returned by this XPath expression when evaluated in
- * the given context.
- *
- * <p>
- * The number-value of the expression is determined per
- * the <code>number(..)</code> core function as defined
- * in the XPath specification. This means that if this
- * expression selects multiple nodes, the number-value
- * of the first node is returned.
- * </p>
- *
- * @param context the node, node-set or Context object for evaluation. This value can be null.
- *
- * @return the number-value interpretation of this expression
- *
- * @throws JaxenException if an error occurs while attempting
- * to evaluate the expression
- */
- Number numberValueOf(Object context)
- throws JaxenException;
-
- // ----------------------------------------------------------------------
- // Selection
- // ----------------------------------------------------------------------
-
- /** Select all nodes that are selectable by this XPath
- * expression. If multiple nodes match, multiple nodes
- * will be returned.
- *
- * <p>
- * <strong>NOTE:</strong> In most cases, nodes will be returned
- * in document-order, as defined by the XML Canonicalization
- * specification. The exception occurs when using XPath
- * expressions involving the <code>union</code> operator
- * (denoted with the pipe '|' character).
- * </p>
- *
- * @see #selectSingleNode
- *
- * @param context the node, node-set or Context object for evaluation.
- * This value can be null.
- *
- * @return the node-set of all items selected
- * by this XPath expression.
- *
- * @throws JaxenException if an error occurs while attempting
- * to evaluate the expression
- */
- List selectNodes(Object context)
- throws JaxenException;
-
- /**
- * <p>
- * Return the first node in document order that is selected by this
- * XPath expression.
- * </p>
- *
- * @see #selectNodes
- *
- * @param context the node, node-set or Context object for evaluation.
- * This value can be null.
- *
- * @return the first node in document order selected by this XPath expression
- *
- * @throws JaxenException if an error occurs while attempting
- * to evaluate the expression
- */
- Object selectSingleNode(Object context)
- throws JaxenException;
-
- // ----------------------------------------------------------------------
- // Helpers
- // ----------------------------------------------------------------------
-
- /** Add a namespace prefix-to-URI mapping for this XPath
- * expression.
- *
- * <p>
- * Namespace prefix-to-URI mappings in an XPath are independent
- * of those used within any document. Only the mapping explicitly
- * added to this XPath will be available for resolving the
- * XPath expression.
- * </p>
- *
- * <p>
- * This is a convenience method for adding mappings to the
- * default {@link NamespaceContext} in place for this XPath.
- * If you have installed a specific custom <code>NamespaceContext</code>,
- * then this method will throw a <code>JaxenException</code>.
- * </p>
- *
- * @param prefix the namespace prefix
- * @param uri the namespace URI
- *
- * @throws JaxenException if a <code>NamespaceContext</code>
- * used by this XPath has been explicitly installed
- */
- void addNamespace(String prefix,
- String uri)
- throws JaxenException;
-
- // ----------------------------------------------------------------------
- // Properties
- // ----------------------------------------------------------------------
-
- /** Set a <code>NamespaceContext</code> for this
- * XPath expression.
- *
- * <p>
- * A <code>NamespaceContext</code> is responsible for translating
- * namespace prefixes within the expression into namespace URIs.
- * </p>
- *
- * @see NamespaceContext
- * @see NamespaceContext#translateNamespacePrefixToUri
- *
- * @param namespaceContext the <code>NamespaceContext</code> to
- * install for this expression
- */
- void setNamespaceContext(NamespaceContext namespaceContext);
-
- /** Set a <code>FunctionContext</code> for this XPath
- * expression.
- *
- * <p>
- * A <code>FunctionContext</code> is responsible for resolving
- * all function calls used within the expression.
- * </p>
- *
- * @see FunctionContext
- * @see FunctionContext#getFunction
- *
- * @param functionContext the <code>FunctionContext</code> to
- * install for this expression
- */
- void setFunctionContext(FunctionContext functionContext);
-
- /** Set a <code>VariableContext</code> for this XPath
- * expression.
- *
- * <p>
- * A <code>VariableContext</code> is responsible for resolving
- * all variables referenced within the expression.
- * </p>
- *
- * @see VariableContext
- * @see VariableContext#getVariableValue
- *
- * @param variableContext the <code>VariableContext</code> to
- * install for this expression.
- */
- void setVariableContext(VariableContext variableContext);
-
- /** Retrieve the <code>NamespaceContext</code> used by this XPath
- * expression.
- *
- * <p>
- * A <code>FunctionContext</code> is responsible for resolving
- * all function calls used within the expression.
- * </p>
- *
- * <p>
- * If this XPath expression has not previously had a <code>NamespaceContext</code>
- * installed, a new default <code>NamespaceContext</code> will be created,
- * installed and returned.
- * </p>
- *
- * @see NamespaceContext
- *
- * @return the <code>NamespaceContext</code> used by this expression
- */
- NamespaceContext getNamespaceContext();
-
- /** Retrieve the <code>FunctionContext</code> used by this XPath
- * expression.
- *
- * <p>
- * A <code>FunctionContext</code> is responsible for resolving
- * all function calls used within the expression.
- * </p>
- *
- * <p>
- * If this XPath expression has not previously had a <code>FunctionContext</code>
- * installed, a new default <code>FunctionContext</code> will be created,
- * installed and returned.
- * </p>
- *
- * @see FunctionContext
- *
- * @return the <code>FunctionContext</code> used by this expression
- */
- FunctionContext getFunctionContext();
-
- /** Retrieve the <code>VariableContext</code> used by this XPath
- * expression.
- *
- * <p>
- * A <code>VariableContext</code> is responsible for resolving
- * all variables referenced within the expression.
- * </p>
- *
- * <p>
- * If this XPath expression has not previously had a <code>VariableContext</code>
- * installed, a new default <code>VariableContext</code> will be created,
- * installed and returned.
- * </p>
- *
- * @see VariableContext
- *
- * @return the <code>VariableContext</code> used by this expression
- */
- VariableContext getVariableContext();
-
-
- /** Retrieve the XML object-model-specific {@link Navigator}
- * used to evaluate this XPath expression.
- *
- * @return the implementation-specific <code>Navigator</code>
- */
- Navigator getNavigator();
-}
diff --git a/src/java/main/org/jaxen/XPathFunctionContext.java b/src/java/main/org/jaxen/XPathFunctionContext.java
deleted file mode 100644
index b6bc723..0000000
--- a/src/java/main/org/jaxen/XPathFunctionContext.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/XPathFunctionContext.java,v 1.29 2006/11/08 13:59:38 elharo Exp $
- * $Revision: 1.29 $
- * $Date: 2006/11/08 13:59:38 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathFunctionContext.java,v 1.29 2006/11/08 13:59:38 elharo Exp $
- */
-
-
-package org.jaxen;
-
-import org.jaxen.function.BooleanFunction;
-import org.jaxen.function.CeilingFunction;
-import org.jaxen.function.ConcatFunction;
-import org.jaxen.function.ContainsFunction;
-import org.jaxen.function.CountFunction;
-import org.jaxen.function.FalseFunction;
-import org.jaxen.function.FloorFunction;
-import org.jaxen.function.IdFunction;
-import org.jaxen.function.LangFunction;
-import org.jaxen.function.LastFunction;
-import org.jaxen.function.LocalNameFunction;
-import org.jaxen.function.NameFunction;
-import org.jaxen.function.NamespaceUriFunction;
-import org.jaxen.function.NormalizeSpaceFunction;
-import org.jaxen.function.NotFunction;
-import org.jaxen.function.NumberFunction;
-import org.jaxen.function.PositionFunction;
-import org.jaxen.function.RoundFunction;
-import org.jaxen.function.StartsWithFunction;
-import org.jaxen.function.StringFunction;
-import org.jaxen.function.StringLengthFunction;
-import org.jaxen.function.SubstringAfterFunction;
-import org.jaxen.function.SubstringBeforeFunction;
-import org.jaxen.function.SubstringFunction;
-import org.jaxen.function.SumFunction;
-import org.jaxen.function.TranslateFunction;
-import org.jaxen.function.TrueFunction;
-import org.jaxen.function.ext.EndsWithFunction;
-import org.jaxen.function.ext.EvaluateFunction;
-import org.jaxen.function.ext.LowerFunction;
-import org.jaxen.function.ext.UpperFunction;
-import org.jaxen.function.xslt.DocumentFunction;
-
-/** A <code>FunctionContext</code> implementing the core XPath
- * function library, plus Jaxen extensions.
- *
- * <p>
- * The core XPath function library is provided through this
- * implementation of <code>FunctionContext</code>. Additionally,
- * extension functions have been provided, as enumerated below.
- * </p>
- *
- * <p>
- * This class is re-entrant and thread-safe. If using the
- * default instance, it is inadvisable to call
- * {@link #registerFunction(String, String, Function)}
- * as that will extend the global function context, affecting other
- * users.
- * </p>
- *
- * <p>
- * Extension functions:
- * </p>
- *
- * <ul>
- * <li>evaluate(..)</li>
- * <li>upper-case(..)</li>
- * <li>lower-case(..)</li>
- * <li>ends-with(..)</li>
- * </ul>
- *
- * @see FunctionContext
- * @see org.jaxen.function
- * @see org.jaxen.function.xslt
- * @see org.jaxen.function.ext
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public class XPathFunctionContext extends SimpleFunctionContext
-{
- private static XPathFunctionContext instance = new XPathFunctionContext();
-
- /** Retrieve the default function context
- *
- * @return the default function context
- */
- public static FunctionContext getInstance()
- {
- return instance;
- }
-
- /** Create a new XPath function context.
- * All core XPath and Jaxen extension functions are registered.
- */
- public XPathFunctionContext()
- {
- this(true);
- }
-
- /** Create a new XPath function context.
- * All core XPath functions are registered.
- *
- * @param includeExtensionFunctions if true extension functions are included;
- * if false, they aren't
- */
- public XPathFunctionContext(boolean includeExtensionFunctions)
- {
- registerXPathFunctions();
- if (includeExtensionFunctions) {
- registerXSLTFunctions();
- registerExtensionFunctions();
- }
- }
-
- private void registerXPathFunctions() {
-
- registerFunction( null, // namespace URI
- "boolean",
- new BooleanFunction() );
-
- registerFunction( null, // namespace URI
- "ceiling",
- new CeilingFunction() );
-
- registerFunction( null, // namespace URI
- "concat",
- new ConcatFunction() );
-
- registerFunction( null, // namespace URI
- "contains",
- new ContainsFunction() );
-
- registerFunction( null, // namespace URI
- "count",
- new CountFunction() );
-
- registerFunction( null, // namespace URI
- "false",
- new FalseFunction() );
-
- registerFunction( null, // namespace URI
- "floor",
- new FloorFunction() );
-
- registerFunction( null, // namespace URI
- "id",
- new IdFunction() );
-
- registerFunction( null, // namespace URI
- "lang",
- new LangFunction() );
-
- registerFunction( null, // namespace URI
- "last",
- new LastFunction() );
-
- registerFunction( null, // namespace URI
- "local-name",
- new LocalNameFunction() );
-
- registerFunction( null, // namespace URI
- "name",
- new NameFunction() );
-
- registerFunction( null, // namespace URI
- "namespace-uri",
- new NamespaceUriFunction() );
-
- registerFunction( null, // namespace URI
- "normalize-space",
- new NormalizeSpaceFunction() );
-
- registerFunction( null, // namespace URI
- "not",
- new NotFunction() );
-
- registerFunction( null, // namespace URI
- "number",
- new NumberFunction() );
-
- registerFunction( null, // namespace URI
- "position",
- new PositionFunction() );
-
- registerFunction( null, // namespace URI
- "round",
- new RoundFunction() );
-
- registerFunction( null, // namespace URI
- "starts-with",
- new StartsWithFunction() );
-
- registerFunction( null, // namespace URI
- "string",
- new StringFunction() );
-
- registerFunction( null, // namespace URI
- "string-length",
- new StringLengthFunction() );
-
- registerFunction( null, // namespace URI
- "substring-after",
- new SubstringAfterFunction() );
-
- registerFunction( null, // namespace URI
- "substring-before",
- new SubstringBeforeFunction() );
-
- registerFunction( null, // namespace URI
- "substring",
- new SubstringFunction() );
-
- registerFunction( null, // namespace URI
- "sum",
- new SumFunction() );
-
- registerFunction( null, // namespace URI
- "true",
- new TrueFunction() );
-
- registerFunction( null, // namespace URI
- "translate",
- new TranslateFunction() );
- }
-
- private void registerXSLTFunctions() {
-
- // extension functions defined in XSLT
- registerFunction( null, // namespace URI
- "document",
- new DocumentFunction() );
- }
-
- private void registerExtensionFunctions() {
- // extension functions should go into a namespace, but which one?
- // for now, keep them in default namespace to not break any code
-
- registerFunction( null, // namespace URI
- "evaluate",
- new EvaluateFunction() );
-
- registerFunction( null, // namespace URI
- "lower-case",
- new LowerFunction() );
-
- registerFunction( null, // namespace URI
- "upper-case",
- new UpperFunction() );
-
- registerFunction( null, // namespace URI
- "ends-with",
- new EndsWithFunction() );
- }
-
-
-}
diff --git a/src/java/main/org/jaxen/XPathSyntaxException.java b/src/java/main/org/jaxen/XPathSyntaxException.java
deleted file mode 100644
index 416f0f7..0000000
--- a/src/java/main/org/jaxen/XPathSyntaxException.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/XPathSyntaxException.java,v 1.12 2006/06/03 20:26:36 elharo Exp $
- * $Revision: 1.12 $
- * $Date: 2006/06/03 20:26:36 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathSyntaxException.java,v 1.12 2006/06/03 20:26:36 elharo Exp $
- */
-
-
-package org.jaxen;
-
-/** Indicates an error during parsing of an XPath expression.
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public class XPathSyntaxException extends JaxenException
-{
- /**
- *
- */
- private static final long serialVersionUID = 1980601567207604059L;
-
- /** The textual XPath expression */
- private String xpath;
-
- /** The position of the error */
- private int position;
-
- /**
- * Create a new XPathSyntaxException wrapping an existing
- * <code>org.jaxen.saxpath.XPathSyntaxException</code>.
- *
- * @param e the exception that caused this exception
- */
- public XPathSyntaxException(org.jaxen.saxpath.XPathSyntaxException e)
- {
- super( e );
-
- this.xpath = e.getXPath();
- this.position = e.getPosition();
- }
-
- /** Constructor
- *
- * @param xpath the erroneous XPath expression
- * @param position the position of the error
- * @param message the error message
- */
- public XPathSyntaxException(String xpath,
- int position,
- String message)
- {
- super( message );
-
- this.xpath = xpath;
- this.position = position;
- }
-
- /** Retrieve the position of the error.
- *
- * @return the position of the error
- */
- public int getPosition()
- {
- return this.position;
- }
-
- /** Retrieve the expression containing the error.
- *
- * @return the erroneous expression
- */
- public String getXPath()
- {
- return this.xpath;
- }
-
- /** Retrieve a string useful for denoting where
- * the error occurred.
- *
- * <p>
- * This is a string composed of whitespace and
- * a marker at the position (see {@link #getPosition})
- * of the error. This is useful for creating
- * friendly multi-line error displays.
- * </p>
- *
- * @return the error position marker
- */
- public String getPositionMarker()
- {
- StringBuffer buf = new StringBuffer();
-
- int pos = getPosition();
-
- for ( int i = 0 ; i < pos ; ++i )
- {
- buf.append(" ");
- }
-
- buf.append("^");
-
- return buf.toString();
-
- }
-
- /** Retrieve the friendly multi-line error message.
- *
- * <p>
- * This returns a multi-line string that contains
- * the original erroneous XPath expression with a
- * marker underneath indicating exactly where the
- * error occurred.
- * </p>
- *
- * @return the multi-line error message
- */
- public String getMultilineMessage()
- {
- StringBuffer buf = new StringBuffer(getMessage());
- buf.append( "\n" );
- buf.append( getXPath() );
- buf.append( "\n" );
-
- buf.append( getPositionMarker() );
-
- return buf.toString();
- }
-}
diff --git a/src/java/main/org/jaxen/dom/DOMXPath.java b/src/java/main/org/jaxen/dom/DOMXPath.java
deleted file mode 100644
index 62318ce..0000000
--- a/src/java/main/org/jaxen/dom/DOMXPath.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/dom/DOMXPath.java,v 1.10 2006/06/03 20:44:16 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/06/03 20:44:16 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DOMXPath.java,v 1.10 2006/06/03 20:44:16 elharo Exp $
- */
-
-// XPath.java - top-level entry point for DOM XPath matching.
-
-package org.jaxen.dom;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenException;
-
-/** An XPath implementation for the W3C DOM.
- *
- * <p>This is the main entry point for matching an XPath against a DOM
- * tree. You create a compiled XPath object, then match it against
- * one or more context nodes using the {@link #selectNodes(Object)}
- * method, as in the following example:</p>
- *
- * <pre> XPath path = new DOMXPath("a/b/c");
- * List results = path.selectNodes(domNode);</pre>
- *
- * @see BaseXPath
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- *
- * @version $Revision: 1.10 $
- */
-public class DOMXPath extends BaseXPath
-{
- /**
- *
- */
- private static final long serialVersionUID = 5551221776001439091L;
-
- /** Create a new <code>DOMXPath</code> from an XPath expression string.
- *
- * @param xpathExpr the XPath expression
- *
- * @throws JaxenException if there is a syntax error in the expression
- */
- public DOMXPath(String xpathExpr) throws JaxenException
- {
- super( xpathExpr, DocumentNavigator.getInstance() );
- }
-
-}
diff --git a/src/java/main/org/jaxen/dom/DocumentNavigator.java b/src/java/main/org/jaxen/dom/DocumentNavigator.java
deleted file mode 100644
index f4027a6..0000000
--- a/src/java/main/org/jaxen/dom/DocumentNavigator.java
+++ /dev/null
@@ -1,1065 +0,0 @@
-package org.jaxen.dom;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/dom/DocumentNavigator.java,v 1.57 2007/05/05 18:08:55 elharo Exp $
- * $Revision: 1.57 $
- * $Date: 2007/05/05 18:08:55 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DocumentNavigator.java,v 1.57 2007/05/05 18:08:55 elharo Exp $
-*/
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.jaxen.DefaultNavigator;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.XPath;
-import org.jaxen.JaxenConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.ProcessingInstruction;
-import org.xml.sax.SAXException;
-
-/** Interface for navigating around the W3C DOM Level 2 object model.
- *
- * <p>
- * This class is not intended for direct usage, but is
- * used by the Jaxen engine during evaluation.
- * </p>
- *
- * <p>This class implements the {@link org.jaxen.DefaultNavigator} interface
- * for the Jaxen XPath library. This adapter allows the Jaxen
- * library to be used to execute XPath queries against any object tree
- * that implements the DOM level 2 interfaces.</p>
- *
- * <p>Note: DOM level 2 does not include a node representing an XPath
- * namespace node. This navigator will return namespace nodes
- * as instances of the custom {@link NamespaceNode} class, and
- * users will have to check result sets to locate and isolate
- * these.</p>
- *
- * @author David Megginson
- * @author James Strachan
- *
- * @see XPath
- * @see NamespaceNode
- */
-public class DocumentNavigator extends DefaultNavigator
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Constants.
- ////////////////////////////////////////////////////////////////////
-
- /**
- *
- */
- private static final long serialVersionUID = 8460943068889528115L;
-
- private final static DocumentNavigator SINGLETON = new DocumentNavigator();
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Constructor.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Default constructor.
- */
- public DocumentNavigator ()
- {
- }
-
-
- /**
- * Get a constant DocumentNavigator for efficiency.
- *
- * @return a constant instance of a DocumentNavigator.
- */
- public static Navigator getInstance ()
- {
- return SINGLETON;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.jaxen.DefaultNavigator.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Get an iterator over all of this node's children.
- *
- * @param contextNode the context node for the child axis.
- * @return a possibly-empty iterator (not null)
- */
- public Iterator getChildAxisIterator (Object contextNode)
- {
- return new NodeIterator ((Node)contextNode) {
- protected Node getFirstNode (Node node)
- {
- return node.getFirstChild();
- }
- protected Node getNextNode (Node node)
- {
- return node.getNextSibling();
- }
- };
- }
-
-
- /**
- * Get a (single-member) iterator over this node's parent.
- *
- * @param contextNode the context node for the parent axis
- * @return a possibly-empty iterator (not null)
- */
- public Iterator getParentAxisIterator (Object contextNode)
- {
- Node node = (Node)contextNode;
-
- if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
- return new NodeIterator (node) {
- protected Node getFirstNode (Node n)
- {
- // We can assume castability here because we've already
- // tested the node type.
- return ((Attr)n).getOwnerElement();
- }
- protected Node getNextNode (Node n) {
- return null;
- }
- };
- } else {
- return new NodeIterator (node) {
- protected Node getFirstNode (Node n)
- {
- return n.getParentNode();
- }
- protected Node getNextNode (Node n) {
- return null;
- }
- };
- }
- }
-
-
- /**
- * Return the XPath parent of the supplied DOM node.
- * XPath has slightly different definition of parent than DOM does.
- * In particular, the parent of an attribute is not null.
- *
- * @param child the child node
- *
- * @return the parent of the specified node; or null if
- * the node does not have a parent
- */
- public Object getParentNode(Object child) {
- Node node = (Node) child;
- if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
- return ((Attr) node).getOwnerElement();
- }
- return node.getParentNode();
- }
-
-
- /**
- * Get an iterator over all following siblings.
- *
- * @param contextNode the context node for the sibling iterator
- * @return a possibly-empty iterator (not null)
- */
- public Iterator getFollowingSiblingAxisIterator (Object contextNode)
- {
- return new NodeIterator ((Node)contextNode) {
- protected Node getFirstNode (Node node)
- {
- return getNextNode(node);
- }
- protected Node getNextNode (Node node) {
- return node.getNextSibling();
- }
- };
- }
-
-
- /**
- * Get an iterator over all preceding siblings.
- *
- * @param contextNode the context node for the preceding sibling axis
- * @return a possibly-empty iterator (not null)
- */
- public Iterator getPrecedingSiblingAxisIterator (Object contextNode)
- {
- return new NodeIterator ((Node)contextNode) {
- protected Node getFirstNode (Node node)
- {
- return getNextNode(node);
- }
- protected Node getNextNode (Node node) {
- return node.getPreviousSibling();
- }
- };
- }
-
-
- /**
- * Get an iterator over all following nodes, depth-first.
- *
- * @param contextNode the context node for the following axis
- * @return a possibly-empty iterator (not null)
- */
- public Iterator getFollowingAxisIterator (Object contextNode)
- {
- return new NodeIterator ((Node)contextNode) {
- protected Node getFirstNode (Node node)
- {
- if (node == null) {
- return null;
- }
- else {
- Node sibling = node.getNextSibling();
- if (sibling == null) {
- return getFirstNode(node.getParentNode());
- }
- else {
- return sibling;
- }
- }
- }
- protected Node getNextNode (Node node) {
- if (node == null) {
- return null;
- }
- else {
- Node n = node.getFirstChild();
- if (n == null) n = node.getNextSibling();
- if (n == null) return getFirstNode(node.getParentNode());
- else return n;
- }
- }
- };
- }
-
-
- /**
- * Get an iterator over all attributes.
- *
- * @param contextNode the context node for the attribute axis
- * @return a possibly-empty iterator (not null)
- */
- public Iterator getAttributeAxisIterator (Object contextNode)
- {
- if (isElement(contextNode)) {
- return new AttributeIterator((Node)contextNode);
- }
- else {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- }
-
-
- /**
- * Get an iterator over all declared namespaces.
- *
- * <p>Note: this iterator is not live: it takes a snapshot
- * and that snapshot remains static during the life of
- * the iterator (i.e. it won't reflect subsequent changes
- * to the DOM).</p>
- *
- * <p>
- * In the event that the DOM is inconsistent; for instance a
- * <code>pre:foo</code> element is declared by DOM to be in the
- * http://www.a.com/ namespace but also has an
- * <code>xmlns:pre="http://www.b.com"</code> attribute; then only
- * one of the namespaces will be counted. This will be the intrinsic
- * namespace of the <code>Element</code> or <code>Attr</code> object
- * rather than the one provide by the contradictory namespace
- * declaration attribute. In the event of a contradiction between two
- * attributes on the same element--e.g. <code>pre:foo</code> in the
- * http://www.a.com/ namespace and <code>pre:bar</code> in the
- * http://www.b.com/ namespace--it is undefined which namespace
- * will be returned.
- * </p>
- *
- * @param contextNode the context node for the namespace axis
- * @return a possibly-empty iterator (not null)
- */
- public Iterator getNamespaceAxisIterator (Object contextNode)
- {
- // Only elements have namespace nodes
- if (isElement(contextNode)) {
-
- HashMap nsMap = new HashMap();
-
- // Starting at the current node, walk
- // up to the root, noting the namespace
- // declarations in scope.
- for (Node n = (Node) contextNode;
- n != null;
- n = n.getParentNode()) {
-
- // 1. Look for the namespace of the element itself
- String myNamespace = n.getNamespaceURI();
- if (myNamespace != null && ! "".equals(myNamespace)) {
- String myPrefix = n.getPrefix();
- if (!nsMap.containsKey(myPrefix)) {
- NamespaceNode ns = new NamespaceNode((Node) contextNode, myPrefix, myNamespace);
- nsMap.put(myPrefix, ns);
- }
- }
-
- if (n.hasAttributes()) {
- NamedNodeMap atts = n.getAttributes();
- int length = atts.getLength();
- // 2. Look for namespaces of attributes
- for (int i = 0; i < length; i++) {
- Attr att = (Attr) atts.item(i);
- // Work around Crimson bug by testing URI rather than name
- String attributeNamespace = att.getNamespaceURI();
- if ("http://www.w3.org/2000/xmlns/".equals(attributeNamespace)) {
- }
- else if (attributeNamespace != null) {
- String prefix = att.getPrefix();
- NamespaceNode ns =
- new NamespaceNode((Node)contextNode, prefix, attributeNamespace);
- // Add only if there's not a closer declaration in force.
- if (!nsMap.containsKey(prefix)) nsMap.put(prefix, ns);
-
- }
- }
-
- // 3. Look for namespace declaration attributes
- for (int i = 0; i < length; i++) {
- Attr att = (Attr) atts.item(i);
- // work around crimson bug by testing URI rather than name
- String attributeNamespace = att.getNamespaceURI();
- if ("http://www.w3.org/2000/xmlns/".equals(attributeNamespace)) {
- NamespaceNode ns =
- new NamespaceNode( (Node)contextNode, att);
- // Add only if there's not a closer declaration in force.
- String name = ns.getNodeName();
- if (!nsMap.containsKey(name)) nsMap.put(name, ns);
- }
- }
-
- }
-
- }
- // Section 5.4 of the XPath rec requires
- // this to be present.
- nsMap.put("xml",
- new
- NamespaceNode((Node)contextNode,
- "xml",
- "http://www.w3.org/XML/1998/namespace"));
-
- // An empty default namespace cancels
- // any previous default.
- NamespaceNode defaultNS = (NamespaceNode)nsMap.get("");
- if (defaultNS != null && defaultNS.getNodeValue().length() == 0) {
- nsMap.remove("");
- }
- return nsMap.values().iterator();
- }
- else {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- }
-
- /** Returns a parsed form of the given XPath string, which will be suitable
- * for queries on DOM documents.
- *
- * @param xpath the XPath expression
- * @return a parsed form of the given XPath string
- * @throws org.jaxen.saxpath.SAXPathException if the string is syntactically incorrect
- */
- public XPath parseXPath (String xpath) throws org.jaxen.saxpath.SAXPathException
- {
- return new DOMXPath(xpath);
- }
-
- /**
- * Get the top-level document node.
- *
- * @param contextNode any node in the document
- * @return the root node
- */
- public Object getDocumentNode (Object contextNode)
- {
- if (isDocument(contextNode)) return contextNode;
- else return ((Node)contextNode).getOwnerDocument();
- }
-
- // Why are there separate methods for getElementNamespaceURI and
- // getAttributeNamespaceURI when they do exactly the same thing?
- // This should be combined in a future version.
- /**
- * Get the namespace URI of an element.
- *
- * @param element the target node
- * @return a string (possibly empty) if the node is an element,
- * and null otherwise
- */
- public String getElementNamespaceUri (Object element)
- {
- try {
- Node node = (Node) element;
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- return node.getNamespaceURI();
- }
- }
- catch (ClassCastException ex) {
- }
- return null;
- }
-
-
- /**
- * Get the local name of an element.
- *
- * @param element the target node
- * @return a string representing the unqualified local name
- * if the node is an element, or null otherwise
- */
- public String getElementName (Object element)
- {
- if (isElement(element)) {
- String name = ((Node)element).getLocalName();
- if (name == null) name = ((Node)element).getNodeName();
- return name;
- }
- return null;
- }
-
-
- /**
- * Get the qualified name of an element.
- *
- * @param element the target node
- * @return a string representing the qualified (i.e. possibly
- * prefixed) name if the argument is an element, or null otherwise
- */
- public String getElementQName (Object element)
- {
- try {
- Node node = (Node) element;
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- return node.getNodeName();
- }
- }
- catch (ClassCastException ex) {
- }
- return null;
- }
-
-
- /**
- * Get the namespace URI of an attribute.
- *
- * @param attribute the target node
- *
- * @return the namespace name of the specified node
- *
- */
- public String getAttributeNamespaceUri (Object attribute)
- {
- try {
- Node node = (Node) attribute;
- if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
- return node.getNamespaceURI();
- }
- }
- catch (ClassCastException ex) {
- }
- return null;
- }
-
-
- /**
- * Get the local name of an attribute.
- *
- * @param attribute the target node
- * @return a string representing the unqualified local name
- * if the node is an attribute, or null otherwise
- */
- public String getAttributeName (Object attribute)
- {
- if (isAttribute(attribute)) {
- String name = ((Node)attribute).getLocalName();
- if (name == null) name = ((Node)attribute).getNodeName();
- return name;
- }
- return null;
- }
-
-
- /**
- * Get the qualified name of an attribute.
- *
- * @param attribute the target node
- *
- * @return a string representing the qualified (i.e. possibly
- * prefixed) name if the argument is an attribute, or null otherwise
- */
- public String getAttributeQName (Object attribute)
- {
- try {
- Node node = (Node) attribute;
- if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
- return node.getNodeName();
- }
- }
- catch (ClassCastException ex) {
- }
- return null;
- }
-
-
- /**
- * Test if a node is a top-level document.
- *
- * @param object the target node
- * @return true if the node is the document root, false otherwise
- */
- public boolean isDocument (Object object)
- {
- return (object instanceof Node) &&
- (((Node)object).getNodeType() == Node.DOCUMENT_NODE);
- }
-
-
- /**
- * Test if a node is a namespace.
- *
- * @param object the target node
- * @return true if the node is a namespace, false otherwise
- */
- public boolean isNamespace (Object object)
- {
- return (object instanceof NamespaceNode);
- }
-
-
- /**
- * Test if a node is an element.
- *
- * @param object the target node
- * @return true if the node is an element, false otherwise
- */
- public boolean isElement (Object object)
- {
- return (object instanceof Node) &&
- (((Node)object).getNodeType() == Node.ELEMENT_NODE);
- }
-
-
- /**
- * Test if a node is an attribute. <code>xmlns</code> and
- * <code>xmlns:pre</code> attributes do not count as attributes
- * for the purposes of XPath.
- *
- * @param object the target node
- * @return true if the node is an attribute, false otherwise
- */
- public boolean isAttribute (Object object)
- {
- return (object instanceof Node) &&
- (((Node)object).getNodeType() == Node.ATTRIBUTE_NODE)
- && ! "http://www.w3.org/2000/xmlns/".equals(((Node) object).getNamespaceURI());
- }
-
-
- /**
- * Test if a node is a comment.
- *
- * @param object the target node
- * @return true if the node is a comment, false otherwise
- */
- public boolean isComment (Object object)
- {
- return (object instanceof Node) &&
- (((Node)object).getNodeType() == Node.COMMENT_NODE);
- }
-
-
- /**
- * Test if a node is plain text.
- *
- * @param object the target node
- * @return true if the node is a text node, false otherwise
- */
- public boolean isText (Object object)
- {
- if (object instanceof Node) {
- switch (((Node)object).getNodeType()) {
- case Node.TEXT_NODE:
- case Node.CDATA_SECTION_NODE:
- return true;
- default:
- return false;
- }
- } else {
- return false;
- }
- }
-
-
- /**
- * Test if a node is a processing instruction.
- *
- * @param object the target node
- * @return true if the node is a processing instruction, false otherwise
- */
- public boolean isProcessingInstruction (Object object)
- {
- return (object instanceof Node) &&
- (((Node)object).getNodeType() == Node.PROCESSING_INSTRUCTION_NODE);
- }
-
-
- /**
- * Get the string value of an element node.
- *
- * @param object the target node
- * @return the text inside the node and its descendants if the node
- * is an element, null otherwise
- */
- public String getElementStringValue (Object object)
- {
- if (isElement(object)) {
- return getStringValue((Node)object, new StringBuffer()).toString();
- }
- else {
- return null;
- }
- }
-
-
- /**
- * Construct a node's string value recursively.
- *
- * @param node the current node
- * @param buffer the buffer for building the text
- * @return the buffer passed as a parameter (for convenience)
- */
- private StringBuffer getStringValue (Node node, StringBuffer buffer)
- {
- if (isText(node)) {
- buffer.append(node.getNodeValue());
- } else {
- NodeList children = node.getChildNodes();
- int length = children.getLength();
- for (int i = 0; i < length; i++) {
- getStringValue(children.item(i), buffer);
- }
- }
- return buffer;
- }
-
-
- /**
- * Get the string value of an attribute node.
- *
- * @param object the target node
- * @return the text of the attribute value if the node is an
- * attribute, null otherwise
- */
- public String getAttributeStringValue (Object object)
- {
- if (isAttribute(object)) return ((Node)object).getNodeValue();
- else return null;
- }
-
-
- /**
- * Get the string value of text.
- *
- * @param object the target node
- * @return the string of text if the node is text, null otherwise
- */
- public String getTextStringValue (Object object)
- {
- if (isText(object)) return ((Node)object).getNodeValue();
- else return null;
- }
-
-
- /**
- * Get the string value of a comment node.
- *
- * @param object the target node
- * @return the text of the comment if the node is a comment, null otherwise
- */
- public String getCommentStringValue (Object object)
- {
- if (isComment(object)) return ((Node)object).getNodeValue();
- else return null;
- }
-
-
- /**
- * Get the string value of a namespace node.
- *
- * @param object the target node
- * @return the namespace URI as a (possibly empty) string if the
- * node is a namespace node, null otherwise
- */
- public String getNamespaceStringValue (Object object)
- {
- if (isNamespace(object)) return ((NamespaceNode)object).getNodeValue();
- else return null;
- }
-
- /**
- * Get the prefix value of a namespace node.
- *
- * @param object the target node
- * @return the namespace prefix a (possibly empty) string if the
- * node is a namespace node, null otherwise
- */
- public String getNamespacePrefix (Object object)
- {
- if (isNamespace(object)) return ((NamespaceNode)object).getLocalName();
- else return null;
- }
-
- /**
- * Translate a namespace prefix to a URI.
- *
- * @param prefix the namespace prefix
- * @param element the namespace context
- * @return the namespace URI bound to the prefix in the scope of <code>element</code>;
- * null if the prefix is not bound
- */
- public String translateNamespacePrefixToUri (String prefix, Object element)
- {
- Iterator it = getNamespaceAxisIterator(element);
- while (it.hasNext()) {
- NamespaceNode ns = (NamespaceNode)it.next();
- if (prefix.equals(ns.getNodeName())) return ns.getNodeValue();
- }
- return null;
- }
-
- /**
- * Use JAXP to load a namespace aware document from a given URI.
- *
- * @param uri the URI of the document to load
- * @return the new W3C DOM Level 2 Document instance
- * @throws FunctionCallException containing a nested exception
- * if a problem occurs trying to parse the given document
- *
- * @todo Possibly we could make the factory a thread local.
- */
- public Object getDocument(String uri) throws FunctionCallException
- {
- try
- {
- // We really do need to construct a new factory here each time.
- // DocumentBuilderFactory is not guaranteed to be thread safe?
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- return builder.parse( uri );
- }
- catch (ParserConfigurationException e) {
- throw new FunctionCallException("JAXP setup error in document() function: " + e.getMessage(), e);
- }
- catch (SAXException e) {
- throw new FunctionCallException("XML error in document() function: " + e.getMessage(), e);
- }
- catch (IOException e) {
- throw new FunctionCallException("I/O error in document() function: " + e.getMessage(), e);
- }
-
- }
-
- /**
- * Get the target of a processing instruction node.
- *
- * @param obj the processing instruction
- * @return the target of the processing instruction
- * @throws ClassCastException if obj is not a processing instruxtion
- *
- */
- public String getProcessingInstructionTarget(Object obj)
- {
- if (isProcessingInstruction(obj)) {
- ProcessingInstruction pi = (ProcessingInstruction) obj;
- return pi.getTarget();
- }
- throw new ClassCastException(obj + " is not a processing instruction");
- }
-
- /**
- * Get the data of a processing instruction node.
- *
- * @param obj the processing instruction
- * @return the target of the processing instruction
- * @throws ClassCastException if obj is not a processing instruxtion
- *
- */
- public String getProcessingInstructionData(Object obj)
- {
- if (isProcessingInstruction(obj)) {
- ProcessingInstruction pi = (ProcessingInstruction) obj;
- return pi.getData();
- }
- throw new ClassCastException(obj + " is not a processing instruction");
- }
-
-
- ////////////////////////////////////////////////////////////////////
- // Inner class: iterate over DOM nodes.
- ////////////////////////////////////////////////////////////////////
-
-
- // FIXME: needs to recurse into
- // DocumentFragment and EntityReference
- // to use their children.
-
- /**
- * A generic iterator over DOM nodes.
- *
- * <p>Concrete subclasses must implement the {@link #getFirstNode}
- * and {@link #getNextNode} methods for a specific iteration
- * strategy.</p>
- */
- abstract class NodeIterator
- implements Iterator
- {
-
-
- /**
- * Constructor.
- *
- * @param contextNode the starting node
- */
- public NodeIterator (Node contextNode)
- {
- node = getFirstNode(contextNode);
- while (!isXPathNode(node)) {
- node = getNextNode(node);
- }
- }
-
- public boolean hasNext ()
- {
- return (node != null);
- }
-
- public Object next ()
- {
- if (node == null) throw new NoSuchElementException();
- Node ret = node;
- node = getNextNode(node);
- while (!isXPathNode(node)) {
- node = getNextNode(node);
- }
- return ret;
- }
-
- public void remove ()
- {
- throw new UnsupportedOperationException();
- }
-
-
- /**
- * Get the first node for iteration.
- *
- * <p>This method must derive an initial node for iteration
- * from a context node.</p>
- *
- * @param contextNode the starting node
- * @return the first node in the iteration
- * @see #getNextNode
- */
- protected abstract Node getFirstNode (Node contextNode);
-
-
- /**
- * Get the next node for iteration.
- *
- * <p>This method must locate a following node from the
- * current context node.</p>
- *
- * @param contextNode the current node in the iteration
- * @return the following node in the iteration, or null
- * if there is none
- * @see #getFirstNode
- */
- protected abstract Node getNextNode (Node contextNode);
-
-
- /**
- * Test whether a DOM node is usable by XPath.
- *
- * @param node the DOM node to test
- * @return true if the node is usable, false if it should be skipped
- */
- private boolean isXPathNode (Node node)
- {
- // null is usable, because it means end
- if (node == null) return true;
-
- switch (node.getNodeType()) {
- case Node.DOCUMENT_FRAGMENT_NODE:
- case Node.DOCUMENT_TYPE_NODE:
- case Node.ENTITY_NODE:
- case Node.ENTITY_REFERENCE_NODE:
- case Node.NOTATION_NODE:
- return false;
- default:
- return true;
- }
- }
-
- private Node node;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Inner class: iterate over a DOM named node map.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * An iterator over an attribute list.
- */
- private static class AttributeIterator implements Iterator
- {
-
- /**
- * Constructor.
- *
- * @param parent the parent DOM element for the attributes.
- */
- AttributeIterator (Node parent)
- {
- this.map = parent.getAttributes();
- this.pos = 0;
- for (int i = this.map.getLength()-1; i >= 0; i--) {
- Node node = map.item(i);
- if (! "http://www.w3.org/2000/xmlns/".equals(node.getNamespaceURI())) {
- this.lastAttribute = i;
- break;
- }
- }
- }
-
- public boolean hasNext ()
- {
- return pos <= lastAttribute;
- }
-
- public Object next ()
- {
- Node attr = map.item(pos++);
- if (attr == null) throw new NoSuchElementException();
- else if ("http://www.w3.org/2000/xmlns/".equals(attr.getNamespaceURI())) {
- // XPath doesn't consider namespace declarations to be attributes
- // so skip it and go to the next one
- return next();
- }
- else return attr;
- }
-
- public void remove ()
- {
- throw new UnsupportedOperationException();
- }
-
-
- private NamedNodeMap map;
- private int pos;
- private int lastAttribute = -1;
-
- }
-
- /**
- * Returns the element whose ID is given by elementId.
- * If no such element exists, returns null.
- * Attributes with the name "ID" are not of type ID unless so defined.
- * Attribute types are only known if when the parser understands DTD's or
- * schemas that declare attributes of type ID. When JAXP is used, you
- * must call <code>setValidating(true)</code> on the
- * DocumentBuilderFactory.
- *
- * @param object a node from the document in which to look for the id
- * @param elementId id to look for
- *
- * @return element whose ID is given by elementId, or null if no such
- * element exists in the document or if the implementation
- * does not know about attribute types
- * @see javax.xml.parsers.DocumentBuilderFactory
- *
- * @throws ClassCastException if object is not an <code>org.w3c.dom.Node</code> object
- *
- */
- public Object getElementById(Object object, String elementId)
- {
- Document doc = (Document)getDocumentNode(object);
- if (doc != null) return doc.getElementById(elementId);
- else return null;
- }
-
-}
-
-// end of DocumentNavigator.java
diff --git a/src/java/main/org/jaxen/dom/NamespaceNode.java b/src/java/main/org/jaxen/dom/NamespaceNode.java
deleted file mode 100644
index 26f8f56..0000000
--- a/src/java/main/org/jaxen/dom/NamespaceNode.java
+++ /dev/null
@@ -1,867 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/dom/NamespaceNode.java,v 1.25 2006/07/03 11:14:05 elharo Exp $
- * $Revision: 1.25 $
- * $Date: 2006/07/03 11:14:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NamespaceNode.java,v 1.25 2006/07/03 11:14:05 elharo Exp $
- */
-
-////////////////////////////////////////////////////////////////////
-// Inner class for a Namespace node.
-////////////////////////////////////////////////////////////////////
-
-package org.jaxen.dom;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
-import org.jaxen.pattern.Pattern;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.UserDataHandler;
-
-
-/**
- * Extension DOM2/DOM3 node type for a namespace node.
- *
- * <p>This class implements the DOM2 and DOM3 {@link Node} interface
- * to allow namespace nodes to be included in the result
- * set of an XPath selectNodes operation, even though DOM does
- * not model namespaces in scope as separate nodes.</p>
- *
- * <p>
- * While all of the DOM2 methods are implemented with reasonable
- * defaults, there will be some unexpected surprises, so users are
- * advised to test for NamespaceNodes and filter them out from the
- * result sets as early as possible.
- * </p>
- *
- * <ol>
- *
- * <li>The {@link #getNodeType} method returns {@link #NAMESPACE_NODE},
- * which is not one of the usual DOM2 node types. Generic code may
- * fall unexpectedly out of switch statements, for example.</li>
- *
- * <li>The {@link #getOwnerDocument} method returns the owner document
- * of the parent node, but that owner document will know nothing about
- * the namespace node.</p>
- *
- * <li>The {@link #isSupported} method always returns false.</li>
- *
- * <li> The DOM3 methods sometimes throw UnsupportedOperationException.
- * They're here only to allow this class to be compiled with Java 1.5.
- * Do not call or rely on them.</li>
- * </ol>
- *
- * <p>All attempts to modify a <code>NamespaceNode</code> will fail with a {@link
- * DOMException} ({@link
- * DOMException#NO_MODIFICATION_ALLOWED_ERR}).</p>
- *
- * @author David Megginson
- * @author Elliotte Rusty Harold
- * @see DocumentNavigator
- */
-public class NamespaceNode implements Node
-{
-
- /**
- * Constant: this is a NamespaceNode.
- *
- * @see #getNodeType
- */
- public final static short NAMESPACE_NODE = Pattern.NAMESPACE_NODE;
-
- // FIXME "Note: Numeric codes up to 200 are reserved to W3C for possible future use."
- // We should be using higher codes. Here we're using 13, the same as DOM 3's type for XPathNamespace.
- // However, that's only a note not a recommendation.
-
- /**
- * Create a new NamespaceNode.
- *
- * @param parent the DOM node to which the namespace is attached
- * @param name the namespace prefix
- * @param value the namespace URI
- */
- public NamespaceNode (Node parent, String name, String value)
- {
- this.parent = parent;
- this.name = name;
- this.value = value;
- }
-
-
- /**
- * Constructor.
- *
- * @param parent the DOM node to which the namespace is attached
- * @param attribute the DOM attribute object containing the
- * namespace declaration
- */
- NamespaceNode (Node parent, Node attribute)
- {
- String attributeName = attribute.getNodeName();
-
- if (attributeName.equals("xmlns")) {
- this.name = "";
- }
- else if (attributeName.startsWith("xmlns:")) {
- this.name = attributeName.substring(6); // the part after "xmlns:"
- }
- else { // workaround for Crimson bug; Crimson incorrectly reports the prefix as the node name
- this.name = attributeName;
- }
- this.parent = parent;
- this.value = attribute.getNodeValue();
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.w3c.dom.Node.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Get the namespace prefix.
- *
- * @return the namespace prefix, or "" for the default namespace
- */
- public String getNodeName ()
- {
- return name;
- }
-
-
- /**
- * Get the namespace URI.
- *
- * @return the namespace URI
- */
- public String getNodeValue ()
- {
- return value;
- }
-
-
- /**
- * Change the namespace URI (always fails).
- *
- * @param value the new URI
- * @throws DOMException always
- */
- public void setNodeValue (String value) throws DOMException
- {
- disallowModification();
- }
-
-
- /**
- * Get the node type.
- *
- * @return always {@link #NAMESPACE_NODE}.
- */
- public short getNodeType ()
- {
- return NAMESPACE_NODE;
- }
-
-
- /**
- * Get the parent node.
- *
- * <p>This method returns the element that was queried for Namespaces
- * in effect, <em>not</em> necessarily the actual element containing
- * the Namespace declaration.</p>
- *
- * @return the parent node (not null)
- */
- public Node getParentNode ()
- {
- return parent;
- }
-
-
- /**
- * Get the list of child nodes.
- *
- * @return an empty node list
- */
- public NodeList getChildNodes ()
- {
- return new EmptyNodeList();
- }
-
-
- /**
- * Get the first child node.
- *
- * @return null
- */
- public Node getFirstChild ()
- {
- return null;
- }
-
-
- /**
- * Get the last child node.
- *
- * @return null
- */
- public Node getLastChild ()
- {
- return null;
- }
-
-
- /**
- * Get the previous sibling node.
- *
- * @return null
- */
- public Node getPreviousSibling ()
- {
- return null;
- }
-
-
- /**
- * Get the next sibling node.
- *
- * @return null
- */
- public Node getNextSibling ()
- {
- return null;
- }
-
-
- /**
- * Get the attribute nodes.
- *
- * @return null
- */
- public NamedNodeMap getAttributes ()
- {
- return null;
- }
-
-
- /**
- * Get the owner document.
- *
- * @return the owner document <em>of the parent node</em>
- */
- public Document getOwnerDocument ()
- {
- if (parent == null) return null;
- return parent.getOwnerDocument();
- }
-
-
- /**
- * Insert a new child node (always fails).
- *
- * @param newChild the node to add
- * @param refChild ignored
- * @return never
- * @throws DOMException always
- * @see Node#insertBefore
- */
- public Node insertBefore (Node newChild, Node refChild)
- throws DOMException
- {
- disallowModification();
- return null;
- }
-
-
- /**
- * Replace a child node (always fails).
- *
- * @param newChild the node to add
- * @param oldChild the child node to replace
- * @return never
- * @throws DOMException always
- * @see Node#replaceChild
- */
- public Node replaceChild (Node newChild, Node oldChild) throws DOMException
- {
- disallowModification();
- return null;
- }
-
-
- /**
- * Remove a child node (always fails).
- *
- * @param oldChild the child node to remove
- * @return never
- * @throws DOMException always
- * @see Node#removeChild
- */
- public Node removeChild(Node oldChild) throws DOMException
- {
- disallowModification();
- return null;
- }
-
-
- /**
- * Append a new child node (always fails).
- *
- * @param newChild the node to add
- * @return never
- * @throws DOMException always
- * @see Node#appendChild
- */
- public Node appendChild(Node newChild) throws DOMException
- {
- disallowModification();
- return null;
- }
-
-
- /**
- * Test for child nodes.
- *
- * @return false
- */
- public boolean hasChildNodes()
- {
- return false;
- }
-
-
- /**
- * Create a copy of this node.
- *
- * @param deep make a deep copy (no effect, since namespace nodes
- * don't have children).
- * @return a new copy of this namespace node
- */
- public Node cloneNode (boolean deep)
- {
- return new NamespaceNode(parent, name, value);
- }
-
-
- /**
- * Normalize the text descendants of this node.
- *
- * <p>This method has no effect, since namespace nodes have no
- * descendants.</p>
- */
- public void normalize ()
- {
- // no op
- }
-
-
- /**
- * Test if a DOM2 feature is supported. (None are.)
- *
- * @param feature the feature name
- * @param version the feature version
- * @return false
- */
- public boolean isSupported(String feature, String version)
- {
- return false;
- }
-
-
- /**
- * Get the namespace URI of this node.
- *
- * <p>Namespace declarations are not themselves
- * Namespace-qualified.</p>
- *
- * @return null
- */
- public String getNamespaceURI()
- {
- return null;
- }
-
-
- /**
- * Get the namespace prefix of this node.
- *
- * <p>Namespace declarations are not themselves
- * namespace-qualified.</p>
- *
- * @return null
- * @see #getLocalName
- */
- public String getPrefix()
- {
- return null;
- }
-
-
- /**
- * Change the namespace prefix of this node (always fails).
- *
- * @param prefix the new prefix
- * @throws DOMException always thrown
- */
- public void setPrefix(String prefix)
- throws DOMException
- {
- disallowModification();
- }
-
-
- /**
- * Get the XPath name of the namespace node;; i.e. the
- * namespace prefix.
- *
- * @return the namespace prefix
- */
- public String getLocalName ()
- {
- return name;
- }
-
-
- /**
- * Test if this node has attributes.
- *
- * @return false
- */
- public boolean hasAttributes ()
- {
- return false;
- }
-
-
- /**
- * Throw a NO_MODIFICATION_ALLOWED_ERR DOMException.
- *
- * @throws DOMException always thrown
- */
- private void disallowModification () throws DOMException
- {
- throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
- "Namespace node may not be modified");
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Override default methods from java.lang.Object.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Generate a hash code for a namespace node.
- *
- * @return a hash code for this node
- */
- public int hashCode ()
- {
- return hashCode(parent) + hashCode(name) + hashCode(value);
- }
-
-
- /**
- * Test for equivalence with another object.
- *
- * <p>Two Namespace nodes are considered equivalent if their parents,
- * names, and values are equal.</p>
- *
- * @param o the object to test for equality
- * @return true if the object is equivalent to this node, false
- * otherwise
- */
- public boolean equals (Object o)
- {
- if (o == this) return true;
- else if (o == null) return false;
- else if (o instanceof NamespaceNode) {
- NamespaceNode ns = (NamespaceNode)o;
- return (equals(parent, ns.getParentNode()) &&
- equals(name, ns.getNodeName()) &&
- equals(value, ns.getNodeValue()));
- } else {
- return false;
- }
- }
-
-
- /**
- * Helper method for generating a hash code.
- *
- * @param o the object for generating a hash code (possibly null)
- * @return the object's hash code, or 0 if the object is null
- * @see java.lang.Object#hashCode
- */
- private int hashCode (Object o)
- {
- return (o == null ? 0 : o.hashCode());
- }
-
-
- /**
- * Helper method for comparing two objects.
- *
- * @param a the first object to compare (possibly null)
- * @param b the second object to compare (possibly null)
- * @return true if the objects are equivalent or are both null
- * @see java.lang.Object#equals
- */
- private boolean equals (Object a, Object b)
- {
- return ((a == null && b == null) ||
- (a != null && a.equals(b)));
- }
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- private Node parent;
- private String name;
- private String value;
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Inner class: empty node list.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * A node list with no members.
- *
- * <p>This class is necessary for the {@link Node#getChildNodes}
- * method, which must return an empty node list rather than
- * null when there are no children.</p>
- */
- private static class EmptyNodeList implements NodeList
- {
-
- /**
- * @see NodeList#getLength
- */
- public int getLength ()
- {
- return 0;
- }
-
-
- /**
- * @see NodeList#item
- */
- public Node item(int index)
- {
- return null;
- }
-
- }
-
- ////////////////////////////////////////////////////////////////////
- // DOM Level 3 methods
- ////////////////////////////////////////////////////////////////////
-
- /**
- * Return the base URI of the document containing this node.
- * This only works in DOM 3.
- *
- * @return null
- */
- public String getBaseURI() {
- Class clazz = Node.class;
- try {
- Class[] args = new Class[0];
- Method getBaseURI = clazz.getMethod("getBaseURI", args);
- String base = (String) getBaseURI.invoke(this.getParentNode(), args);
- return base;
- }
- catch (Exception ex) {
- return null;
- }
- }
-
-
- /**
- * Compare relative position of this node to another nbode. (Always fails).
- * This method is included solely for compatibility with the superclass.
- *
- * @param other the node to compare to
- *
- * @return never
- * @throws DOMException NOT_SUPPORTED_ERR
- */
- public short compareDocumentPosition(Node other) throws DOMException {
- DOMException ex = new DOMException(
- DOMException.NOT_SUPPORTED_ERR,
- "DOM level 3 interfaces are not fully implemented in Jaxen's NamespaceNode class"
- );
- throw ex;
- }
-
-
- /**
- * Return the namespace URI.
- *
- * @return the namespace URI
- * @see #getNodeValue
- */
- public String getTextContent() {
- return value;
- }
-
-
- /**
- * Change the value of this node (always fails).
- * This method is included solely for compatibility with the superclass.
- *
- * @param textContent the new content
- * @throws DOMException always
- */
- public void setTextContent(String textContent) throws DOMException {
- disallowModification();
- }
-
-
- /**
- * Returns true if and only if this object represents the same XPath namespace node
- * as the argument; that is, they have the same parent, the same prefix, and the
- * same URI.
- *
- * @param other the node to compare to
- * @return true if this object represents the same XPath namespace node
- * as other; false otherwise
- */
- public boolean isSameNode(Node other) {
- boolean a = this.isEqualNode(other);
- // a bit flaky (should really be
- // this.getParentNode().isEqual(other.getParentNode())
- // but we want this to compile in Java 1.4 without problems
- // Note that this will mess up code coverage since you can't cover both
- // branches in the same VM
- boolean b;
- Node thisParent = this.getParentNode();
- Node thatParent = other.getParentNode();
- try {
- Class clazz = Node.class;
- Class[] args = {clazz};
- Method isEqual = clazz.getMethod("isEqual", args);
- Object[] args2 = new Object[1];
- args2[0] = thatParent;
- Boolean result = (Boolean) isEqual.invoke(thisParent, args2);
- b = result.booleanValue();
- }
- catch (NoSuchMethodException ex) {
- b = thisParent.equals(thatParent);
- }
- catch (InvocationTargetException ex) {
- b = thisParent.equals(thatParent);
- }
- catch (IllegalAccessException ex) {
- b = thisParent.equals(thatParent);
- }
-
- return a && b;
-
- }
-
-
- /**
- * Return the prefix bound to this namespace URI within the scope
- * of this node.
- *
- * @param namespaceURI the URI to find a prefix binding for
- *
- * @return a prefix matching this namespace URI
- * @throws UnsupportedOperationException in DOM 2
- */
- public String lookupPrefix(String namespaceURI) {
- // This could be fully implemented even in Java 1.4. See
- // http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/namespaces-algorithms.html#lookupNamespaceURIAlgo
- // It hardly seems worth the effort though.
-
- try {
- Class clazz = Node.class;
- Class[] argTypes = {String.class};
- Method lookupPrefix = clazz.getMethod("lookupPrefix", argTypes);
- String[] args = {namespaceURI};
- String result = (String) lookupPrefix.invoke(parent, args);
- return result;
- }
- catch (NoSuchMethodException ex) {
- throw new UnsupportedOperationException("Cannot lookup prefixes in DOM 2");
- }
- catch (InvocationTargetException ex) {
- throw new UnsupportedOperationException("Cannot lookup prefixes in DOM 2");
- }
- catch (IllegalAccessException ex) {
- throw new UnsupportedOperationException("Cannot lookup prefixes in DOM 2");
- }
-
- }
-
-
- /**
- * Return true if the specified URI is the default namespace in
- * scope (always fails). This method is included solely for
- * compatibility with the superclass.
- *
- * @param namespaceURI the URI to check
- *
- * @return never
- * @throws UnsupportedOperationException always
- */
- public boolean isDefaultNamespace(String namespaceURI) {
- return namespaceURI.equals(this.lookupNamespaceURI(null));
- }
-
-
- /**
- * Return the namespace URI mapped to the specified
- * prefix within the scope of this namespace node.
- *
- * @param prefix the prefix to search for
- *
- * @return the namespace URI mapped to this prefix
- * @throws UnsupportedOperationException in DOM 2
- */
- public String lookupNamespaceURI(String prefix) {
- // This could be fully implemented even in Java 1.4. See
- // http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/namespaces-algorithms.html#lookupNamespaceURIAlgo
- // It hardly seems worth the effort though.
-
- try {
- Class clazz = Node.class;
- Class[] argTypes = {String.class};
- Method lookupNamespaceURI = clazz.getMethod("lookupNamespaceURI", argTypes);
- String[] args = {prefix};
- String result = (String) lookupNamespaceURI.invoke(parent, args);
- return result;
- }
- catch (NoSuchMethodException ex) {
- throw new UnsupportedOperationException("Cannot lookup namespace URIs in DOM 2");
- }
- catch (InvocationTargetException ex) {
- throw new UnsupportedOperationException("Cannot lookup namespace URIs in DOM 2");
- }
- catch (IllegalAccessException ex) {
- throw new UnsupportedOperationException("Cannot lookup namespace URIs in DOM 2");
- }
- }
-
-
- /**
- * Returns true if this object binds the same prefix to the same URI.
- * That is, this object has the same prefix and URI as the argument.
- *
- * @param arg the node to compare to
- * @return true if this object has the same prefix and URI as the argument; false otherwise
- */
- public boolean isEqualNode(Node arg) {
- if (arg.getNodeType() == this.getNodeType()) {
- NamespaceNode other = (NamespaceNode) arg;
- if (other.name == null && this.name != null) return false;
- else if (other.name != null && this.name == null) return false;
- else if (other.value == null && this.value != null) return false;
- else if (other.value != null && this.value == null) return false;
- else if (other.name == null && this.name == null) {
- return other.value.equals(this.value);
- }
-
- return other.name.equals(this.name) && other.value.equals(this.value);
- }
- return false;
- }
-
-
- /**
- * Returns the value of the requested feature. Always returns null.
- *
- * @return null
- */
- public Object getFeature(String feature, String version) {
- return null;
- }
-
-
- // XXX userdata needs testing
- private HashMap userData = new HashMap();
-
- /**
- * Associates an object with a key.
- *
- * @param key the key by which the data will be retrieved
- * @param data the object to store with the key
- * @param handler ignored since namespace nodes cannot be imported, cloned, or renamed
- *
- * @return the value previously associated with this key; or null
- * if there isn't any such previous value
- */
- public Object setUserData(String key, Object data, UserDataHandler handler) {
- Object oldValue = getUserData(key);
- userData.put(key, data);
- return oldValue;
- }
-
-
- /**
- * Returns the user data associated with the given key.
- *
- * @param key the lookup key
- *
- * @return the object associated with the key; or null if no such object is available
- */
- public Object getUserData(String key) {
- return userData.get(key);
- }
-
-}
-
-// end of NamespaceNode.java
diff --git a/src/java/main/org/jaxen/dom/package.html b/src/java/main/org/jaxen/dom/package.html
deleted file mode 100644
index 6c68750..0000000
--- a/src/java/main/org/jaxen/dom/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.dom.*
- </title>
- </head>
-
- <body>
- <p>
- Navigation for <a href="http://www.w3.org/DOM/">W3C DOM</a> trees.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/dom4j/DocumentNavigator.java b/src/java/main/org/jaxen/dom4j/DocumentNavigator.java
deleted file mode 100644
index edff3c5..0000000
--- a/src/java/main/org/jaxen/dom4j/DocumentNavigator.java
+++ /dev/null
@@ -1,501 +0,0 @@
-package org.jaxen.dom4j;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/dom4j/DocumentNavigator.java,v 1.33 2006/07/03 13:17:30 elharo Exp $
- * $Revision: 1.33 $
- * $Date: 2006/07/03 13:17:30 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DocumentNavigator.java,v 1.33 2006/07/03 13:17:30 elharo Exp $
-*/
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.dom4j.Attribute;
-import org.dom4j.Branch;
-import org.dom4j.CDATA;
-import org.dom4j.Comment;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.Node;
-import org.dom4j.ProcessingInstruction;
-import org.dom4j.QName;
-import org.dom4j.Text;
-import org.dom4j.io.SAXReader;
-import org.jaxen.DefaultNavigator;
-import org.jaxen.FunctionCallException;
-import org.jaxen.NamedAccessNavigator;
-import org.jaxen.Navigator;
-import org.jaxen.XPath;
-import org.jaxen.JaxenConstants;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.util.SingleObjectIterator;
-
-/**
- * Interface for navigating around the DOM4J object model.
- *
- * <p>
- * This class is not intended for direct usage, but is
- * used by the Jaxen engine during evaluation.
- * </p>
- *
- * @see XPath
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author Stephen Colebourne
- */
-public class DocumentNavigator extends DefaultNavigator implements NamedAccessNavigator
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 5582300797286535936L;
- private transient SAXReader reader;
-
- /** Singleton implementation.
- */
- private static class Singleton
- {
- /** Singleton instance.
- */
- private static DocumentNavigator instance = new DocumentNavigator();
- }
-
- /** Retrieve the singleton instance of this <code>DocumentNavigator</code>.
- */
- public static Navigator getInstance()
- {
- return Singleton.instance;
- }
-
- public boolean isElement(Object obj)
- {
- return obj instanceof Element;
- }
-
- public boolean isComment(Object obj)
- {
- return obj instanceof Comment;
- }
-
- public boolean isText(Object obj)
- {
- return ( obj instanceof Text
- ||
- obj instanceof CDATA );
- }
-
- public boolean isAttribute(Object obj)
- {
- return obj instanceof Attribute;
- }
-
- public boolean isProcessingInstruction(Object obj)
- {
- return obj instanceof ProcessingInstruction;
- }
-
- public boolean isDocument(Object obj)
- {
- return obj instanceof Document;
- }
-
- public boolean isNamespace(Object obj)
- {
- return obj instanceof Namespace;
- }
-
- public String getElementName(Object obj)
- {
- Element elem = (Element) obj;
-
- return elem.getName();
- }
-
- public String getElementNamespaceUri(Object obj)
- {
- Element elem = (Element) obj;
-
- String uri = elem.getNamespaceURI();
- if ( uri == null)
- return "";
- else
- return uri;
- }
-
- public String getElementQName(Object obj)
- {
- Element elem = (Element) obj;
-
- return elem.getQualifiedName();
- }
-
- public String getAttributeName(Object obj)
- {
- Attribute attr = (Attribute) obj;
-
- return attr.getName();
- }
-
- public String getAttributeNamespaceUri(Object obj)
- {
- Attribute attr = (Attribute) obj;
-
- String uri = attr.getNamespaceURI();
- if ( uri == null)
- return "";
- else
- return uri;
- }
-
- public String getAttributeQName(Object obj)
- {
- Attribute attr = (Attribute) obj;
-
- return attr.getQualifiedName();
- }
-
- public Iterator getChildAxisIterator(Object contextNode)
- {
- Iterator result = null;
- if ( contextNode instanceof Branch )
- {
- Branch node = (Branch) contextNode;
- result = node.nodeIterator();
- }
- if (result != null) {
- return result;
- }
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- /**
- * Retrieves an <code>Iterator</code> over the child elements that
- * match the supplied name.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the children to return, always present
- * @param namespacePrefix the prefix of the namespace of the children to return
- * @param namespaceURI the uri of the namespace of the children to return
- *
- * @return an Iterator that traverses the named children, or null if none
- */
- public Iterator getChildAxisIterator(
- Object contextNode, String localName, String namespacePrefix, String namespaceURI) {
-
- if ( contextNode instanceof Element ) {
- Element node = (Element) contextNode;
- return node.elementIterator(QName.get(localName, namespacePrefix, namespaceURI));
- }
- if ( contextNode instanceof Document ) {
- Document node = (Document) contextNode;
- Element el = node.getRootElement();
- if (el == null || el.getName().equals(localName) == false) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- if (namespaceURI != null) {
- if (namespaceURI.equals(el.getNamespaceURI()) == false) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- }
- return new SingleObjectIterator(el);
- }
-
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getParentAxisIterator(Object contextNode)
- {
- if ( contextNode instanceof Document )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- Node node = (Node) contextNode;
-
- Object parent = node.getParent();
-
- if ( parent == null )
- {
- parent = node.getDocument();
- }
-
- return new SingleObjectIterator( parent );
- }
-
- public Iterator getAttributeAxisIterator(Object contextNode)
- {
- if ( ! ( contextNode instanceof Element ) )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- Element elem = (Element) contextNode;
-
- return elem.attributeIterator();
- }
-
- /**
- * Retrieves an <code>Iterator</code> over the attribute elements that
- * match the supplied name.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the attributes to return, always present
- * @param namespacePrefix the prefix of the namespace of the attributes to return
- * @param namespaceURI the URI of the namespace of the attributes to return
- * @return an Iterator that traverses the named attributes, not null
- */
- public Iterator getAttributeAxisIterator(
- Object contextNode, String localName, String namespacePrefix, String namespaceURI) {
-
- if ( contextNode instanceof Element ) {
- Element node = (Element) contextNode;
- Attribute attr = node.attribute(QName.get(localName, namespacePrefix, namespaceURI));
- if (attr == null) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- return new SingleObjectIterator(attr);
- }
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getNamespaceAxisIterator(Object contextNode)
- {
- if ( ! ( contextNode instanceof Element ) )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- Element element = (Element) contextNode;
- List nsList = new ArrayList();
- HashSet prefixes = new HashSet();
- for ( Element context = element; context != null; context = context.getParent() ) {
- List declaredNS = new ArrayList(context.declaredNamespaces());
- declaredNS.add(context.getNamespace());
-
- for ( Iterator iter = context.attributes().iterator(); iter.hasNext(); )
- {
- Attribute attr = (Attribute) iter.next();
- declaredNS.add(attr.getNamespace());
- }
-
- for ( Iterator iter = declaredNS.iterator(); iter.hasNext(); )
- {
- Namespace namespace = (Namespace) iter.next();
- if (namespace != Namespace.NO_NAMESPACE)
- {
- String prefix = namespace.getPrefix();
- if ( ! prefixes.contains( prefix ) ) {
- prefixes.add( prefix );
- nsList.add( namespace.asXPathResult( element ) );
- }
- }
- }
- }
- nsList.add( Namespace.XML_NAMESPACE.asXPathResult( element ) );
- return nsList.iterator();
- }
-
- public Object getDocumentNode(Object contextNode)
- {
- if ( contextNode instanceof Document )
- {
- return contextNode;
- }
- else if ( contextNode instanceof Node )
- {
- Node node = (Node) contextNode;
- return node.getDocument();
- }
- return null;
- }
-
- /** Returns a parsed form of the given XPath string, which will be suitable
- * for queries on DOM4J documents.
- */
- public XPath parseXPath (String xpath) throws SAXPathException
- {
- return new Dom4jXPath(xpath);
- }
-
- public Object getParentNode(Object contextNode)
- {
- if ( contextNode instanceof Node )
- {
- Node node = (Node) contextNode;
- Object answer = node.getParent();
- if ( answer == null )
- {
- answer = node.getDocument();
- if (answer == contextNode) {
- return null;
- }
- }
- return answer;
- }
- return null;
- }
-
- public String getTextStringValue(Object obj)
- {
- return getNodeStringValue( (Node) obj );
- }
-
- public String getElementStringValue(Object obj)
- {
- return getNodeStringValue( (Node) obj );
- }
-
- public String getAttributeStringValue(Object obj)
- {
- return getNodeStringValue( (Node) obj );
- }
-
- private String getNodeStringValue(Node node)
- {
- return node.getStringValue();
- }
-
- public String getNamespaceStringValue(Object obj)
- {
- Namespace ns = (Namespace) obj;
-
- return ns.getURI();
- }
-
- public String getNamespacePrefix(Object obj)
- {
- Namespace ns = (Namespace) obj;
-
- return ns.getPrefix();
- }
-
- public String getCommentStringValue(Object obj)
- {
- Comment cmt = (Comment) obj;
-
- return cmt.getText();
- }
-
- public String translateNamespacePrefixToUri(String prefix, Object context)
- {
- Element element = null;
- if ( context instanceof Element )
- {
- element = (Element) context;
- }
- else if ( context instanceof Node )
- {
- Node node = (Node) context;
- element = node.getParent();
- }
- if ( element != null )
- {
- Namespace namespace = element.getNamespaceForPrefix( prefix );
-
- if ( namespace != null )
- {
- return namespace.getURI();
- }
- }
- return null;
- }
-
- public short getNodeType(Object node)
- {
- if ( node instanceof Node )
- {
- return ((Node) node).getNodeType();
- }
- return 0;
- }
-
- public Object getDocument(String uri) throws FunctionCallException
- {
- try
- {
- return getSAXReader().read( uri );
- }
- catch (DocumentException e)
- {
- throw new FunctionCallException("Failed to parse document for URI: " + uri, e);
- }
- }
-
- public String getProcessingInstructionTarget(Object obj)
- {
- ProcessingInstruction pi = (ProcessingInstruction) obj;
-
- return pi.getTarget();
- }
-
- public String getProcessingInstructionData(Object obj)
- {
- ProcessingInstruction pi = (ProcessingInstruction) obj;
-
- return pi.getText();
- }
-
- // Properties
- //-------------------------------------------------------------------------
- public SAXReader getSAXReader()
- {
- if ( reader == null )
- {
- reader = new SAXReader();
- reader.setMergeAdjacentText( true );
- }
- return reader;
- }
-
- public void setSAXReader(SAXReader reader)
- {
- this.reader = reader;
- }
-
-}
diff --git a/src/java/main/org/jaxen/dom4j/Dom4jXPath.java b/src/java/main/org/jaxen/dom4j/Dom4jXPath.java
deleted file mode 100644
index 7690e1a..0000000
--- a/src/java/main/org/jaxen/dom4j/Dom4jXPath.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/dom4j/Dom4jXPath.java,v 1.8 2006/06/03 20:44:53 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/06/03 20:44:53 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Dom4jXPath.java,v 1.8 2006/06/03 20:44:53 elharo Exp $
- */
-
-
-
-package org.jaxen.dom4j;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenException;
-
-/** An XPath implementation for the dom4j model
- *
- * <p>This is the main entry point for matching an XPath against a DOM
- * tree. You create a compiled XPath object, then match it against
- * one or more context nodes using the {@link #selectNodes(Object)}
- * method, as in the following example:</p>
- *
- * <pre>
- * Node node = ...;
- * XPath path = new Dom4jXPath("a/b/c");
- * List results = path.selectNodes(node);
- * </pre>
- *
- * @see BaseXPath
- * @see <a href="http://dom4j.org/">The dom4j website</a>
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstachan at apache.org">James Strachan</a>
- *
- * @version $Revision: 1.8 $
- */
-public class Dom4jXPath extends BaseXPath
-{
- /**
- *
- */
- private static final long serialVersionUID = -75510941087659775L;
-
- /** Construct given an XPath expression string.
- *
- * @param xpathExpr the XPath expression
- *
- * @throws JaxenException if there is a syntax error while
- * parsing the expression
- */
- public Dom4jXPath(String xpathExpr) throws JaxenException
- {
- super( xpathExpr, DocumentNavigator.getInstance() );
- }
-}
diff --git a/src/java/main/org/jaxen/dom4j/package.html b/src/java/main/org/jaxen/dom4j/package.html
deleted file mode 100644
index 123ff56..0000000
--- a/src/java/main/org/jaxen/dom4j/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.dom4j.*
- </title>
- </head>
-
- <body>
- <p>
- Navigation for <a href="http://dom4j.org">dom4j</a> trees.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/expr/AdditiveExpr.java b/src/java/main/org/jaxen/expr/AdditiveExpr.java
deleted file mode 100644
index 6e2072d..0000000
--- a/src/java/main/org/jaxen/expr/AdditiveExpr.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/AdditiveExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/09 16:21:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: AdditiveExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents an XPath additive expression. This is production 25 in the
- * <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr">XPath 1.0 specification</a>:
- *
- * <table><tr valign="baseline"><td><a name="NT-AdditiveExpr"></a>[25] </td><td>AdditiveExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr#NT-MultiplicativeExpr">MultiplicativeExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr">AdditiveExpr</a> '+' <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr#NT-MultiplicativeExpr">MultiplicativeExpr</a></td><td></td>
- * </tr>
- *
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr#NT-AdditiveExpr">AdditiveExpr</a> '-' <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr#NT-MultiplicativeExpr">MultiplicativeExpr</a>
- * </tr></table>
- *
- */
-public interface AdditiveExpr extends BinaryExpr
-{
-}
diff --git a/src/java/main/org/jaxen/expr/AllNodeStep.java b/src/java/main/org/jaxen/expr/AllNodeStep.java
deleted file mode 100644
index 3bebb17..0000000
--- a/src/java/main/org/jaxen/expr/AllNodeStep.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/AllNodeStep.java,v 1.6 2006/11/08 15:41:05 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/08 15:41:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: AllNodeStep.java,v 1.6 2006/11/08 15:41:05 elharo Exp $
- */
-package org.jaxen.expr;
-
-
-/**
- * Represents the XPath node-test <code>node()</code>.
- *
- */
-public interface AllNodeStep extends Step
-{
-}
diff --git a/src/java/main/org/jaxen/expr/BinaryExpr.java b/src/java/main/org/jaxen/expr/BinaryExpr.java
deleted file mode 100644
index acf9ce4..0000000
--- a/src/java/main/org/jaxen/expr/BinaryExpr.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/BinaryExpr.java,v 1.8 2006/11/09 16:21:04 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/11/09 16:21:04 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: BinaryExpr.java,v 1.8 2006/11/09 16:21:04 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-
-/**
- * Represents a binary expression.
- * This does not match anything in the XPath 1.0 grammar, but in Jaxen
- * it includes the usual binary operations such as addition, multiplication,
- * logical and, logical or, and so forth.
- *
- */
-public interface BinaryExpr extends Expr
-{
-
- /**
- * Returns the left-hand side of the binary expression.
- *
- * @return the left hand side expression
- */
- Expr getLHS();
-
-
- /**
- * Returns the right-hand side of the binary expression.
- *
- * @return the right-hand side expression
- */
- Expr getRHS();
-
- /**
- * Returns the operator for the binary expression such as "+" or
- * "div".
- *
- * @return the operator for the expression
- */
- String getOperator();
-
-}
diff --git a/src/java/main/org/jaxen/expr/CommentNodeStep.java b/src/java/main/org/jaxen/expr/CommentNodeStep.java
deleted file mode 100644
index facc822..0000000
--- a/src/java/main/org/jaxen/expr/CommentNodeStep.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/CommentNodeStep.java,v 1.6 2006/11/08 15:42:39 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/08 15:42:39 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: CommentNodeStep.java,v 1.6 2006/11/08 15:42:39 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents the XPath node-test <code>comment()</code>.
- *
- */
-public interface CommentNodeStep extends Step
-{
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultAbsoluteLocationPath.java b/src/java/main/org/jaxen/expr/DefaultAbsoluteLocationPath.java
deleted file mode 100644
index d1e04a5..0000000
--- a/src/java/main/org/jaxen/expr/DefaultAbsoluteLocationPath.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultAbsoluteLocationPath.java,v 1.18 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.18 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultAbsoluteLocationPath.java,v 1.18 2006/11/30 18:49:27 elharo Exp $
- */
-package org.jaxen.expr;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.util.SingletonList;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultAbsoluteLocationPath extends DefaultLocationPath
-{
- /**
- *
- */
- private static final long serialVersionUID = 2174836928310146874L;
-
- public DefaultAbsoluteLocationPath()
- {
- }
-
- public String toString()
- {
- return "[(DefaultAbsoluteLocationPath): " + super.toString() + "]";
- }
-
- public boolean isAbsolute()
- {
- return true;
- }
-
- public String getText()
- {
- return "/" + super.getText();
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- ContextSupport support = context.getContextSupport();
- Navigator nav = support.getNavigator();
- Context absContext = new Context( support );
- List contextNodes = context.getNodeSet();
-
- if ( contextNodes.isEmpty() )
- {
- return Collections.EMPTY_LIST;
- }
-
- Object firstNode = contextNodes.get( 0 );
- Object docNode = nav.getDocumentNode( firstNode );
-
- if ( docNode == null )
- {
- return Collections.EMPTY_LIST;
- }
-
- List list = new SingletonList(docNode);
-
- absContext.setNodeSet( list );
-
- return super.evaluate( absContext );
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/expr/DefaultAdditiveExpr.java b/src/java/main/org/jaxen/expr/DefaultAdditiveExpr.java
deleted file mode 100644
index 37aa478..0000000
--- a/src/java/main/org/jaxen/expr/DefaultAdditiveExpr.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultAdditiveExpr.java,v 1.9 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultAdditiveExpr.java,v 1.9 2006/02/05 21:47:40 elharo Exp $
- */
-package org.jaxen.expr;
-
-abstract class DefaultAdditiveExpr extends DefaultArithExpr implements AdditiveExpr
-{
- DefaultAdditiveExpr( Expr lhs,
- Expr rhs )
- {
- super( lhs,
- rhs );
- }
-
- public String toString()
- {
- return "[(" + getClass().getName() + "): " + getLHS() + ", " + getRHS() + "]";
- }
-}
-
diff --git a/src/java/main/org/jaxen/expr/DefaultAllNodeStep.java b/src/java/main/org/jaxen/expr/DefaultAllNodeStep.java
deleted file mode 100644
index 577d7d7..0000000
--- a/src/java/main/org/jaxen/expr/DefaultAllNodeStep.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultAllNodeStep.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultAllNodeStep.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.expr.iter.IterableAxis;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultAllNodeStep extends DefaultStep implements AllNodeStep
-{
- /**
- *
- */
- private static final long serialVersionUID = 292886316770123856L;
-
- public DefaultAllNodeStep(IterableAxis axis, PredicateSet predicateSet)
- {
- super( axis, predicateSet );
- }
-
- public String toString()
- {
- return "[(DefaultAllNodeStep): " + getAxisName() + "]";
- }
-
- public String getText()
- {
- return getAxisName() + "::node()" + super.getText();
- }
-
- public boolean matches(Object node,
- ContextSupport contextSupport)
- {
- return true;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultAndExpr.java b/src/java/main/org/jaxen/expr/DefaultAndExpr.java
deleted file mode 100644
index f656554..0000000
--- a/src/java/main/org/jaxen/expr/DefaultAndExpr.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultAndExpr.java,v 1.16 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.16 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultAndExpr.java,v 1.16 2006/11/30 18:49:27 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.function.BooleanFunction;
-
-class DefaultAndExpr extends DefaultLogicalExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = -5237984010263103742L;
-
- DefaultAndExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "and";
- }
-
- public String toString()
- {
- return "[(DefaultAndExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- Navigator nav = context.getNavigator();
- Boolean lhsValue = BooleanFunction.evaluate( getLHS().evaluate( context ), nav );
-
- if ( !lhsValue.booleanValue() )
- {
- return Boolean.FALSE;
- }
-
- // Short circuits are required in XPath. "The right operand is not
- // evaluated if the left operand evaluates to false."
- Boolean rhsValue = BooleanFunction.evaluate( getRHS().evaluate( context ), nav );
-
- if ( !rhsValue.booleanValue() )
- {
- return Boolean.FALSE;
- }
-
- return Boolean.TRUE;
- }
-
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultArithExpr.java b/src/java/main/org/jaxen/expr/DefaultArithExpr.java
deleted file mode 100644
index e3f42bb..0000000
--- a/src/java/main/org/jaxen/expr/DefaultArithExpr.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultArithExpr.java,v 1.10 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultArithExpr.java,v 1.10 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-abstract class DefaultArithExpr extends DefaultBinaryExpr
-{
- DefaultArithExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String toString()
- {
- return "[(DefaultArithExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultBinaryExpr.java b/src/java/main/org/jaxen/expr/DefaultBinaryExpr.java
deleted file mode 100644
index 9676bc3..0000000
--- a/src/java/main/org/jaxen/expr/DefaultBinaryExpr.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultBinaryExpr.java,v 1.10 2007/01/05 18:25:43 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2007/01/05 18:25:43 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultBinaryExpr.java,v 1.10 2007/01/05 18:25:43 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-abstract class DefaultBinaryExpr extends DefaultExpr implements BinaryExpr
-{
- private Expr lhs;
- private Expr rhs;
-
- DefaultBinaryExpr(Expr lhs, Expr rhs)
- {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- public Expr getLHS()
- {
- return this.lhs;
- }
-
- public Expr getRHS()
- {
- return this.rhs;
- }
-
- public void setLHS(Expr lhs)
- {
- this.lhs = lhs;
- }
-
- public void setRHS(Expr rhs)
- {
- this.rhs = rhs;
- }
-
- public abstract String getOperator();
-
- public String getText()
- {
- return "(" + getLHS().getText() + " " + getOperator() + " " + getRHS().getText() +")";
- }
-
- public String toString()
- {
- return "[" + getClass().getName() + ": " + getLHS() + ", " + getRHS() + "]";
- }
-
- public Expr simplify()
- {
- setLHS( getLHS().simplify() );
- setRHS( getRHS().simplify() );
-
- return this;
- }
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultCommentNodeStep.java b/src/java/main/org/jaxen/expr/DefaultCommentNodeStep.java
deleted file mode 100644
index 43b8a11..0000000
--- a/src/java/main/org/jaxen/expr/DefaultCommentNodeStep.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultCommentNodeStep.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultCommentNodeStep.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.Navigator;
-import org.jaxen.expr.iter.IterableAxis;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultCommentNodeStep extends DefaultStep implements CommentNodeStep
-{
- /**
- *
- */
- private static final long serialVersionUID = 4340788283861875606L;
- public DefaultCommentNodeStep(IterableAxis axis, PredicateSet predicateSet)
- {
- super( axis, predicateSet );
- }
-
- public String toString()
- {
- return "[(DefaultCommentNodeStep): " + getAxis() + "]";
- }
-
- public String getText()
- {
- return getAxisName() + "::comment()";
- }
-
- public boolean matches(Object node,
- ContextSupport contextSupport)
- {
- Navigator nav = contextSupport.getNavigator();
-
- return nav.isComment( node );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultDivExpr.java b/src/java/main/org/jaxen/expr/DefaultDivExpr.java
deleted file mode 100644
index 1541032..0000000
--- a/src/java/main/org/jaxen/expr/DefaultDivExpr.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultDivExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultDivExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.function.NumberFunction;
-
-class DefaultDivExpr extends DefaultMultiplicativeExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 6318739386201615441L;
-
- DefaultDivExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "div";
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- Number lhsValue = NumberFunction.evaluate( getLHS().evaluate( context ),
- context.getNavigator() );
- Number rhsValue = NumberFunction.evaluate( getRHS().evaluate( context ),
- context.getNavigator() );
-
- double result = lhsValue.doubleValue() / rhsValue.doubleValue();
-
- return new Double( result );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultEqualityExpr.java b/src/java/main/org/jaxen/expr/DefaultEqualityExpr.java
deleted file mode 100644
index 398278b..0000000
--- a/src/java/main/org/jaxen/expr/DefaultEqualityExpr.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultEqualityExpr.java,v 1.14 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultEqualityExpr.java,v 1.14 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.util.Iterator;
-import java.util.List;
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.function.BooleanFunction;
-import org.jaxen.function.NumberFunction;
-import org.jaxen.function.StringFunction;
-
-abstract class DefaultEqualityExpr extends DefaultTruthExpr implements EqualityExpr
- {
- DefaultEqualityExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String toString()
- {
- return "[(DefaultEqualityExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- public Object evaluate( Context context ) throws JaxenException
- {
- Object lhsValue = getLHS().evaluate( context );
- Object rhsValue = getRHS().evaluate( context );
-
- if( lhsValue == null || rhsValue == null )
- {
- return Boolean.FALSE;
- }
-
- Navigator nav = context.getNavigator();
-
- if( bothAreSets( lhsValue, rhsValue ) )
- {
- return evaluateSetSet( (List) lhsValue, (List) rhsValue, nav );
- }
- else if ( eitherIsSet( lhsValue, rhsValue ) )
- {
- if ( isSet( lhsValue ) )
- {
- return evaluateSetSet( (List) lhsValue, convertToList( rhsValue ), nav );
- }
- else
- {
- return evaluateSetSet( convertToList( lhsValue ), (List) rhsValue, nav );
- }
- }
- else
- {
- return evaluateObjectObject( lhsValue, rhsValue, nav ) ? Boolean.TRUE : Boolean.FALSE;
- }
- }
-
- private Boolean evaluateSetSet( List lhsSet, List rhsSet, Navigator nav )
- {
- if( setIsEmpty( lhsSet ) || setIsEmpty( rhsSet ) )
- {
- return Boolean.FALSE;
- }
-
- for( Iterator lhsIterator = lhsSet.iterator(); lhsIterator.hasNext(); )
- {
- Object lhs = lhsIterator.next();
-
- for( Iterator rhsIterator = rhsSet.iterator(); rhsIterator.hasNext(); )
- {
- Object rhs = rhsIterator.next();
-
- if( evaluateObjectObject( lhs, rhs, nav ) )
- {
- return Boolean.TRUE;
- }
- }
- }
-
- return Boolean.FALSE;
- }
-
- private boolean evaluateObjectObject( Object lhs, Object rhs, Navigator nav )
- {
- if( eitherIsBoolean( lhs, rhs ) )
- {
- return evaluateObjectObject( BooleanFunction.evaluate( lhs, nav ),
- BooleanFunction.evaluate( rhs, nav ) );
- }
- else if( eitherIsNumber( lhs, rhs ) )
- {
- return evaluateObjectObject( NumberFunction.evaluate( lhs,
- nav ),
- NumberFunction.evaluate( rhs,
- nav ) );
- }
- else
- {
- return evaluateObjectObject( StringFunction.evaluate( lhs,
- nav ),
- StringFunction.evaluate( rhs,
- nav ) );
- }
- }
-
- protected abstract boolean evaluateObjectObject( Object lhs, Object rhs );
- }
diff --git a/src/java/main/org/jaxen/expr/DefaultEqualsExpr.java b/src/java/main/org/jaxen/expr/DefaultEqualsExpr.java
deleted file mode 100644
index dd417cb..0000000
--- a/src/java/main/org/jaxen/expr/DefaultEqualsExpr.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultEqualsExpr.java,v 1.13 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultEqualsExpr.java,v 1.13 2006/11/30 18:49:26 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.function.NumberFunction;
-
-class DefaultEqualsExpr extends DefaultEqualityExpr {
-
- /**
- *
- */
- private static final long serialVersionUID = -8327599812627931648L;
-
- DefaultEqualsExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String getOperator()
- {
- return "=";
- }
-
- public String toString()
- {
- return "[(DefaultEqualsExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- protected boolean evaluateObjectObject( Object lhs, Object rhs )
- {
- if( eitherIsNumber( lhs, rhs ) )
- {
- if( NumberFunction.isNaN( (Double) lhs ) || NumberFunction.isNaN( (Double) rhs ) )
- {
- return false;
- }
- }
-
- return lhs.equals( rhs );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultExpr.java b/src/java/main/org/jaxen/expr/DefaultExpr.java
deleted file mode 100644
index be9f6cb..0000000
--- a/src/java/main/org/jaxen/expr/DefaultExpr.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultExpr.java,v 1.14 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultExpr.java,v 1.14 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.util.SingleObjectIterator;
-import org.jaxen.util.SingletonList;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public abstract class DefaultExpr implements Expr
-{
- public Expr simplify()
- {
- return this;
- }
-
- static public Iterator convertToIterator(Object obj)
- {
- if ( obj instanceof Iterator )
- {
- return (Iterator) obj;
- }
-
- if ( obj instanceof List )
- {
- return ((List)obj).iterator();
- }
-
- return new SingleObjectIterator( obj );
- }
-
- static public List convertToList(Object obj)
- {
- if ( obj instanceof List )
- {
- return (List) obj;
- }
-
- return new SingletonList(obj);
- }
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultFilterExpr.java b/src/java/main/org/jaxen/expr/DefaultFilterExpr.java
deleted file mode 100644
index edbfb69..0000000
--- a/src/java/main/org/jaxen/expr/DefaultFilterExpr.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultFilterExpr.java,v 1.19 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.19 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultFilterExpr.java,v 1.19 2006/11/30 18:49:26 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultFilterExpr extends DefaultExpr implements FilterExpr, Predicated
-{
- /**
- *
- */
- private static final long serialVersionUID = -549640659288005735L;
- private Expr expr;
- private PredicateSet predicates;
-
- public DefaultFilterExpr(PredicateSet predicateSet)
- {
- this.predicates = predicateSet;
- }
-
- public DefaultFilterExpr(Expr expr, PredicateSet predicateSet)
- {
- this.expr = expr;
- this.predicates = predicateSet;
- }
-
- public void addPredicate(Predicate predicate)
- {
- this.predicates.addPredicate( predicate );
- }
-
- public List getPredicates()
- {
- return this.predicates.getPredicates();
- }
-
- public PredicateSet getPredicateSet()
- {
- return this.predicates;
- }
-
- public Expr getExpr()
- {
- return this.expr;
- }
-
- public String toString()
- {
- return "[(DefaultFilterExpr): expr: " + expr + " predicates: " + predicates + " ]";
- }
-
- public String getText()
- {
- String text = "";
- if ( this.expr != null )
- {
- text = this.expr.getText();
- }
- text += predicates.getText();
- return text;
- }
-
- public Expr simplify()
- {
- this.predicates.simplify();
-
- if ( this.expr != null )
- {
- this.expr = this.expr.simplify();
- }
-
- if ( this.predicates.getPredicates().size() == 0 )
- {
- return getExpr();
- }
-
- return this;
- }
-
- /** Returns true if the current filter matches at least one of the context nodes
- */
- public boolean asBoolean(Context context) throws JaxenException
- {
- Object results = null;
- if ( expr != null )
- {
- results = expr.evaluate( context );
- }
- else
- {
- List nodeSet = context.getNodeSet();
- ArrayList list = new ArrayList(nodeSet.size());
- list.addAll( nodeSet );
- results = list;
- }
-
- if ( results instanceof Boolean )
- {
- Boolean b = (Boolean) results;
- return b.booleanValue();
- }
- if ( results instanceof List )
- {
- return getPredicateSet().evaluateAsBoolean(
- (List) results, context.getContextSupport()
- );
- }
-
- return false;
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- Object results = getExpr().evaluate( context );
-
- if ( results instanceof List )
- {
- List newresults = getPredicateSet().evaluatePredicates( (List) results,
- context.getContextSupport() );
- results = newresults;
- }
-
- return results;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultFunctionCallExpr.java b/src/java/main/org/jaxen/expr/DefaultFunctionCallExpr.java
deleted file mode 100644
index 6966857..0000000
--- a/src/java/main/org/jaxen/expr/DefaultFunctionCallExpr.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultFunctionCallExpr.java,v 1.17 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2004 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultFunctionCallExpr.java,v 1.17 2006/11/30 18:49:27 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.JaxenException;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultFunctionCallExpr extends DefaultExpr implements FunctionCallExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = -4747789292572193708L;
- private String prefix;
- private String functionName;
- private List parameters;
-
- public DefaultFunctionCallExpr(String prefix, String functionName)
- {
- this.prefix = prefix;
- this.functionName = functionName;
- this.parameters = new ArrayList();
- }
-
- public void addParameter(Expr parameter)
- {
- this.parameters.add(parameter);
- }
-
-
- public List getParameters()
- {
- return this.parameters;
- }
-
- public String getPrefix()
- {
- return this.prefix;
- }
-
- public String getFunctionName()
- {
- return this.functionName;
- }
-
-
- public String getText()
- {
- StringBuffer buf = new StringBuffer();
- String prefix = getPrefix();
-
- if (prefix != null &&
- prefix.length() > 0)
- {
- buf.append(prefix);
- buf.append(":");
- }
-
- buf.append(getFunctionName());
- buf.append("(");
-
- Iterator paramIter = getParameters().iterator();
-
- while (paramIter.hasNext()) {
- Expr eachParam = (Expr) paramIter.next();
-
- buf.append(eachParam.getText());
-
- if (paramIter.hasNext())
- {
- buf.append(", ");
- }
- }
-
- buf.append(")");
-
- return buf.toString();
- }
-
- public Expr simplify()
- {
- List paramExprs = getParameters();
- int paramSize = paramExprs.size();
-
- List newParams = new ArrayList(paramSize);
-
- for (int i = 0; i < paramSize; ++i)
- {
- Expr eachParam = (Expr) paramExprs.get(i);
-
- newParams.add(eachParam.simplify());
- }
-
- this.parameters = newParams;
-
- return this;
- }
-
-
- public String toString()
- {
- String prefix = getPrefix();
-
- if (prefix == null)
- {
- return "[(DefaultFunctionCallExpr): " + getFunctionName() + "(" + getParameters() + ") ]";
- }
-
- return "[(DefaultFunctionCallExpr): " + getPrefix() + ":" + getFunctionName() + "(" + getParameters() + ") ]";
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- String namespaceURI =
- context.translateNamespacePrefixToUri(getPrefix());
-
- Function func = context.getFunction(namespaceURI,
- getPrefix(),
- getFunctionName());
- List paramValues = evaluateParams(context);
-
- return func.call(context, paramValues);
- }
-
- public List evaluateParams(Context context) throws JaxenException
- {
- List paramExprs = getParameters();
- int paramSize = paramExprs.size();
-
- List paramValues = new ArrayList(paramSize);
-
- for (int i = 0; i < paramSize; ++i)
- {
- Expr eachParam = (Expr) paramExprs.get(i);
-
- Object eachValue = eachParam.evaluate(context);
-
- paramValues.add(eachValue);
- }
- return paramValues;
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/expr/DefaultGreaterThanEqualExpr.java b/src/java/main/org/jaxen/expr/DefaultGreaterThanEqualExpr.java
deleted file mode 100644
index 686bf36..0000000
--- a/src/java/main/org/jaxen/expr/DefaultGreaterThanEqualExpr.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultGreaterThanEqualExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultGreaterThanEqualExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-class DefaultGreaterThanEqualExpr extends DefaultRelationalExpr
- {
- /**
- *
- */
- private static final long serialVersionUID = -7848747981787197470L;
-DefaultGreaterThanEqualExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String getOperator()
- {
- return ">=";
- }
-
- protected boolean evaluateDoubleDouble( Double lhs, Double rhs )
- {
- return lhs.compareTo( rhs ) >= 0;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultGreaterThanExpr.java b/src/java/main/org/jaxen/expr/DefaultGreaterThanExpr.java
deleted file mode 100644
index a8db3ce..0000000
--- a/src/java/main/org/jaxen/expr/DefaultGreaterThanExpr.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultGreaterThanExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultGreaterThanExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-class DefaultGreaterThanExpr extends DefaultRelationalExpr
- {
- /**
- *
- */
- private static final long serialVersionUID = 6379252220540222867L;
-
-DefaultGreaterThanExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String getOperator()
- {
- return ">";
- }
-
- protected boolean evaluateDoubleDouble( Double lhs, Double rhs )
- {
- return lhs.compareTo( rhs ) > 0;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultLessThanEqualExpr.java b/src/java/main/org/jaxen/expr/DefaultLessThanEqualExpr.java
deleted file mode 100644
index e6c098a..0000000
--- a/src/java/main/org/jaxen/expr/DefaultLessThanEqualExpr.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultLessThanEqualExpr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultLessThanEqualExpr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-class DefaultLessThanEqualExpr extends DefaultRelationalExpr
- {
- /**
- *
- */
- private static final long serialVersionUID = 7980276649555334242L;
-DefaultLessThanEqualExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String getOperator()
- {
- return "<=";
- }
-
- protected boolean evaluateDoubleDouble( Double lhs, Double rhs )
- {
- return lhs.compareTo( rhs ) <= 0;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultLessThanExpr.java b/src/java/main/org/jaxen/expr/DefaultLessThanExpr.java
deleted file mode 100644
index 34cbc3d..0000000
--- a/src/java/main/org/jaxen/expr/DefaultLessThanExpr.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultLessThanExpr.java,v 1.15 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.15 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultLessThanExpr.java,v 1.15 2006/11/30 18:49:27 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-class DefaultLessThanExpr extends DefaultRelationalExpr
- {
- /**
- *
- */
- private static final long serialVersionUID = 8423816025305001283L;
-DefaultLessThanExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String getOperator()
- {
- return "<";
- }
-
- protected boolean evaluateDoubleDouble( Double lhs, Double rhs )
- {
- return lhs.compareTo( rhs ) < 0;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultLiteralExpr.java b/src/java/main/org/jaxen/expr/DefaultLiteralExpr.java
deleted file mode 100644
index ad8c601..0000000
--- a/src/java/main/org/jaxen/expr/DefaultLiteralExpr.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultLiteralExpr.java,v 1.13 2007/01/03 20:47:42 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2007/01/03 20:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultLiteralExpr.java,v 1.13 2007/01/03 20:47:42 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-
-class DefaultLiteralExpr extends DefaultExpr implements LiteralExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = -953829179036273338L;
- private String literal;
-
- DefaultLiteralExpr(String literal)
- {
- this.literal = literal;
- }
-
- public String getLiteral()
- {
- return this.literal;
- }
-
- public String toString()
- {
- return "[(DefaultLiteralExpr): " + getLiteral() + "]";
- }
-
- public String getText()
- {
-
- if (literal.indexOf('"') == -1 ) {
- return "\"" + getLiteral() + "\"";
- }
- else { // Not possible for string literal to contain both " and '
- return "'" + getLiteral() + "'";
- }
-
- }
-
- public Object evaluate(Context context)
- {
- return getLiteral();
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultLocationPath.java b/src/java/main/org/jaxen/expr/DefaultLocationPath.java
deleted file mode 100644
index c0f9fab..0000000
--- a/src/java/main/org/jaxen/expr/DefaultLocationPath.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultLocationPath.java,v 1.29 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.29 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultLocationPath.java,v 1.29 2006/02/05 21:47:40 elharo Exp $
- */
-package org.jaxen.expr;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.JaxenException;
-
-abstract class DefaultLocationPath extends DefaultExpr implements LocationPath
-{
- private List steps;
-
- /**
- * Create a new empty location path.
- */
- DefaultLocationPath()
- {
- this.steps = new LinkedList();
- }
-
- public void addStep(Step step)
- {
- getSteps().add(step);
- }
-
- public List getSteps()
- {
- return this.steps;
- }
-
- public Expr simplify()
- {
- Iterator stepIter = getSteps().iterator();
- Step eachStep = null;
- while (stepIter.hasNext())
- {
- eachStep = (Step) stepIter.next();
- eachStep.simplify();
- }
- return this;
- }
-
- public String getText()
- {
- StringBuffer buf = new StringBuffer();
- Iterator stepIter = getSteps().iterator();
- while (stepIter.hasNext())
- {
- buf.append(((Step) stepIter.next()).getText());
- if (stepIter.hasNext())
- {
- buf.append("/");
- }
- }
- return buf.toString();
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer();
- Iterator stepIter = getSteps().iterator();
- while (stepIter.hasNext())
- {
- buf.append(stepIter.next().toString());
- if (stepIter.hasNext())
- {
- buf.append("/");
- }
- }
- return buf.toString();
- }
-
- public boolean isAbsolute()
- {
- return false;
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- List nodeSet = context.getNodeSet();
- List contextNodeSet = new ArrayList(nodeSet);
- ContextSupport support = context.getContextSupport();
- Context stepContext = new Context(support);
- Iterator stepIter = getSteps().iterator();
- while ( stepIter.hasNext() )
- {
- Step eachStep = (Step) stepIter.next();
- stepContext.setNodeSet(contextNodeSet);
- contextNodeSet = eachStep.evaluate(stepContext);
- // now we need to reverse the list if this is a reverse axis
- if (isReverseAxis(eachStep)) {
- Collections.reverse(contextNodeSet);
- }
- }
-
- if (getSteps().size() > 1) {
- Collections.sort(contextNodeSet, new NodeComparator(support.getNavigator()));
- }
-
- return contextNodeSet;
- }
-
- private boolean isReverseAxis(Step step) {
-
- int axis = step.getAxis();
- return axis == org.jaxen.saxpath.Axis.PRECEDING
- || axis == org.jaxen.saxpath.Axis.PRECEDING_SIBLING
- || axis == org.jaxen.saxpath.Axis.ANCESTOR
- || axis == org.jaxen.saxpath.Axis.ANCESTOR_OR_SELF;
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/expr/DefaultLogicalExpr.java b/src/java/main/org/jaxen/expr/DefaultLogicalExpr.java
deleted file mode 100644
index 0a805f6..0000000
--- a/src/java/main/org/jaxen/expr/DefaultLogicalExpr.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultLogicalExpr.java,v 1.8 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultLogicalExpr.java,v 1.8 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-abstract class DefaultLogicalExpr extends DefaultTruthExpr implements LogicalExpr
-{
- DefaultLogicalExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultMinusExpr.java b/src/java/main/org/jaxen/expr/DefaultMinusExpr.java
deleted file mode 100644
index 32c0888..0000000
--- a/src/java/main/org/jaxen/expr/DefaultMinusExpr.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultMinusExpr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultMinusExpr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- */
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.function.NumberFunction;
-
-class DefaultMinusExpr extends DefaultAdditiveExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 6468563688098527800L;
-
- DefaultMinusExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "-";
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- Number lhsValue = NumberFunction.evaluate( getLHS().evaluate( context ),
- context.getNavigator() );
- Number rhsValue = NumberFunction.evaluate( getRHS().evaluate( context ),
- context.getNavigator() );
-
- double result = lhsValue.doubleValue() - rhsValue.doubleValue();
- return new Double( result );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultModExpr.java b/src/java/main/org/jaxen/expr/DefaultModExpr.java
deleted file mode 100644
index 4efbf36..0000000
--- a/src/java/main/org/jaxen/expr/DefaultModExpr.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultModExpr.java,v 1.15 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.15 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultModExpr.java,v 1.15 2006/11/30 18:49:26 elharo Exp $
- */
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.function.NumberFunction;
-
-class DefaultModExpr extends DefaultMultiplicativeExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = -5554964716492040687L;
-
- DefaultModExpr( Expr lhs,
- Expr rhs )
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "mod";
- }
-
- public Object evaluate( Context context ) throws JaxenException
- {
- Number lhsValue = NumberFunction.evaluate( getLHS().evaluate( context ),
- context.getNavigator() );
- Number rhsValue = NumberFunction.evaluate( getRHS().evaluate( context ),
- context.getNavigator() );
-
- double result = lhsValue.doubleValue() % rhsValue.doubleValue();
- return new Double( result );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultMultiplicativeExpr.java b/src/java/main/org/jaxen/expr/DefaultMultiplicativeExpr.java
deleted file mode 100644
index dc49d83..0000000
--- a/src/java/main/org/jaxen/expr/DefaultMultiplicativeExpr.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultMultiplicativeExpr.java,v 1.9 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultMultiplicativeExpr.java,v 1.9 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-abstract class DefaultMultiplicativeExpr extends DefaultArithExpr
- implements MultiplicativeExpr
-{
- DefaultMultiplicativeExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String toString()
- {
- return "[(DefaultMultiplicativeExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultMultiplyExpr.java b/src/java/main/org/jaxen/expr/DefaultMultiplyExpr.java
deleted file mode 100644
index be7a1d0..0000000
--- a/src/java/main/org/jaxen/expr/DefaultMultiplyExpr.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultMultiplyExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultMultiplyExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.function.NumberFunction;
-
-class DefaultMultiplyExpr extends DefaultMultiplicativeExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 2760053878102260365L;
-
- DefaultMultiplyExpr( Expr lhs,
- Expr rhs )
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "*";
- }
-
- public Object evaluate( Context context ) throws JaxenException
- {
- Number lhsValue = NumberFunction.evaluate( getLHS().evaluate( context ),
- context.getNavigator() );
- Number rhsValue = NumberFunction.evaluate( getRHS().evaluate( context ),
- context.getNavigator() );
-
- double result = lhsValue.doubleValue() * rhsValue.doubleValue();
-
- return new Double( result );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultNameStep.java b/src/java/main/org/jaxen/expr/DefaultNameStep.java
deleted file mode 100644
index 29221e7..0000000
--- a/src/java/main/org/jaxen/expr/DefaultNameStep.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- $Id: DefaultNameStep.java,v 1.53 2007/04/17 01:26:35 bewins Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.expr;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.UnresolvableException;
-import org.jaxen.Navigator;
-import org.jaxen.expr.iter.IterableAxis;
-import org.jaxen.saxpath.Axis;
-
-/**
- * Expression object that represents any flavor
- * of name-test steps within an XPath.
- * <p>
- * This includes simple steps, such as "foo",
- * non-default-axis steps, such as "following-sibling::foo"
- * or "@foo", and namespace-aware steps, such
- * as "foo:bar".
- *
- * @author bob mcwhirter (bob at werken.com)
- * @author Stephen Colebourne
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultNameStep extends DefaultStep implements NameStep {
-
- /**
- *
- */
- private static final long serialVersionUID = 428414912247718390L;
-
- /**
- * Our prefix, bound through the current Context.
- * The empty-string ("") if no prefix was specified.
- * Decidedly NOT-NULL, due to SAXPath constraints.
- * This is the 'foo' in 'foo:bar'.
- */
- private String prefix;
-
- /**
- * Our local-name.
- * This is the 'bar' in 'foo:bar'.
- */
- private String localName;
-
- /** Quick flag denoting if the local name was '*' */
- private boolean matchesAnyName;
-
- /** Quick flag denoting if we have a namespace prefix **/
- private boolean hasPrefix;
-
- /**
- * Constructor.
- *
- * @param axis the axis to work through
- * @param prefix the name prefix
- * @param localName the local name
- * @param predicateSet the set of predicates
- */
- public DefaultNameStep(IterableAxis axis,
- String prefix,
- String localName,
- PredicateSet predicateSet) {
- super(axis, predicateSet);
-
- this.prefix = prefix;
- this.localName = localName;
- this.matchesAnyName = "*".equals(localName);
- this.hasPrefix = (this.prefix != null && this.prefix.length() > 0);
- }
-
- /**
- * Gets the namespace prefix.
- *
- * @return the prefix
- */
- public String getPrefix() {
- return this.prefix;
- }
-
- /**
- * Gets the local name.
- *
- * @return the local name
- */
- public String getLocalName() {
- return this.localName;
- }
-
- /**
- * Does this step match any name? (i.e. Is it '*'?)
- *
- * @return true if it matches any name
- */
- public boolean isMatchesAnyName() {
- return matchesAnyName;
- }
-
- /**
- * Gets the step as a fully defined XPath.
- *
- * @return the full XPath for this step
- */
- public String getText() {
- StringBuffer buf = new StringBuffer(64);
- buf.append(getAxisName()).append("::");
- if (getPrefix() != null && getPrefix().length() > 0) {
- buf.append(getPrefix()).append(':');
- }
- return buf.append(getLocalName()).append(super.getText()).toString();
- }
-
- /**
- * Evaluate the context node set to find the new node set.
- * <p>
- * This method overrides the version in <code>DefaultStep</code> for performance.
- */
- public List evaluate(Context context) throws JaxenException {
-
- List contextNodeSet = context.getNodeSet();
- int contextSize = contextNodeSet.size();
- // optimize for context size 0
- if (contextSize == 0) {
- return Collections.EMPTY_LIST;
- }
- ContextSupport support = context.getContextSupport();
- IterableAxis iterableAxis = getIterableAxis();
- boolean namedAccess = (!matchesAnyName && iterableAxis.supportsNamedAccess(support));
-
- // optimize for context size 1 (common case, avoids lots of object creation)
- if (contextSize == 1) {
- Object contextNode = contextNodeSet.get(0);
- if (namedAccess) {
- // get the iterator over the nodes and check it
- String uri = null;
- if (hasPrefix) {
- uri = support.translateNamespacePrefixToUri(prefix);
- if (uri == null) {
- throw new UnresolvableException("XPath expression uses unbound namespace prefix " + prefix);
- }
- }
- Iterator axisNodeIter = iterableAxis.namedAccessIterator(
- contextNode, support, localName, prefix, uri);
- if (axisNodeIter == null || !axisNodeIter.hasNext()) {
- return Collections.EMPTY_LIST;
- }
-
- // convert iterator to list for predicate test
- // no need to filter as named access guarantees this
- List newNodeSet = new ArrayList();
- while (axisNodeIter.hasNext()) {
- newNodeSet.add(axisNodeIter.next());
- }
-
- // evaluate the predicates
- return getPredicateSet().evaluatePredicates(newNodeSet, support);
-
- }
- else {
- // get the iterator over the nodes and check it
- Iterator axisNodeIter = iterableAxis.iterator(contextNode, support);
- if (axisNodeIter == null || !axisNodeIter.hasNext()) {
- return Collections.EMPTY_LIST;
- }
-
- // run through iterator, filtering using matches()
- // adding to list for predicate test
- List newNodeSet = new ArrayList(contextSize);
- while (axisNodeIter.hasNext()) {
- Object eachAxisNode = axisNodeIter.next();
- if (matches(eachAxisNode, support)) {
- newNodeSet.add(eachAxisNode);
- }
- }
-
- // evaluate the predicates
- return getPredicateSet().evaluatePredicates(newNodeSet, support);
- }
- }
-
- // full case
- IdentitySet unique = new IdentitySet();
- List interimSet = new ArrayList(contextSize);
- List newNodeSet = new ArrayList(contextSize);
-
- if (namedAccess) {
- String uri = null;
- if (hasPrefix) {
- uri = support.translateNamespacePrefixToUri(prefix);
- if (uri == null) {
- throw new UnresolvableException("XPath expression uses unbound namespace prefix " + prefix);
- }
- }
- for (int i = 0; i < contextSize; ++i) {
- Object eachContextNode = contextNodeSet.get(i);
-
- Iterator axisNodeIter = iterableAxis.namedAccessIterator(
- eachContextNode, support, localName, prefix, uri);
- if (axisNodeIter == null || !axisNodeIter.hasNext()) {
- continue;
- }
-
- while (axisNodeIter.hasNext())
- {
- Object eachAxisNode = axisNodeIter.next();
- interimSet.add(eachAxisNode);
- }
-
- // evaluate the predicates
- List predicateNodes = getPredicateSet().evaluatePredicates(interimSet, support);
-
- // ensure only one of each node in the result
- Iterator predicateNodeIter = predicateNodes.iterator();
- while (predicateNodeIter.hasNext())
- {
- Object eachPredicateNode = predicateNodeIter.next();
- if (! unique.contains(eachPredicateNode))
- {
- unique.add(eachPredicateNode);
- newNodeSet.add(eachPredicateNode);
- }
- }
- interimSet.clear();
- }
-
- } else {
- for (int i = 0; i < contextSize; ++i) {
- Object eachContextNode = contextNodeSet.get(i);
-
- Iterator axisNodeIter = axisIterator(eachContextNode, support);
- if (axisNodeIter == null || !axisNodeIter.hasNext()) {
- continue;
- }
-
- /* See jaxen-106. Might be able to optimize this by doing
- * specific matching for individual axes. For instance on namespace axis
- * we should only get namespace nodes and on attribute axes we only get
- * attribute nodes. Self and parent axes have single members.
- * Children, descendant, ancestor, and sibling axes never
- * see any attributes or namespaces
- */
-
- // ensure only unique matching nodes in the result
- while (axisNodeIter.hasNext()) {
- Object eachAxisNode = axisNodeIter.next();
-
- if (matches(eachAxisNode, support)) {
- interimSet.add(eachAxisNode);
- }
- }
-
- // evaluate the predicates
- List predicateNodes = getPredicateSet().evaluatePredicates(interimSet, support);
-
- // ensure only one of each node in the result
- Iterator predicateNodeIter = predicateNodes.iterator();
- while (predicateNodeIter.hasNext())
- {
- Object eachPredicateNode = predicateNodeIter.next();
- if (! unique.contains(eachPredicateNode))
- {
- unique.add(eachPredicateNode);
- newNodeSet.add(eachPredicateNode);
- }
- }
- interimSet.clear();
- }
- }
-
- return newNodeSet;
- }
-
- /**
- * Checks whether the node matches this step.
- *
- * @param node the node to check
- * @param contextSupport the context support
- * @return true if matches
- * @throws JaxenException
- */
- public boolean matches(Object node, ContextSupport contextSupport) throws JaxenException {
-
- Navigator nav = contextSupport.getNavigator();
- String myUri = null;
- String nodeName = null;
- String nodeUri = null;
-
- if (nav.isElement(node)) {
- nodeName = nav.getElementName(node);
- nodeUri = nav.getElementNamespaceUri(node);
- }
- else if (nav.isText(node)) {
- return false;
- }
- else if (nav.isAttribute(node)) {
- if (getAxis() != Axis.ATTRIBUTE) {
- return false;
- }
- nodeName = nav.getAttributeName(node);
- nodeUri = nav.getAttributeNamespaceUri(node);
-
- }
- else if (nav.isDocument(node)) {
- return false;
- }
- else if (nav.isNamespace(node)) {
- if (getAxis() != Axis.NAMESPACE) {
- // Only works for namespace::*
- return false;
- }
- nodeName = nav.getNamespacePrefix(node);
- }
- else {
- return false;
- }
-
- if (hasPrefix) {
- myUri = contextSupport.translateNamespacePrefixToUri(this.prefix);
- if (myUri == null) {
- throw new UnresolvableException("Cannot resolve namespace prefix '"+this.prefix+"'");
- }
- }
- else if (matchesAnyName) {
- return true;
- }
-
- // If we map to a non-empty namespace and the node does not
- // or vice-versa, fail-fast.
- if (hasNamespace(myUri) != hasNamespace(nodeUri)) {
- return false;
- }
-
- // To fail-fast, we check the equality of
- // local-names first. Shorter strings compare
- // quicker.
- if (matchesAnyName || nodeName.equals(getLocalName())) {
- return matchesNamespaceURIs(myUri, nodeUri);
- }
-
- return false;
- }
-
- /**
- * Checks whether the URI represents a namespace.
- *
- * @param uri the URI to check
- * @return true if non-null and non-empty
- */
- private boolean hasNamespace(String uri) {
- return (uri != null && uri.length() > 0);
- }
-
- /**
- * Compares two namespace URIs, handling null.
- *
- * @param uri1 the first URI
- * @param uri2 the second URI
- * @return true if equal, where null==""
- */
- protected boolean matchesNamespaceURIs(String uri1, String uri2) {
- if (uri1 == uri2) {
- return true;
- }
- if (uri1 == null) {
- return (uri2.length() == 0);
- }
- if (uri2 == null) {
- return (uri1.length() == 0);
- }
- return uri1.equals(uri2);
- }
-
- /**
- * Returns a full information debugging string.
- *
- * @return a debugging string
- */
- public String toString() {
- String prefix = getPrefix();
- String qName = "".equals(prefix) ? getLocalName() : getPrefix() + ":" + getLocalName();
- return "[(DefaultNameStep): " + qName + "]";
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultNotEqualsExpr.java b/src/java/main/org/jaxen/expr/DefaultNotEqualsExpr.java
deleted file mode 100644
index ec1d6a9..0000000
--- a/src/java/main/org/jaxen/expr/DefaultNotEqualsExpr.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultNotEqualsExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultNotEqualsExpr.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.function.NumberFunction;
-
-class DefaultNotEqualsExpr extends DefaultEqualityExpr
- {
- /**
- *
- */
- private static final long serialVersionUID = -8001267398136979152L;
-
-DefaultNotEqualsExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String getOperator()
- {
- return "!=";
- }
-
- public String toString()
- {
- return "[(DefaultNotEqualsExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- protected boolean evaluateObjectObject( Object lhs, Object rhs )
- {
- if( eitherIsNumber( lhs, rhs ) )
- {
-
- if( NumberFunction.isNaN( (Double) lhs ) || NumberFunction.isNaN( (Double) rhs ) )
- {
- return true;
- }
-
- }
- return !lhs.equals( rhs );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultNumberExpr.java b/src/java/main/org/jaxen/expr/DefaultNumberExpr.java
deleted file mode 100644
index 45bbd3b..0000000
--- a/src/java/main/org/jaxen/expr/DefaultNumberExpr.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultNumberExpr.java,v 1.13 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultNumberExpr.java,v 1.13 2006/11/30 18:49:26 elharo Exp $
- */
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-
-
-class DefaultNumberExpr extends DefaultExpr implements NumberExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = -6021898973386269611L;
- private Double number;
-
- DefaultNumberExpr( Double number )
- {
- this.number = number;
- }
-
- public Number getNumber()
- {
- return this.number;
- }
-
- public String toString()
- {
- return "[(DefaultNumberExpr): " + getNumber() + "]";
- }
-
- public String getText()
- {
- return getNumber().toString();
- }
-
- public Object evaluate( Context context )
- {
- return getNumber();
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultOrExpr.java b/src/java/main/org/jaxen/expr/DefaultOrExpr.java
deleted file mode 100644
index 0f2a676..0000000
--- a/src/java/main/org/jaxen/expr/DefaultOrExpr.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultOrExpr.java,v 1.17 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultOrExpr.java,v 1.17 2006/11/30 18:49:26 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.function.BooleanFunction;
-
-class DefaultOrExpr extends DefaultLogicalExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 4894552680753026730L;
-
- DefaultOrExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "or";
- }
-
- public String toString()
- {
- return "[(DefaultOrExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- Navigator nav = context.getNavigator();
- Boolean lhsValue = BooleanFunction.evaluate( getLHS().evaluate( context ), nav );
-
- if ( lhsValue.booleanValue() )
- {
- return Boolean.TRUE;
- }
-
- // Short circuits are required in XPath. "The right operand is not
- // evaluated if the left operand evaluates to true."
- Boolean rhsValue = BooleanFunction.evaluate( getRHS().evaluate( context ), nav );
-
- if ( rhsValue.booleanValue() )
- {
- return Boolean.TRUE;
- }
-
- return Boolean.FALSE;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultPathExpr.java b/src/java/main/org/jaxen/expr/DefaultPathExpr.java
deleted file mode 100644
index 9864dde..0000000
--- a/src/java/main/org/jaxen/expr/DefaultPathExpr.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultPathExpr.java,v 1.16 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.16 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultPathExpr.java,v 1.16 2006/11/30 18:49:26 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-
-class DefaultPathExpr extends DefaultExpr implements PathExpr {
-
- private static final long serialVersionUID = -6593934674727004281L;
- private Expr filterExpr;
- private LocationPath locationPath;
-
- DefaultPathExpr(Expr filterExpr,
- LocationPath locationPath) {
- this.filterExpr = filterExpr;
- this.locationPath = locationPath;
- }
-
- public Expr getFilterExpr() {
- return this.filterExpr;
- }
-
-
- public void setFilterExpr(Expr filterExpr) {
- this.filterExpr = filterExpr;
- }
-
-
- public LocationPath getLocationPath() {
- return this.locationPath;
- }
-
-
- public String toString() {
- if (getLocationPath() != null) {
- return "[(DefaultPathExpr): " + getFilterExpr() + ", " + getLocationPath() + "]";
- }
-
- return "[(DefaultPathExpr): " + getFilterExpr() + "]";
- }
-
-
- public String getText() {
- StringBuffer buf = new StringBuffer();
-
- if (getFilterExpr() != null) {
- buf.append(getFilterExpr().getText());
- }
-
- if (getLocationPath() != null) {
- if (!getLocationPath().getSteps().isEmpty()) buf.append("/");
- buf.append(getLocationPath().getText());
- }
-
- return buf.toString();
- }
-
-
- public Expr simplify() {
- if (getFilterExpr() != null) {
- setFilterExpr(getFilterExpr().simplify());
- }
-
- if (getLocationPath() != null) {
- getLocationPath().simplify();
- }
-
- if (getFilterExpr() == null && getLocationPath() == null) {
- return null;
- }
-
-
- if (getLocationPath() == null) {
- return getFilterExpr();
- }
-
- if (getFilterExpr() == null) {
- return getLocationPath();
- }
-
- return this;
- }
-
- public Object evaluate(Context context) throws JaxenException {
- Object results = null;
- Context pathContext = null;
- if (getFilterExpr() != null) {
- results = getFilterExpr().evaluate(context);
- pathContext = new Context(context.getContextSupport());
- pathContext.setNodeSet(convertToList(results));
- }
- if (getLocationPath() != null) {
- return getLocationPath().evaluate(pathContext);
- }
- return results;
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/expr/DefaultPlusExpr.java b/src/java/main/org/jaxen/expr/DefaultPlusExpr.java
deleted file mode 100644
index 9b36ae6..0000000
--- a/src/java/main/org/jaxen/expr/DefaultPlusExpr.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultPlusExpr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultPlusExpr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- */
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.function.NumberFunction;
-
-class DefaultPlusExpr extends DefaultAdditiveExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = -1426954461146769374L;
- DefaultPlusExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "+";
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- Number lhsValue = NumberFunction.evaluate( getLHS().evaluate( context ),
- context.getNavigator() );
- Number rhsValue = NumberFunction.evaluate( getRHS().evaluate( context ),
- context.getNavigator() );
-
- double result = lhsValue.doubleValue() + rhsValue.doubleValue();
-
- return new Double( result );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultPredicate.java b/src/java/main/org/jaxen/expr/DefaultPredicate.java
deleted file mode 100644
index b626a58..0000000
--- a/src/java/main/org/jaxen/expr/DefaultPredicate.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultPredicate.java,v 1.13 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultPredicate.java,v 1.13 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-class DefaultPredicate implements Predicate
-{
- /**
- *
- */
- private static final long serialVersionUID = -4140068594075364971L;
- private Expr expr;
-
- DefaultPredicate(Expr expr)
- {
- setExpr( expr );
- }
-
- public Expr getExpr()
- {
- return this.expr;
- }
-
- public void setExpr(Expr expr)
- {
- this.expr = expr;
- }
-
- public String getText()
- {
- return "[" + getExpr().getText() + "]";
- }
-
- public String toString()
- {
- return "[(DefaultPredicate): " + getExpr() + "]";
- }
-
- public void simplify()
- {
- setExpr( getExpr().simplify() );
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- return getExpr().evaluate( context );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultProcessingInstructionNodeStep.java b/src/java/main/org/jaxen/expr/DefaultProcessingInstructionNodeStep.java
deleted file mode 100644
index a0f372a..0000000
--- a/src/java/main/org/jaxen/expr/DefaultProcessingInstructionNodeStep.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultProcessingInstructionNodeStep.java,v 1.18 2007/01/06 12:21:12 elharo Exp $
- * $Revision: 1.18 $
- * $Date: 2007/01/06 12:21:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultProcessingInstructionNodeStep.java,v 1.18 2007/01/06 12:21:12 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.Navigator;
-import org.jaxen.expr.iter.IterableAxis;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultProcessingInstructionNodeStep extends DefaultStep
- implements ProcessingInstructionNodeStep
-{
- /**
- *
- */
- private static final long serialVersionUID = -4825000697808126927L;
- private String name;
-
- public DefaultProcessingInstructionNodeStep(IterableAxis axis,
- String name,
- PredicateSet predicateSet)
- {
- super( axis, predicateSet );
-
- this.name = name;
- }
-
- public String getName()
- {
- return this.name;
- }
-
- public String getText()
- {
- StringBuffer buf = new StringBuffer();
- buf.append(getAxisName());
- buf.append("::processing-instruction(");
- String name = getName();
- if (name != null && name.length() != 0)
- {
- buf.append("'");
- buf.append(name);
- buf.append("'");
- }
- buf.append(")");
- buf.append(super.getText());
- return buf.toString();
- }
-
- public boolean matches(Object node,
- ContextSupport support)
- {
-
- Navigator nav = support.getNavigator();
- if ( nav.isProcessingInstruction( node ) )
- {
- String name = getName();
- if ( name == null || name.length() == 0 )
- {
- return true;
- }
- else
- {
- return name.equals( nav.getProcessingInstructionTarget( node ) );
- }
- }
-
- return false;
-
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultRelationalExpr.java b/src/java/main/org/jaxen/expr/DefaultRelationalExpr.java
deleted file mode 100644
index a24dec6..0000000
--- a/src/java/main/org/jaxen/expr/DefaultRelationalExpr.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultRelationalExpr.java,v 1.14 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultRelationalExpr.java,v 1.14 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.util.Iterator;
-import java.util.List;
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.function.NumberFunction;
-
-abstract class DefaultRelationalExpr extends DefaultTruthExpr implements RelationalExpr
- {
- DefaultRelationalExpr( Expr lhs, Expr rhs )
- {
- super( lhs, rhs );
- }
-
- public String toString()
- {
- return "[(DefaultRelationalExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- public Object evaluate( Context context ) throws JaxenException
- {
- Object lhsValue = getLHS().evaluate( context );
- Object rhsValue = getRHS().evaluate( context );
- Navigator nav = context.getNavigator();
-
- if( bothAreSets( lhsValue, rhsValue ) )
- {
- return evaluateSetSet( (List) lhsValue, (List) rhsValue, nav );
- }
-
- if( eitherIsSet( lhsValue, rhsValue ) )
- {
- if( isSet( lhsValue ) )
- {
- return evaluateSetSet( (List) lhsValue, convertToList( rhsValue ), nav );
- }
- else
- {
- return evaluateSetSet( convertToList( lhsValue ), (List) rhsValue, nav );
- }
- }
-
- return evaluateObjectObject( lhsValue, rhsValue, nav ) ? Boolean.TRUE : Boolean.FALSE;
- }
-
- private Object evaluateSetSet( List lhsSet, List rhsSet, Navigator nav )
- {
- if( setIsEmpty( lhsSet ) || setIsEmpty( rhsSet ) ) // return false if either is null or empty
- {
- return Boolean.FALSE;
- }
-
- for( Iterator lhsIterator = lhsSet.iterator(); lhsIterator.hasNext(); )
- {
- Object lhs = lhsIterator.next();
-
- for( Iterator rhsIterator = rhsSet.iterator(); rhsIterator.hasNext(); )
- {
- Object rhs = rhsIterator.next();
-
- if( evaluateObjectObject( lhs, rhs, nav ) )
- {
- return Boolean.TRUE;
- }
- }
- }
-
- return Boolean.FALSE;
- }
-
- private boolean evaluateObjectObject( Object lhs, Object rhs, Navigator nav )
- {
- if( lhs == null || rhs == null )
- {
- return false;
- }
-
- Double lhsNum = NumberFunction.evaluate( lhs, nav );
- Double rhsNum = NumberFunction.evaluate( rhs, nav );
-
- if( NumberFunction.isNaN( lhsNum ) || NumberFunction.isNaN( rhsNum ) )
- {
- return false;
- }
-
- return evaluateDoubleDouble( lhsNum, rhsNum );
- }
-
- protected abstract boolean evaluateDoubleDouble( Double lhs, Double rhs );
- }
-
diff --git a/src/java/main/org/jaxen/expr/DefaultRelativeLocationPath.java b/src/java/main/org/jaxen/expr/DefaultRelativeLocationPath.java
deleted file mode 100644
index 073592c..0000000
--- a/src/java/main/org/jaxen/expr/DefaultRelativeLocationPath.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultRelativeLocationPath.java,v 1.13 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultRelativeLocationPath.java,v 1.13 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultRelativeLocationPath extends DefaultLocationPath
-{
-
- /**
- *
- */
- private static final long serialVersionUID = -1006862529366150615L;
-
- public String toString()
- {
- return "[(DefaultRelativeLocationPath): " + super.toString() + "]";
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultStep.java b/src/java/main/org/jaxen/expr/DefaultStep.java
deleted file mode 100644
index 776dec8..0000000
--- a/src/java/main/org/jaxen/expr/DefaultStep.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultStep.java,v 1.21 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.21 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultStep.java,v 1.21 2006/02/05 21:47:40 elharo Exp $
- */
-package org.jaxen.expr;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.expr.iter.IterableAxis;
-import org.jaxen.saxpath.Axis;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public abstract class DefaultStep implements Step
-{
- private IterableAxis axis;
- private PredicateSet predicates;
-
- public DefaultStep(IterableAxis axis, PredicateSet predicates)
- {
- this.axis = axis;
- this.predicates = predicates;
- }
-
- public void addPredicate(Predicate predicate)
- {
- this.predicates.addPredicate(predicate);
- }
-
- public List getPredicates()
- {
- return this.predicates.getPredicates();
- }
-
- public PredicateSet getPredicateSet()
- {
- return this.predicates;
- }
-
- public int getAxis()
- {
- return this.axis.value();
- }
-
- public IterableAxis getIterableAxis()
- {
- return this.axis;
- }
-
- public String getAxisName()
- {
- return Axis.lookup(getAxis());
- }
-
- public String getText()
- {
- return this.predicates.getText();
- }
-
- public String toString()
- {
- return getIterableAxis() + " " + super.toString();
- }
-
- public void simplify()
- {
- this.predicates.simplify();
- }
-
- public Iterator axisIterator(Object contextNode, ContextSupport support)
- throws UnsupportedAxisException
- {
- return getIterableAxis().iterator(contextNode, support);
- }
-
- public List evaluate(final Context context) throws JaxenException
- {
- final List contextNodeSet = context.getNodeSet();
- final IdentitySet unique = new IdentitySet();
- final int contextSize = contextNodeSet.size();
-
- // ???? try linked lists instead?
- // ???? initial size for these?
- final ArrayList interimSet = new ArrayList();
- final ArrayList newNodeSet = new ArrayList();
- final ContextSupport support = context.getContextSupport();
-
- // ???? use iterator instead
- for ( int i = 0 ; i < contextSize ; ++i )
- {
- Object eachContextNode = contextNodeSet.get( i );
-
-
- /* See jaxen-106. Might be able to optimize this by doing
- * specific matching for individual axes. For instance on namespace axis
- * we should only get namespace nodes and on attribute axes we only get
- * attribute nodes. Self and parent axes have single members.
- * Children, descendant, ancestor, and sibling axes never
- * see any attributes or namespaces
- */
- Iterator axisNodeIter = axis.iterator(eachContextNode, support);
- while ( axisNodeIter.hasNext() )
- {
- Object eachAxisNode = axisNodeIter.next();
- if ( ! unique.contains( eachAxisNode ) )
- {
- if ( matches( eachAxisNode, support ) )
- {
- unique.add( eachAxisNode );
- interimSet.add( eachAxisNode );
- }
- }
- }
- newNodeSet.addAll(getPredicateSet().evaluatePredicates(
- interimSet, support ));
- interimSet.clear();
- }
- return newNodeSet;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultTextNodeStep.java b/src/java/main/org/jaxen/expr/DefaultTextNodeStep.java
deleted file mode 100644
index a0d7504..0000000
--- a/src/java/main/org/jaxen/expr/DefaultTextNodeStep.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultTextNodeStep.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultTextNodeStep.java,v 1.14 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.Navigator;
-import org.jaxen.expr.iter.IterableAxis;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultTextNodeStep extends DefaultStep implements TextNodeStep
-{
- /**
- *
- */
- private static final long serialVersionUID = -3821960984972022948L;
-
- public DefaultTextNodeStep(IterableAxis axis, PredicateSet predicateSet )
- {
- super( axis, predicateSet );
- }
-
- public boolean matches(Object node,
- ContextSupport support)
- {
- Navigator nav = support.getNavigator();
-
- return nav.isText( node );
- }
-
- public String getText()
- {
- return getAxisName() + "::text()" + super.getText();
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultTruthExpr.java b/src/java/main/org/jaxen/expr/DefaultTruthExpr.java
deleted file mode 100644
index cbe7043..0000000
--- a/src/java/main/org/jaxen/expr/DefaultTruthExpr.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultTruthExpr.java,v 1.10 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultTruthExpr.java,v 1.10 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.util.List;
-
-abstract class DefaultTruthExpr extends DefaultBinaryExpr
-{
- DefaultTruthExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String toString()
- {
- return "[(DefaultTruthExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- protected boolean bothAreSets(Object lhs,
- Object rhs)
- {
- return ( lhs instanceof List
- &&
- rhs instanceof List );
- }
-
- protected boolean eitherIsSet(Object lhs,
- Object rhs)
- {
- return ( lhs instanceof List
- ||
- rhs instanceof List );
- }
-
- protected boolean isSet(Object obj)
- {
- return ( obj instanceof List );
- }
-
- protected boolean setIsEmpty( List set )
- {
- return (set == null || set.size() == 0);
- }
-
- protected boolean eitherIsBoolean(Object lhs,
- Object rhs)
- {
- return ( lhs instanceof Boolean
- ||
- rhs instanceof Boolean );
- }
-
- protected boolean bothAreBoolean(Object lhs,
- Object rhs)
- {
- return ( lhs instanceof Boolean
- &&
- rhs instanceof Boolean );
- }
-
- protected boolean eitherIsNumber(Object lhs,
- Object rhs)
- {
- return ( lhs instanceof Number
- ||
- rhs instanceof Number );
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/expr/DefaultUnaryExpr.java b/src/java/main/org/jaxen/expr/DefaultUnaryExpr.java
deleted file mode 100644
index bdfc7e2..0000000
--- a/src/java/main/org/jaxen/expr/DefaultUnaryExpr.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultUnaryExpr.java,v 1.16 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.16 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultUnaryExpr.java,v 1.16 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.function.NumberFunction;
-
-class DefaultUnaryExpr extends DefaultExpr implements UnaryExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 2303714238683092334L;
- private Expr expr;
-
- DefaultUnaryExpr(Expr expr)
- {
- this.expr = expr;
- }
-
- public Expr getExpr()
- {
- return this.expr;
- }
-
- public String toString()
- {
- return "[(DefaultUnaryExpr): " + getExpr() + "]";
- }
-
- public String getText()
- {
- return "-(" + getExpr().getText() + ")";
- }
-
- public Expr simplify()
- {
- expr = expr.simplify();
-
- return this;
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- Number number = NumberFunction.evaluate( getExpr().evaluate( context ),
- context.getNavigator() );
-
- return new Double( number.doubleValue() * -1 );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultUnionExpr.java b/src/java/main/org/jaxen/expr/DefaultUnionExpr.java
deleted file mode 100644
index 1b669fc..0000000
--- a/src/java/main/org/jaxen/expr/DefaultUnionExpr.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultUnionExpr.java,v 1.17 2006/11/30 18:49:27 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/11/30 18:49:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultUnionExpr.java,v 1.17 2006/11/30 18:49:27 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.XPathSyntaxException;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultUnionExpr extends DefaultBinaryExpr implements UnionExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 7629142718276852707L;
-
- public DefaultUnionExpr(Expr lhs,
- Expr rhs)
- {
- super( lhs,
- rhs );
- }
-
- public String getOperator()
- {
- return "|";
- }
-
- public String toString()
- {
- return "[(DefaultUnionExpr): " + getLHS() + ", " + getRHS() + "]";
- }
-
- public Object evaluate(Context context) throws JaxenException
- {
- List results = new ArrayList();
-
- try {
- List lhsResults = (List) getLHS().evaluate( context );
- List rhsResults = (List) getRHS().evaluate( context );
-
- Set unique = new HashSet();
-
- results.addAll( lhsResults );
- unique.addAll( lhsResults );
-
- Iterator rhsIter = rhsResults.iterator();
-
- while ( rhsIter.hasNext() )
- {
- Object each = rhsIter.next();
-
- if ( ! unique.contains( each ) )
- {
- results.add( each );
- unique.add( each );
- }
- }
-
- Collections.sort(results, new NodeComparator(context.getNavigator()));
-
- return results;
- }
- catch (ClassCastException e) {
- throw new XPathSyntaxException(this.getText(), context.getPosition(), "Unions are only allowed over node-sets");
- }
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/expr/DefaultVariableReferenceExpr.java b/src/java/main/org/jaxen/expr/DefaultVariableReferenceExpr.java
deleted file mode 100644
index 880eb91..0000000
--- a/src/java/main/org/jaxen/expr/DefaultVariableReferenceExpr.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultVariableReferenceExpr.java,v 1.16 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.16 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultVariableReferenceExpr.java,v 1.16 2006/11/30 18:49:26 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.UnresolvableException;
-
-class DefaultVariableReferenceExpr extends DefaultExpr implements VariableReferenceExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 8832095437149358674L;
- private String prefix;
- private String localName;
-
- DefaultVariableReferenceExpr(String prefix,
- String variableName)
- {
- this.prefix = prefix;
- this.localName = variableName;
- }
-
- public String getPrefix()
- {
- return this.prefix;
- }
-
- public String getVariableName()
- {
- return this.localName;
- }
-
- public String toString()
- {
- return "[(DefaultVariableReferenceExpr): " + getQName() + "]";
- }
-
- private String getQName() {
- if ( "".equals(prefix) )
- {
- return localName;
- }
- return prefix + ":" + localName;
- }
-
- public String getText()
- {
- return "$" + getQName();
- }
-
- public Object evaluate(Context context)
- throws UnresolvableException
- {
- String namespaceURI =
- context.translateNamespacePrefixToUri( getPrefix() );
-
- return context.getVariableValue( namespaceURI,
- prefix,
- localName );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultXPathExpr.java b/src/java/main/org/jaxen/expr/DefaultXPathExpr.java
deleted file mode 100644
index c2b6d58..0000000
--- a/src/java/main/org/jaxen/expr/DefaultXPathExpr.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultXPathExpr.java,v 1.9 2006/06/03 20:52:26 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/06/03 20:52:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultXPathExpr.java,v 1.9 2006/06/03 20:52:26 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-/**
- * @deprecated this class will become non-public in the future;
- * use the interface instead
- */
-public class DefaultXPathExpr implements XPathExpr
-{
- /**
- *
- */
- private static final long serialVersionUID = 3007613096320896040L;
- private Expr rootExpr;
-
- public DefaultXPathExpr(Expr rootExpr)
- {
- this.rootExpr = rootExpr;
- }
-
- public Expr getRootExpr()
- {
- return this.rootExpr;
- }
-
- public void setRootExpr(Expr rootExpr)
- {
- this.rootExpr = rootExpr;
- }
-
- public String toString()
- {
- return "[(DefaultXPath): " + getRootExpr() + "]";
- }
-
- public String getText()
- {
- return getRootExpr().getText();
- }
-
- public void simplify()
- {
- setRootExpr( getRootExpr().simplify() );
- }
-
- public List asList(Context context) throws JaxenException
- {
- Expr expr = getRootExpr();
- Object value = expr.evaluate( context );
- List result = DefaultExpr.convertToList( value );
- return result;
- }
-}
diff --git a/src/java/main/org/jaxen/expr/DefaultXPathFactory.java b/src/java/main/org/jaxen/expr/DefaultXPathFactory.java
deleted file mode 100644
index d0e8203..0000000
--- a/src/java/main/org/jaxen/expr/DefaultXPathFactory.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultXPathFactory.java,v 1.17 2006/11/09 16:07:36 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/11/09 16:07:36 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultXPathFactory.java,v 1.17 2006/11/09 16:07:36 elharo Exp $
- */
-package org.jaxen.expr;
-
-import org.jaxen.JaxenException;
-import org.jaxen.expr.iter.IterableAncestorAxis;
-import org.jaxen.expr.iter.IterableAncestorOrSelfAxis;
-import org.jaxen.expr.iter.IterableAttributeAxis;
-import org.jaxen.expr.iter.IterableAxis;
-import org.jaxen.expr.iter.IterableChildAxis;
-import org.jaxen.expr.iter.IterableDescendantAxis;
-import org.jaxen.expr.iter.IterableDescendantOrSelfAxis;
-import org.jaxen.expr.iter.IterableFollowingAxis;
-import org.jaxen.expr.iter.IterableFollowingSiblingAxis;
-import org.jaxen.expr.iter.IterableNamespaceAxis;
-import org.jaxen.expr.iter.IterableParentAxis;
-import org.jaxen.expr.iter.IterablePrecedingAxis;
-import org.jaxen.expr.iter.IterablePrecedingSiblingAxis;
-import org.jaxen.expr.iter.IterableSelfAxis;
-import org.jaxen.saxpath.Axis;
-import org.jaxen.saxpath.Operator;
-
-/**
- * The concrete implementation of the XPathFactory anstract factory.
- *
- *
- * @see XPathFactory
- */
-public class DefaultXPathFactory implements XPathFactory
-{
- public XPathExpr createXPath( Expr rootExpr ) throws JaxenException
- {
- return new DefaultXPathExpr( rootExpr );
- }
-
- public PathExpr createPathExpr( FilterExpr filterExpr,
- LocationPath locationPath ) throws JaxenException
- {
- return new DefaultPathExpr( filterExpr,
- locationPath );
- }
-
- public LocationPath createRelativeLocationPath() throws JaxenException
- {
- return new DefaultRelativeLocationPath();
- }
-
- public LocationPath createAbsoluteLocationPath() throws JaxenException
- {
- return new DefaultAbsoluteLocationPath();
- }
-
- public BinaryExpr createOrExpr( Expr lhs,
- Expr rhs ) throws JaxenException
- {
- return new DefaultOrExpr( lhs,
- rhs );
- }
-
- public BinaryExpr createAndExpr( Expr lhs,
- Expr rhs ) throws JaxenException
- {
- return new DefaultAndExpr( lhs,
- rhs );
- }
-
- public BinaryExpr createEqualityExpr( Expr lhs,
- Expr rhs,
- int equalityOperator ) throws JaxenException
- {
- switch( equalityOperator )
- {
- case Operator.EQUALS:
- {
- return new DefaultEqualsExpr( lhs,
- rhs );
- }
- case Operator.NOT_EQUALS:
- {
- return new DefaultNotEqualsExpr( lhs,
- rhs );
- }
- }
- throw new JaxenException( "Unhandled operator in createEqualityExpr(): " + equalityOperator );
- }
-
- public BinaryExpr createRelationalExpr( Expr lhs,
- Expr rhs,
- int relationalOperator ) throws JaxenException
- {
- switch( relationalOperator )
- {
- case Operator.LESS_THAN:
- {
- return new DefaultLessThanExpr( lhs,
- rhs );
- }
- case Operator.GREATER_THAN:
- {
- return new DefaultGreaterThanExpr( lhs,
- rhs );
- }
- case Operator.LESS_THAN_EQUALS:
- {
- return new DefaultLessThanEqualExpr( lhs,
- rhs );
- }
- case Operator.GREATER_THAN_EQUALS:
- {
- return new DefaultGreaterThanEqualExpr( lhs,
- rhs );
- }
- }
- throw new JaxenException( "Unhandled operator in createRelationalExpr(): " + relationalOperator );
- }
-
- public BinaryExpr createAdditiveExpr( Expr lhs,
- Expr rhs,
- int additiveOperator ) throws JaxenException
- {
- switch( additiveOperator )
- {
- case Operator.ADD:
- {
- return new DefaultPlusExpr( lhs,
- rhs );
- }
- case Operator.SUBTRACT:
- {
- return new DefaultMinusExpr( lhs,
- rhs );
- }
- }
- throw new JaxenException( "Unhandled operator in createAdditiveExpr(): " + additiveOperator );
- }
-
- public BinaryExpr createMultiplicativeExpr( Expr lhs,
- Expr rhs,
- int multiplicativeOperator ) throws JaxenException
- {
- switch( multiplicativeOperator )
- {
- case Operator.MULTIPLY:
- {
- return new DefaultMultiplyExpr( lhs,
- rhs );
- }
- case Operator.DIV:
- {
- return new DefaultDivExpr( lhs,
- rhs );
- }
- case Operator.MOD:
- {
- return new DefaultModExpr( lhs,
- rhs );
- }
- }
- throw new JaxenException( "Unhandled operator in createMultiplicativeExpr(): " + multiplicativeOperator );
- }
-
- public Expr createUnaryExpr( Expr expr,
- int unaryOperator ) throws JaxenException
- {
- switch( unaryOperator )
- {
- case Operator.NEGATIVE:
- {
- return new DefaultUnaryExpr( expr );
- }
- }
- return expr;
- }
-
- public UnionExpr createUnionExpr( Expr lhs,
- Expr rhs ) throws JaxenException
- {
- return new DefaultUnionExpr( lhs,
- rhs );
- }
-
- public FilterExpr createFilterExpr( Expr expr ) throws JaxenException
- {
- return new DefaultFilterExpr( expr, createPredicateSet() );
- }
-
- public FunctionCallExpr createFunctionCallExpr( String prefix,
- String functionName ) throws JaxenException
- {
- return new DefaultFunctionCallExpr( prefix,
- functionName );
- }
-
- public NumberExpr createNumberExpr( int number ) throws JaxenException
- {
- return new DefaultNumberExpr( new Double( number ) );
- }
-
- public NumberExpr createNumberExpr( double number ) throws JaxenException
- {
- return new DefaultNumberExpr( new Double( number ) );
- }
-
- public LiteralExpr createLiteralExpr( String literal ) throws JaxenException
- {
- return new DefaultLiteralExpr( literal );
- }
-
- public VariableReferenceExpr createVariableReferenceExpr( String prefix,
- String variable ) throws JaxenException
- {
- return new DefaultVariableReferenceExpr( prefix,
- variable );
- }
-
- public Step createNameStep( int axis,
- String prefix,
- String localName ) throws JaxenException
- {
- IterableAxis iter = getIterableAxis( axis );
- return new DefaultNameStep( iter,
- prefix,
- localName,
- createPredicateSet() );
- }
-
- public Step createTextNodeStep( int axis ) throws JaxenException
- {
- IterableAxis iter = getIterableAxis( axis );
- return new DefaultTextNodeStep( iter, createPredicateSet() );
- }
-
- public Step createCommentNodeStep( int axis ) throws JaxenException
- {
- IterableAxis iter = getIterableAxis( axis );
- return new DefaultCommentNodeStep( iter, createPredicateSet() );
- }
-
- public Step createAllNodeStep( int axis ) throws JaxenException
- {
- IterableAxis iter = getIterableAxis( axis );
- return new DefaultAllNodeStep( iter, createPredicateSet() );
- }
-
- public Step createProcessingInstructionNodeStep( int axis,
- String piName ) throws JaxenException
- {
- IterableAxis iter = getIterableAxis( axis );
- return new DefaultProcessingInstructionNodeStep( iter,
- piName,
- createPredicateSet() );
- }
-
- public Predicate createPredicate( Expr predicateExpr ) throws JaxenException
- {
- return new DefaultPredicate( predicateExpr );
- }
-
- protected IterableAxis getIterableAxis( int axis ) throws JaxenException
- {
-
- switch( axis )
- {
- case Axis.CHILD:
- return new IterableChildAxis( axis );
- case Axis.DESCENDANT:
- return new IterableDescendantAxis( axis );
- case Axis.PARENT:
- return new IterableParentAxis( axis );
- case Axis.FOLLOWING_SIBLING:
- return new IterableFollowingSiblingAxis( axis );
- case Axis.PRECEDING_SIBLING:
- return new IterablePrecedingSiblingAxis( axis );
- case Axis.FOLLOWING:
- return new IterableFollowingAxis( axis );
- case Axis.PRECEDING:
- return new IterablePrecedingAxis( axis );
- case Axis.ATTRIBUTE:
- return new IterableAttributeAxis( axis );
- case Axis.NAMESPACE:
- return new IterableNamespaceAxis( axis );
- case Axis.SELF:
- return new IterableSelfAxis( axis );
- case Axis.DESCENDANT_OR_SELF:
- return new IterableDescendantOrSelfAxis( axis );
- case Axis.ANCESTOR_OR_SELF:
- return new IterableAncestorOrSelfAxis( axis );
- case Axis.ANCESTOR:
- return new IterableAncestorAxis( axis );
- default:
- throw new JaxenException("Unrecognized axis code: " + axis);
- }
-
- }
-
- public PredicateSet createPredicateSet() throws JaxenException
- {
- return new PredicateSet();
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/EqualityExpr.java b/src/java/main/org/jaxen/expr/EqualityExpr.java
deleted file mode 100644
index b39bc5e..0000000
--- a/src/java/main/org/jaxen/expr/EqualityExpr.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/EqualityExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/09 16:21:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: EqualityExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents an XPath equality expression. This is production 23 in the
- * <a href="http://www.w3.org/TR/xpath#NT-EqualityExpr">XPath 1.0 specification</a>:
- *
- * <table><tr valign="baseline">
- * <td><a name="NT-EqualityExpr"></a>[23] </td><td>EqualityExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">RelationalExpr</a></td><td></td></tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-EqualityExpr">EqualityExpr</a> '=' <a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">RelationalExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-EqualityExpr">EqualityExpr</a> '!=' <a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">RelationalExpr</a></td><td></td></tr>
- * </table>
- *
- */
-public interface EqualityExpr extends BinaryExpr{
-}
diff --git a/src/java/main/org/jaxen/expr/Expr.java b/src/java/main/org/jaxen/expr/Expr.java
deleted file mode 100644
index 3aa8bb8..0000000
--- a/src/java/main/org/jaxen/expr/Expr.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/Expr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/30 18:49:26 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Expr.java,v 1.14 2006/11/30 18:49:26 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.io.Serializable;
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-/**
- * Represents an XPath expression. This is production 14 in the
- * <a href="http://www.w3.org/TR/xpath#NT-Expr">XPath 1.0 specification</a>:
- *
- * <pre>[14] Expr ::= OrExpr</pre>
- *
- */
-public interface Expr extends Serializable
-{
-
-
- /**
- * Returns a String containing the XPath expression.
- *
- * @return the text form of this XPath expression
- */
- String getText();
-
- /**
- * Simplifies the XPath expression. For example, the expression
- * <code>//para[1 = 1]</code> could be simplified to
- * <code>//para</code>. In practice, this is usually a noop.
- * Jaxen does not currently perform any simplification.
- *
- * @return the simplified expression
- */
- Expr simplify();
-
-
- /**
- * Evaluate the expression in the given context, and return the result.
- * The result will be a <code>java.lang.Double</code> for expressions that
- * return a number, a <code>java.lang.String</code> for expressions that
- * return a string, a <code>java.lang.Boolean</code> for expressions that
- * return a boolean, and a <code>java.util.List</code> for expressions that
- * return a node-set. In the latter case, the elements of the list are
- * the actual objects from the source document model. Copies are not made.
- *
- * @param context the context in which the expression is evaluated
- * @return an object representing the result of the evaluation
- * @throws JaxenException
- */
- Object evaluate(Context context) throws JaxenException;
-
-}
diff --git a/src/java/main/org/jaxen/expr/FilterExpr.java b/src/java/main/org/jaxen/expr/FilterExpr.java
deleted file mode 100644
index 2fc478a..0000000
--- a/src/java/main/org/jaxen/expr/FilterExpr.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/FilterExpr.java,v 1.10 2006/11/08 16:28:04 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/11/08 16:28:04 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FilterExpr.java,v 1.10 2006/11/08 16:28:04 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-/**
- * Represents an XPath filter expression. This is production 20 in the
- * <a href="http://www.w3.org/TR/xpath#NT-EqualityExpr">XPath 1.0 specification</a>:
- *
- * <table><tr valign="baseline">
- * <td><a name="NT-FilterExpr"></a>[20] </td><td>FilterExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-PrimaryExpr">PrimaryExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-FilterExpr">FilterExpr</a> <a href="http://www.w3.org/TR/xpath#NT-Predicate">Predicate</a></td><td></td>
- * </tr>
- * </table>
- *
- */
-public interface FilterExpr extends Expr, Predicated
-{
-
- /**
- * Evaluates the filter expression on the current context
- * and returns true if at least one node matches.
- *
- * @return true if a node matches; false if no node matches
- */
- public boolean asBoolean(Context context) throws JaxenException;
-
- /**
- * @return the underlying filter expression
- */
- public Expr getExpr();
-}
diff --git a/src/java/main/org/jaxen/expr/FunctionCallExpr.java b/src/java/main/org/jaxen/expr/FunctionCallExpr.java
deleted file mode 100644
index 8f7038e..0000000
--- a/src/java/main/org/jaxen/expr/FunctionCallExpr.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/FunctionCallExpr.java,v 1.9 2006/11/08 16:37:59 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/11/08 16:37:59 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FunctionCallExpr.java,v 1.9 2006/11/08 16:37:59 elharo Exp $
- */
-
-
-package org.jaxen.expr;
-
-import java.util.List;
-
-/**
- * Represents an XPath function call expression. This is production 16 in the
- * <a href="http://www.w3.org/TR/xpath#NT-FunctionCall">XPath 1.0 specification</a>:
- *
- * <<pre>[16] FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument )* )? ')'</pre>
- *
- */
-public interface FunctionCallExpr extends Expr
-{
-
- /**
- * Returns the namespace prefix of the function. This is the empty
- * string for XPath's built-in functions.
- *
- * @return the namespace prefix of the function
- */
- public String getPrefix();
-
- /**
- * Returns the local name of the function.
- *
- * @return the local name of the function
- */
- public String getFunctionName();
-
- /**
- * Add the next argument to the function.
- *
- * @param parameter a function argument
- */
- public void addParameter(Expr parameter);
-
- /**
- * Returns the the ordered list of function arguments.
- * Each member of the list is an <code>Expr</code> object.
- *
- * @return the ordered list of function arguments
- */
- public List getParameters();
-
-}
diff --git a/src/java/main/org/jaxen/expr/IdentitySet.java b/src/java/main/org/jaxen/expr/IdentitySet.java
deleted file mode 100644
index 7560f54..0000000
--- a/src/java/main/org/jaxen/expr/IdentitySet.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- $Id$
-
- Copyright 2005 Elliotte Rusty Harold. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.expr;
-
-import java.util.HashSet;
-
-
-/**
- * <p>
- * This is a set that uses identity rather than equality semantics.
- * </p>
- *
- * @author Elliotte Rusty Harold
- *
- */
-final class IdentitySet {
-
- private HashSet contents = new HashSet();
-
- IdentitySet() {
- super();
- }
-
- void add(Object object) {
- IdentityWrapper wrapper = new IdentityWrapper(object);
- contents.add(wrapper);
- }
-
- public boolean contains(Object object) {
- IdentityWrapper wrapper = new IdentityWrapper(object);
- return contents.contains(wrapper);
- }
-
- private static class IdentityWrapper {
-
- private Object object;
-
- IdentityWrapper(Object object) {
- this.object = object;
- }
-
- public boolean equals(Object o) {
- IdentityWrapper w = (IdentityWrapper) o;
- return object == w.object;
- }
-
- public int hashCode() {
- return System.identityHashCode(object);
- }
-
- }
-
-
-}
diff --git a/src/java/main/org/jaxen/expr/LiteralExpr.java b/src/java/main/org/jaxen/expr/LiteralExpr.java
deleted file mode 100644
index e19d459..0000000
--- a/src/java/main/org/jaxen/expr/LiteralExpr.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/LiteralExpr.java,v 1.9 2006/11/08 16:47:30 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/11/08 16:47:30 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LiteralExpr.java,v 1.9 2006/11/08 16:47:30 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-
-/**
- * Represents an XPath string literal. This is production 29 in the
- * <a href="http://www.w3.org/TR/xpath#NT-Literal">XPath 1.0 specification</a>:
- *
- * <pre>[29] Literal ::= '"' [^"]* '"'
- * | "'" [^']* "'"</pre>
- *
- */
-public interface LiteralExpr extends Expr
-{
- /**
- * Returns the contents of the string literal, not including the
- * quote marks.
- *
- * @return the contents of the string literal
- */
- public String getLiteral();
-}
diff --git a/src/java/main/org/jaxen/expr/LocationPath.java b/src/java/main/org/jaxen/expr/LocationPath.java
deleted file mode 100644
index e65c3e3..0000000
--- a/src/java/main/org/jaxen/expr/LocationPath.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/LocationPath.java,v 1.9 2006/11/08 17:02:21 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/11/08 17:02:21 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LocationPath.java,v 1.9 2006/11/08 17:02:21 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-import java.util.List;
-
-/**
- * Represents an XPath location path such as <code>//foo/bar</code>
- * or <code>pre:baz[position()=last()]</code>.
- * This is production 1 in the
- * <a href="http://www.w3.org/TR/xpath#NT-LocationPath">XPath 1.0 specification</a>:
- *
- * <pre>[1] LocationPath ::= RelativeLocationPath
- * | AbsoluteLocationPath</pre>
- *
- */
-public interface LocationPath extends Expr
-{
-
- /**
- * Add the next step to this location path.
- *
- * @param step
- */
- void addStep(Step step);
-
- /**
- * Returns the ordered list of steps in this location path.
- * This list may be live.
- *
- * @return the ordered list of steps in this location path
- */
- List getSteps();
-
- /**
- * Returns true if this is an absolute location path; false if it isn't.
- * Absolute location paths all begiune with <code>/</code>
- * or <code>//</code>.
- *
- * @return true if this is an absol;ute location path; false if it isn't
- */
- boolean isAbsolute();
-}
diff --git a/src/java/main/org/jaxen/expr/LogicalExpr.java b/src/java/main/org/jaxen/expr/LogicalExpr.java
deleted file mode 100644
index 3a2fd76..0000000
--- a/src/java/main/org/jaxen/expr/LogicalExpr.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/LogicalExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/09 16:21:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LogicalExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents an XPath logical expression. This represents productions
- * <a href="http://www.w3.org/TR/xpath#NT-OrExpr">21 OrExpr</a> and
- * <a href="http://www.w3.org/TR/xpath#NT-AndExpr">22 AndExpr</a> in the XPath specification.
- *
- * <table><tr valign="baseline">
- * <td><a name="NT-OrExpr"></a>[21] </td><td>OrExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-AndExpr">AndExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-OrExpr">OrExpr</a> 'or' <a href="http://www.w3.org/TR/xpath#NT-AndExpr">AndExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td><a name="NT-AndExpr"></a>[22] </td><td>AndExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-EqualityExpr">EqualityExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-AndExpr">AndExpr</a> 'and' <a href="http://www.w3.org/TR/xpath#NT-EqualityExpr">EqualityExpr</a></td><td></td>
- * </tr></table>
- *
- */
-public interface LogicalExpr extends BinaryExpr {
-}
diff --git a/src/java/main/org/jaxen/expr/MultiplicativeExpr.java b/src/java/main/org/jaxen/expr/MultiplicativeExpr.java
deleted file mode 100644
index e13d4fc..0000000
--- a/src/java/main/org/jaxen/expr/MultiplicativeExpr.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/MultiplicativeExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/09 16:21:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: MultiplicativeExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents an XPath multiplicative expression. This is production 26 in the
- * <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">XPath 1.0 specification</a>:
- *
- * <table><tr valign="baseline">
- * <td><a name="NT-MultiplicativeExpr"></a>[26] </td><td>MultiplicativeExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-UnaryExpr">UnaryExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-MultiplicativeExpr">MultiplicativeExpr</a> <a href="http://www.w3.org/TR/xpath#NT-MultiplyOperator">MultiplyOperator</a> <a href="http://www.w3.org/TR/xpath#NT-UnaryExpr">UnaryExpr</a></td><td></td>
- *
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-MultiplicativeExpr">MultiplicativeExpr</a> 'div' <a href="http://www.w3.org/TR/xpath#NT-UnaryExpr">UnaryExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-MultiplicativeExpr">MultiplicativeExpr</a> 'mod' <a href="http://www.w3.org/TR/xpath#NT-UnaryExpr">UnaryExpr</a></td><td></td>
- * </tr></table>
- *
- */
-public interface MultiplicativeExpr extends BinaryExpr {
-}
diff --git a/src/java/main/org/jaxen/expr/NameStep.java b/src/java/main/org/jaxen/expr/NameStep.java
deleted file mode 100644
index aee4587..0000000
--- a/src/java/main/org/jaxen/expr/NameStep.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/NameStep.java,v 1.5 2006/11/08 17:10:02 elharo Exp $
- * $Revision: 1.5 $
- * $Date: 2006/11/08 17:10:02 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NameStep.java,v 1.5 2006/11/08 17:10:02 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents an XPath name test such as <code>para</code> or
- * <code>svg:rect</code>. This is production 37 in the
- * <a href="http://www.w3.org/TR/xpath#NT-NameTest">XPath 1.0 specification</a>:
- *
- * <pre>[37] NameTest ::= '*'
- * | NCName ':' '*'
- * | QName</pre>
- *
- */
-public interface NameStep extends Step
-{
-
- /**
- * Returns the namespace prefix of the matched node. This is the empty
- * string for nodes in the default namespace.
- *
- * @return the namespace prefix of the natched node
- */
- public String getPrefix();
-
- /**
- * Returns the local name of the matched node
- *
- * @return the local name of the test
- */
- public String getLocalName();}
diff --git a/src/java/main/org/jaxen/expr/NodeComparator.java b/src/java/main/org/jaxen/expr/NodeComparator.java
deleted file mode 100644
index 582a049..0000000
--- a/src/java/main/org/jaxen/expr/NodeComparator.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.expr;
-
-import java.util.Comparator;
-import java.util.Iterator;
-
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-
-
-class NodeComparator implements Comparator {
-
- private Navigator navigator;
-
-
- NodeComparator(Navigator navigator) {
- this.navigator = navigator;
- }
-
- public int compare(Object o1, Object o2) {
-
- if (navigator == null) return 0;
-
- if (isNonChild(o1) && isNonChild(o2)) {
-
- try {
- Object p1 = navigator.getParentNode(o1);
- Object p2 = navigator.getParentNode(o2);
-
- if (p1 == p2) {
- if (navigator.isNamespace(o1) && navigator.isAttribute(o2)) {
- return -1;
- }
- else if (navigator.isNamespace(o2) && navigator.isAttribute(o1)) {
- return 1;
- }
- }
-
- return compare(p1, p2);
- }
- catch (UnsupportedAxisException ex) {
- return 0;
- }
-
- }
-
- try {
- int depth1 = getDepth(o1);
- int depth2 = getDepth(o2);
-
- Object a1 = o1;
- Object a2 = o2;
-
- while (depth1 > depth2) {
- a1 = navigator.getParentNode(a1);
- depth1--;
- }
- if (a1 == o2) return 1;
-
- while (depth2 > depth1) {
- a2 = navigator.getParentNode(a2);
- depth2--;
- }
- if (a2 == o1) return -1;
-
- // a1 and a2 are now at same depth; and are not the same
- while (true) {
- Object p1 = navigator.getParentNode(a1);
- Object p2 = navigator.getParentNode(a2);
- if (p1 == p2) {
- return compareSiblings(a1, a2);
- }
- a1 = p1;
- a2 = p2;
- }
-
- }
- catch (UnsupportedAxisException ex) {
- return 0; // ???? should I throw an exception instead?
- }
- }
-
-
- private boolean isNonChild(Object o) {
- return navigator.isAttribute(o) || navigator.isNamespace(o);
- }
-
- private int compareSiblings(Object sib1, Object sib2)
- throws UnsupportedAxisException {
-
- Iterator following = navigator.getFollowingSiblingAxisIterator(sib1);
- while (following.hasNext()) {
- Object next = following.next();
- if (next.equals(sib2)) return -1;
- }
- return 1;
-
- }
-
- private int getDepth(Object o) throws UnsupportedAxisException {
-
- int depth = 0;
- Object parent = o;
-
- while ((parent = navigator.getParentNode(parent)) != null) {
- depth++;
- }
- return depth;
-
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/NumberExpr.java b/src/java/main/org/jaxen/expr/NumberExpr.java
deleted file mode 100644
index fff78f4..0000000
--- a/src/java/main/org/jaxen/expr/NumberExpr.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/NumberExpr.java,v 1.8 2006/11/08 17:17:32 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/11/08 17:17:32 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NumberExpr.java,v 1.8 2006/11/08 17:17:32 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents an XPath floating point literal. This is production 30 in the
- * <a href="http://www.w3.org/TR/xpath#NT-Number">XPath 1.0 specification</a>:
- *
- * <pre>[30] Number ::= Digits ('.' Digits?)?
- * | '.' Digits</pre>
- *
- */
-public interface NumberExpr extends Expr
-{
-
-
- /**
- * Returns a <code>java.lang.Double</code> representing the number.
- *
- * @return a <code>java.lang.Double</code> representing the number
- */
- public Number getNumber();
-}
diff --git a/src/java/main/org/jaxen/expr/PathExpr.java b/src/java/main/org/jaxen/expr/PathExpr.java
deleted file mode 100644
index b912fdb..0000000
--- a/src/java/main/org/jaxen/expr/PathExpr.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/PathExpr.java,v 1.9 2007/05/02 14:26:41 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2007/05/02 14:26:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: PathExpr.java,v 1.9 2007/05/02 14:26:41 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-/**
- * Represents an XPath path expression.
- * This is production 19 in the
- * <a href="http://www.w3.org/TR/xpath#NT-PathExpr">XPath 1.0 specification</a>:
- *
- * <pre>[19] PathExpr ::= LocationPath
- * | FilterExpr
- * | FilterExpr '/' RelativeLocationPath
- * | FilterExpr '//' RelativeLocationPath </pre>
- *
- */
-public interface PathExpr extends Expr
-{
-
- /**
- * Returns the filter expression that starts the path expression.
- *
- * @return the filter expression that starts the path expression
- */
- Expr getFilterExpr();
-
-
- /**
- * Changes the expression's filter expression.
- *
- * @param filterExpr the new filter expression
- */
- void setFilterExpr(Expr filterExpr);
-
- /**
- * Returns the location path part of this path expression.
- *
- * @return the location path part of this expression
- */
- LocationPath getLocationPath();
-
-}
diff --git a/src/java/main/org/jaxen/expr/Predicate.java b/src/java/main/org/jaxen/expr/Predicate.java
deleted file mode 100644
index 3742ba0..0000000
--- a/src/java/main/org/jaxen/expr/Predicate.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/Predicate.java,v 1.14 2007/05/02 14:27:46 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2007/05/02 14:27:46 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Predicate.java,v 1.14 2007/05/02 14:27:46 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.io.Serializable;
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-
-/**
- * Represents an XPath predicate such as <code>[position() = last()]</code>.
- * This is production 8 and 9 in the
- * <a href="http://www.w3.org/TR/xpath#NT-Predicate">XPath 1.0 specification</a>:
- *
- * <pre> [8] Predicate ::= '[' PredicateExpr ']'
- * [9] PredicateExpr ::= Expr</pre>
- *
- */
-public interface Predicate extends Serializable
-{
- /**
- * Returns the expression in this predicate.
- *
- * @return the expression between the brackets
- */
- Expr getExpr();
-
- /**
- * Change the expression used by this predicate.
- *
- * @param expr the new expression
- */
- void setExpr(Expr expr);
-
- /**
- * Simplify the expression in this predicate.
- *
- * @see Expr#simplify()
- */
- void simplify();
-
- /**
- * Returns the string form of the predicate,
- * including the square brackets.
- *
- * @return the bracketed form of this predicate
- */
- String getText();
-
- /**
- * Evaluates this predicate's expression and returns the result.
- * The result will be a <code>java.lang.Double</code> for expressions that
- * return a number, a <code>java.lang.String</code> for expressions that
- * return a string, a <code>java.lang.Boolean</code> for expressions that
- * return a boolean, and a <code>java.util.List</code> for expressions that
- * return a node-set. In the latter case, the elements of the list are
- * the actual objects from the source document model. Copies are not made.
- *
- * @param context the context in which the expression is evaluated
- * @return an object representing the result of the evaluation
- * @throws JaxenException
- * @see Expr#evaluate(Context)
- */
- Object evaluate(Context context) throws JaxenException;
-
-}
diff --git a/src/java/main/org/jaxen/expr/PredicateSet.java b/src/java/main/org/jaxen/expr/PredicateSet.java
deleted file mode 100644
index f2e06c8..0000000
--- a/src/java/main/org/jaxen/expr/PredicateSet.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/PredicateSet.java,v 1.23 2006/11/13 22:38:17 elharo Exp $
- * $Revision: 1.23 $
- * $Date: 2006/11/13 22:38:17 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: PredicateSet.java,v 1.23 2006/11/13 22:38:17 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.function.BooleanFunction;
-
-/**
- * <p>
- * Represents the collection of predicates that follow the node-test in a
- * location path.
- * </p>
- *
- * <p>
- * There is no rule that the same predicate may not
- * appear twice in an XPath expression, nor does this class enforce any such rule.
- * This is implemented more as a list than a set. However, adding the swme predicate
- * twice should have no effect on the final result other than slowing it down.
- * </p>
- */
-public class PredicateSet implements Serializable
-{
-
- private static final long serialVersionUID = -7166491740228977853L;
-
- private List predicates;
-
- /**
- * Create a new empty predicate set.
- */
- public PredicateSet()
- {
- this.predicates = Collections.EMPTY_LIST;
- }
-
- /**
- * Add a predicate to the set.
- *
- * @param predicate the predicate to be inserted
- */
- public void addPredicate(Predicate predicate)
- {
- if ( this.predicates == Collections.EMPTY_LIST )
- {
- this.predicates = new ArrayList();
- }
-
- this.predicates.add( predicate );
- }
-
- /**
- * Returns the list containing the predicates.
- * This list is live, not a copy.
- *
- * @return a live list of predicates
- */
- public List getPredicates()
- {
- return this.predicates;
- }
-
- /**
- * Simplify each of the predicates in the list.
- */
- public void simplify()
- {
- Iterator predIter = this.predicates.iterator();
- Predicate eachPred = null;
-
- while ( predIter.hasNext() )
- {
- eachPred = (Predicate) predIter.next();
- eachPred.simplify();
- }
- }
-
- /**
- * Returns the XPath string containing each of the predicates.
- *
- * @return the XPath string containing each of the predicates
- */
- public String getText()
- {
- StringBuffer buf = new StringBuffer();
-
- Iterator predIter = this.predicates.iterator();
- Predicate eachPred = null;
-
- while ( predIter.hasNext() )
- {
- eachPred = (Predicate) predIter.next();
- buf.append( eachPred.getText() );
- }
-
- return buf.toString();
- }
-
- /**
- * <p>Returns true if any of the supplied nodes satisfy
- * all the predicates in the set. Returns false if none of the supplied
- * nodes matches all the predicates in the set. Returns false if the
- * node-set is empty.</p>
- *
- * @param contextNodeSet the nodes to test against these predicates
- * @param support ????
- * @return true if any node in the contextNodeSet matches all the predicates
- * @throws JaxenException
- */
- protected boolean evaluateAsBoolean(List contextNodeSet,
- ContextSupport support) throws JaxenException
- {
- return anyMatchingNode( contextNodeSet, support );
- }
-
- private boolean anyMatchingNode(List contextNodeSet, ContextSupport support)
- throws JaxenException {
- // Easy way out (necessary)
- if (predicates.size() == 0) {
- return false;
- }
- Iterator predIter = predicates.iterator();
-
- // initial list to filter
- List nodes2Filter = contextNodeSet;
- // apply all predicates
- while(predIter.hasNext()) {
- final int nodes2FilterSize = nodes2Filter.size();
- // Set up a dummy context with a list to hold each node
- Context predContext = new Context(support);
- List tempList = new ArrayList(1);
- predContext.setNodeSet(tempList);
- // loop through the current nodes to filter and add to the
- // filtered nodes list if the predicate succeeds
- for (int i = 0; i < nodes2FilterSize; ++i) {
- Object contextNode = nodes2Filter.get(i);
- tempList.clear();
- tempList.add(contextNode);
- predContext.setNodeSet(tempList);
- // ????
- predContext.setPosition(i + 1);
- predContext.setSize(nodes2FilterSize);
- Object predResult = ((Predicate)predIter.next()).evaluate(predContext);
- if (predResult instanceof Number) {
- // Here we assume nodes are in forward or reverse order
- // as appropriate for axis
- int proximity = ((Number) predResult).intValue();
- if (proximity == (i + 1)) {
- return true;
- }
- }
- else {
- Boolean includes =
- BooleanFunction.evaluate(predResult,
- predContext.getNavigator());
- if (includes.booleanValue()) {
- return true;
- }
- }
- }
- }
-
- return false;
- }
-
-
-
-
- /**
- * <p>Returns all of the supplied nodes that satisfy
- * all the predicates in the set. </p>
- *
- * @param contextNodeSet the nodes to test against these predicates
- * @param support ????
- * @return all the nodes that match each of the predicates
- * @throws JaxenException
- */
- protected List evaluatePredicates(List contextNodeSet, ContextSupport support)
- throws JaxenException {
- // Easy way out (necessary)
- if (predicates.size() == 0) {
- return contextNodeSet;
- }
- Iterator predIter = predicates.iterator();
-
- // initial list to filter
- List nodes2Filter = contextNodeSet;
- // apply all predicates
- while(predIter.hasNext()) {
- nodes2Filter =
- applyPredicate((Predicate)predIter.next(), nodes2Filter, support);
- }
-
- return nodes2Filter;
- }
-
- public List applyPredicate(Predicate predicate, List nodes2Filter, ContextSupport support)
- throws JaxenException {
- final int nodes2FilterSize = nodes2Filter.size();
- List filteredNodes = new ArrayList(nodes2FilterSize);
- // Set up a dummy context with a list to hold each node
- Context predContext = new Context(support);
- List tempList = new ArrayList(1);
- predContext.setNodeSet(tempList);
- // loop through the current nodes to filter and add to the
- // filtered nodes list if the predicate succeeds
- for (int i = 0; i < nodes2FilterSize; ++i) {
- Object contextNode = nodes2Filter.get(i);
- tempList.clear();
- tempList.add(contextNode);
- predContext.setNodeSet(tempList);
- // ????
- predContext.setPosition(i + 1);
- predContext.setSize(nodes2FilterSize);
- Object predResult = predicate.evaluate(predContext);
- if (predResult instanceof Number) {
- // Here we assume nodes are in forward or reverse order
- // as appropriate for axis
- int proximity = ((Number) predResult).intValue();
- if (proximity == (i + 1)) {
- filteredNodes.add(contextNode);
- }
- }
- else {
- Boolean includes =
- BooleanFunction.evaluate(predResult,
- predContext.getNavigator());
- if (includes.booleanValue()) {
- filteredNodes.add(contextNode);
- }
- }
- }
- return filteredNodes;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/Predicated.java b/src/java/main/org/jaxen/expr/Predicated.java
deleted file mode 100644
index f2e5a2b..0000000
--- a/src/java/main/org/jaxen/expr/Predicated.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/Predicated.java,v 1.9 2006/11/08 18:07:25 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/11/08 18:07:25 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Predicated.java,v 1.9 2006/11/08 18:07:25 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Interface for objects which can have one or more predicates.
- *
- */
-public interface Predicated extends Serializable
-{
- /**
- * Add an additional predicate to this object.
- *
- * @param predicate the predicate to add
- */
- void addPredicate(Predicate predicate);
-
-
- /**
- * Returns a possibly empty list of predicates.
- *
- * @return the list of predicates
- */
- List getPredicates();
-
-
- /**
- * Returns a possibly empty set of predicates.
- *
- * @return the set of predicates
- */
- PredicateSet getPredicateSet();
-}
diff --git a/src/java/main/org/jaxen/expr/ProcessingInstructionNodeStep.java b/src/java/main/org/jaxen/expr/ProcessingInstructionNodeStep.java
deleted file mode 100644
index 9b2def9..0000000
--- a/src/java/main/org/jaxen/expr/ProcessingInstructionNodeStep.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/ProcessingInstructionNodeStep.java,v 1.5 2006/11/08 15:44:33 elharo Exp $
- * $Revision: 1.5 $
- * $Date: 2006/11/08 15:44:33 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: ProcessingInstructionNodeStep.java,v 1.5 2006/11/08 15:44:33 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents the XPath node-test <code>processing-instruction()</code>.
- *
- */
-public interface ProcessingInstructionNodeStep extends Step
-{
- /**
- * Returns the target matched by this processing instruction node-step.
- *
- * @return the target of the processing instruction
- */
- public String getName();
-}
diff --git a/src/java/main/org/jaxen/expr/RelationalExpr.java b/src/java/main/org/jaxen/expr/RelationalExpr.java
deleted file mode 100644
index f927314..0000000
--- a/src/java/main/org/jaxen/expr/RelationalExpr.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/RelationalExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/09 16:21:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: RelationalExpr.java,v 1.6 2006/11/09 16:21:05 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents an XPath relational expression such as
- * <code>count(//p) > count(//div)</code>.
- * This is production 24 in the
- * <a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">XPath 1.0 specification</a>:
- *
- *<table><tr valign="baseline"><td><a name="NT-RelationalExpr"></a>[24] </td><td>RelationalExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr">AdditiveExpr</a></td><td></td>
- *</tr><tr valign="baseline">
- *<td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">RelationalExpr</a> '<' <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr">AdditiveExpr</a></td><td></td>
- *</tr><tr valign="baseline">
- *<td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">RelationalExpr</a> '>' <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr">AdditiveExpr</a></td><td></td>
- *</tr>
- *<tr valign="baseline">
- *<td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">RelationalExpr</a> '<=' <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr">AdditiveExpr</a></td><td></td>
- * </tr>
- * <tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-RelationalExpr">RelationalExpr</a> '>=' <a href="http://www.w3.org/TR/xpath#NT-AdditiveExpr">AdditiveExpr</a></td><td></td>v * </tr></table>
- *
- */
-public interface RelationalExpr extends BinaryExpr {
-}
diff --git a/src/java/main/org/jaxen/expr/Step.java b/src/java/main/org/jaxen/expr/Step.java
deleted file mode 100644
index e3ba1f6..0000000
--- a/src/java/main/org/jaxen/expr/Step.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/Step.java,v 1.13 2006/12/10 15:32:14 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/12/10 15:32:14 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Step.java,v 1.13 2006/12/10 15:32:14 elharo Exp $
- */
-
-package org.jaxen.expr;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.UnsupportedAxisException;
-
-/**
- * <p>Represents a location step in a LocationPath. The node-set selected by
- * the location step is the node-set that results from generating an initial
- * node-set from the axis and node-test, and then filtering that node-set by
- * each of the predicates in turn.</p>
- *
- * <p>
- * The initial node-set consists of the nodes having the relationship to the
- * context node specified by the axis, and having the node type and expanded-name
- * specified by the node test.</p>
- */
-public interface Step extends Predicated
-{
-
- /**
- * Performs the node-test part of evaluating the step for the given node
- * (which must be on the axis).
- *
- * @return true if the node matches this step; false if it doesn't
- */
- boolean matches(Object node,
- ContextSupport contextSupport) throws JaxenException;
-
- /**
- * Returns a <code>String</code> containing the XPath expression.
- *
- * @return the text form of this step
- */
- String getText();
-
- /**
- * Simplifies the XPath step. In practice, this is usually a noop.
- * Jaxen does not currently perform any simplification.
- */
- void simplify();
-
- /**
- * Get an identifier for the current axis.
- *
- * @return the axis identifier
- * @see org.jaxen.saxpath.Axis
- */
- public int getAxis();
-
- /**
- * Get an Iterator for the current axis starting in the given contextNode.
- *
- * @param contextNode the node from which to follow this step
- * @param support the remaining context for the traversal
- * @return an iterator over the nodes along the axis
- * @throws UnsupportedAxisException if the navigator does not support this step's axis
- *
- */
- Iterator axisIterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException;
-
-
- /**
- * For each node in the given context calls matches() for every node on the
- * axis, then filters the result by each of the predicates.
- *
- * @return a list of matching nodes
- */
- List evaluate(Context context) throws JaxenException;
-
-}
-
diff --git a/src/java/main/org/jaxen/expr/TextNodeStep.java b/src/java/main/org/jaxen/expr/TextNodeStep.java
deleted file mode 100644
index 63643dd..0000000
--- a/src/java/main/org/jaxen/expr/TextNodeStep.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/TextNodeStep.java,v 1.6 2006/11/08 18:52:02 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/11/08 18:52:02 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: TextNodeStep.java,v 1.6 2006/11/08 18:52:02 elharo Exp $
- */
-package org.jaxen.expr;
-
-/**
- * Represents the XPath node-test <code>text()</code>.
- *
- */
-public interface TextNodeStep extends Step
-{
-}
diff --git a/src/java/main/org/jaxen/expr/UnaryExpr.java b/src/java/main/org/jaxen/expr/UnaryExpr.java
deleted file mode 100644
index e6fb3dc..0000000
--- a/src/java/main/org/jaxen/expr/UnaryExpr.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/UnaryExpr.java,v 1.7 2006/11/08 19:06:30 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/11/08 19:06:30 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: UnaryExpr.java,v 1.7 2006/11/08 19:06:30 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-/**
- * Represents an XPath unary expression such as <code>-78</code>.
- * This is production 27 in the
- * <a href="http://www.w3.org/TR/xpath#NT-UnaryExpr">XPath 1.0 specification</a>:
- *
- * <pre>[27] UnaryExpr ::= UnionExpr | '-' UnaryExpr</pre>
- *
- */
-public interface UnaryExpr extends Expr
-{
-
- /**
- * Returns the expression following the minus sign.
- *
- * @return the expression following the minus sign
- */
- Expr getExpr();
-
-}
diff --git a/src/java/main/org/jaxen/expr/UnionExpr.java b/src/java/main/org/jaxen/expr/UnionExpr.java
deleted file mode 100644
index 28bae38..0000000
--- a/src/java/main/org/jaxen/expr/UnionExpr.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/UnionExpr.java,v 1.7 2006/11/08 15:57:20 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/11/08 15:57:20 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: UnionExpr.java,v 1.7 2006/11/08 15:57:20 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-/**
- * Represents an XPath union expression. This is production 18 in the
- * <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">XPath 1.0 specification</a>:
- *
- * <table><tr valign="baseline">
- * <td><a name="NT-UnionExpr"></a>[18] </td><td>UnionExpr</td><td> ::= </td><td><a href="http://www.w3.org/TR/xpath#NT-PathExpr">PathExpr</a></td><td></td>
- * </tr><tr valign="baseline">
- * <td></td><td></td><td></td><td>| <a href="http://www.w3.org/TR/xpath#NT-UnionExpr">UnionExpr</a> '|' <a href="http://www.w3.org/TR/xpath#NT-PathExpr">PathExpr</a>
- * </tr></table>
- *
- */
-public interface UnionExpr extends BinaryExpr
-{
-}
diff --git a/src/java/main/org/jaxen/expr/VariableReferenceExpr.java b/src/java/main/org/jaxen/expr/VariableReferenceExpr.java
deleted file mode 100644
index d0f9f03..0000000
--- a/src/java/main/org/jaxen/expr/VariableReferenceExpr.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/VariableReferenceExpr.java,v 1.8 2006/11/08 19:20:29 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/11/08 19:20:29 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: VariableReferenceExpr.java,v 1.8 2006/11/08 19:20:29 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-/**
- * Represents an XPath variable reference. This is production 36 in the
- * <a href="http://www.w3.org/TR/xpath#NT-VariableReference">XPath 1.0 specification</a>:
- *
- * <pre>[36] VariableReference ::= '$' QName</pre>
- *
- */
-public interface VariableReferenceExpr extends Expr
-{
- /**
- * Returns the namespace prefix of the variable. This is the empty
- * string for variables with no namespace prefix.
- *
- * @return the namespace prefix of the variable
- */
- public String getPrefix();
-
- /**
- * Returns the local name of the variable.
- *
- * @return the local name of the variable
- */
- public String getVariableName();
-
-}
diff --git a/src/java/main/org/jaxen/expr/XPathExpr.java b/src/java/main/org/jaxen/expr/XPathExpr.java
deleted file mode 100644
index b10fc7b..0000000
--- a/src/java/main/org/jaxen/expr/XPathExpr.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/XPathExpr.java,v 1.9 2007/05/02 15:04:46 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2007/05/02 15:04:46 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathExpr.java,v 1.9 2007/05/02 15:04:46 elharo Exp $
- */
-
-
-
-package org.jaxen.expr;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-
-/**
- * A wrapper around an XPath expression.
- *
- */
-public interface XPathExpr extends Serializable
-{
-
- /**
- * Returns the wrapped expression object.
- *
- * @return the wrapped Expr object
- */
- Expr getRootExpr();
-
-
- /**
- * Changes the wrapped expression object.
- *
- * @param rootExpr the new expression object to wrap
- */
- void setRootExpr(Expr rootExpr);
-
- /**
- * Returns a String containing the XPath expression.
- *
- * @return the text form of this XPath expression
- */
- String getText();
-
- /**
- * Simplifies the XPath expression. For example, the expression
- * <code>//para[1 = 1]</code> could be simplified to
- * <code>//para</code>. In practice, this is usually a noop.
- * Jaxen does not currently perform any simplification.
- */
- void simplify();
-
-
- /**
- * Evaluates the expression and returns a list cintaing the resulting nodes,
- * or a singleton list containing a <code>Double</code>, <code>String</code>,
- * or <code>Boolean</code>.
- *
- * @param context the context in which to evaluate this expression
- * @return a list
- * @throws JaxenException
- */
- List asList(Context context) throws JaxenException;
-
-}
diff --git a/src/java/main/org/jaxen/expr/XPathFactory.java b/src/java/main/org/jaxen/expr/XPathFactory.java
deleted file mode 100644
index d18946c..0000000
--- a/src/java/main/org/jaxen/expr/XPathFactory.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/XPathFactory.java,v 1.13 2007/05/02 14:32:38 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2007/05/02 14:32:38 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathFactory.java,v 1.13 2007/05/02 14:32:38 elharo Exp $
- */
-package org.jaxen.expr;
-
-import org.jaxen.JaxenException;
-import org.jaxen.saxpath.Operator;
-
-/**
- * An abstract factory used to create individual path component objects.
- *
- */
-public interface XPathFactory
-{
-
- /**
- * Create a new <code>XPathExpr</code> from an <code>Expr</code>.
- *
- * @param rootExpr the expression wrapped by the resuolting XPathExpr
- * @return an XPathExpr wrapping the root expression
- * @throws JaxenException
- */
- XPathExpr createXPath( Expr rootExpr ) throws JaxenException;
-
- /**
- * Create a new path expression.
- *
- * @param filterExpr the filter expression that starts the path expression
- * @param locationPath the location path that follows the filter expression
- * @return a path expression formed by concatenating the two arguments
- * @throws JaxenException
- */
- PathExpr createPathExpr( FilterExpr filterExpr,
- LocationPath locationPath ) throws JaxenException;
-
- /**
- * Create a new empty relative location path.
- *
- * @return an empty relative location path
- * @throws JaxenException
- */
- LocationPath createRelativeLocationPath() throws JaxenException;
-
- /**
- * Create a new empty absolute location path.
- *
- * @return an empty absolute location path
- * @throws JaxenException
- */
- LocationPath createAbsoluteLocationPath() throws JaxenException;
-
- /**
- * Returns a new XPath Or expression.
- *
- * @param lhs the left hand side of the expression
- * @param rhs the right hand side of the expression
- * @return <code><i>lhs</i> or <i>rhs</i></code>
- * @throws JaxenException
- */
- BinaryExpr createOrExpr( Expr lhs,
- Expr rhs ) throws JaxenException;
-
- /**
- * Returns a new XPath And expression.
- *
- * @param lhs the left hand side of the expression
- * @param rhs the right hand side of the expression
- * @return <code><i>lhs</i> and <i>rhs</i></code>
- * @throws JaxenException
- */
- BinaryExpr createAndExpr( Expr lhs,
- Expr rhs ) throws JaxenException;
-
- /**
- * Returns a new XPath equality expression.
- *
- * @param lhs the left hand side of the expression
- * @param rhs the right hand side of the expression
- * @param equalityOperator <code>Operator.EQUALS</code> or <code>Operator.NOT_EQUALS</code>
- * @return <code><i>lhs</i> = <i>rhs</i></code> or <code><i>lhs</i> != <i>rhs</i></code>
- * @throws JaxenException if the third argument is not
- * <code>Operator.EQUALS</code> or <code>Operator.NOT_EQUALS</code>
- */
- BinaryExpr createEqualityExpr( Expr lhs,
- Expr rhs,
- int equalityOperator ) throws JaxenException;
-
- /**
- * Returns a new XPath relational expression.
- *
- * @param lhs the left hand side of the expression
- * @param rhs the right hand side of the expression
- * @param relationalOperator <code>Operator.LESS_THAN</code>, <code>Operator.GREATER_THAN</code>,
- * <code>Operator.LESS_THAN_EQUALS</code>, or <code>Operator.GREATER_THAN_EQUALS</code>
- * @return <code><i>lhs</i> <i>relationalOperator</i> <i>rhs</i></code> or <code><i>lhs</i> != <i>rhs</i></code>
- * @throws JaxenException if the third argument is not a relational operator constant
- */
- BinaryExpr createRelationalExpr( Expr lhs,
- Expr rhs,
- int relationalOperator ) throws JaxenException;
-
- /**
- * Returns a new XPath additive expression.
- *
- * @param lhs the left hand side of the expression
- * @param rhs the right hand side of the expression
- * @param additiveOperator <code>Operator.ADD</code> or <code>Operator.SUBTRACT</code>
- * @return <code><i>lhs</i> + <i>rhs</i></code> or <code><i>lhs</i> - <i>rhs</i></code>
- * @throws JaxenException if the third argument is not
- * <code>Operator.ADD</code> or <code>Operator.SUBTRACT</code>
- */
- BinaryExpr createAdditiveExpr( Expr lhs,
- Expr rhs,
- int additiveOperator ) throws JaxenException;
-
- /**
- * Returns a new XPath multiplicative expression.
- *
- * @param lhs the left hand side of the expression
- * @param rhs the right hand side of the expression
- * @param multiplicativeOperator <code>Operator.MULTIPLY</code>,
- * <code>Operator.DIV</code>, or <code>Operator.MOD</code>
- * @return <code><i>lhs</i> * <i>rhs</i></code>, <code><i>lhs</i> div <i>rhs</i></code>,
- * or <code><i>lhs</i> mod <i>rhs</i></code>
- * @throws JaxenException if the third argument is not a multiplicative operator constant
- */
- BinaryExpr createMultiplicativeExpr( Expr lhs,
- Expr rhs,
- int multiplicativeOperator ) throws JaxenException;
-
- /**
- * Returns a new XPath unary expression.
- *
- * @param expr the expression to be negated
- * @param unaryOperator <code>Operator.NEGATIVE</code>
- * @return <code>- <i>expr</i></code> or <code><i>expr</i></code>
- * @throws JaxenException
- */
- Expr createUnaryExpr( Expr expr,
- int unaryOperator ) throws JaxenException;
-
- /**
- * Returns a new XPath union expression.
- *
- * @param lhs the left hand side of the expression
- * @param rhs the right hand side of the expression
- * @return <code><i>lhs</i> | <i>rhs</i></code></code>
- * @throws JaxenException
- */
- UnionExpr createUnionExpr( Expr lhs,
- Expr rhs ) throws JaxenException;
-
- /**
- * Returns a new XPath filter expression.
- *
- * @param expr the basic expression to which the predicate will be added
- * @return the expression with an empty predicate set
- * @throws JaxenException
- */
- FilterExpr createFilterExpr( Expr expr ) throws JaxenException;
-
-
- /**
- * Create a new function call expression.
- *
- * @param prefix the namespace prefix of the function
- * @param functionName the local name of the function
- * @return a function with an empty argument list
- * @throws JaxenException
- */
- FunctionCallExpr createFunctionCallExpr( String prefix,
- String functionName ) throws JaxenException;
-
- /**
- * Create a number expression.
- *
- * @param number the value
- * @return a number expression wrapping that value
- * @throws JaxenException
- */
- NumberExpr createNumberExpr( int number ) throws JaxenException;
-
- /**
- * Create a number expression.
- *
- * @param number the value
- * @return a number expression wrapping that value
- * @throws JaxenException
- */
- NumberExpr createNumberExpr( double number ) throws JaxenException;
-
- /**
- * Create a string literal expression.
- *
- * @param literal the value
- * @return a literal expression wrapping that value
- * @throws JaxenException
- */
- LiteralExpr createLiteralExpr( String literal ) throws JaxenException;
-
- /**
- * Create a new variable reference expression.
- *
- * @param prefix the namespace prefix of the variable
- * @param variableName the local name of the variable
- * @return a variable expression
- * @throws JaxenException
- */
- VariableReferenceExpr createVariableReferenceExpr( String prefix,
- String variableName ) throws JaxenException;
-
- /**
- * Create a step with a named node-test.
- *
- * @param axis the axis to create the name-test on
- * @param prefix the namespace prefix for the test
- * @param localName the local name for the test
- * @return a name step
- * @throws JaxenException if <code>axis</code> is not one of the axis constants????
- */
- Step createNameStep( int axis,
- String prefix,
- String localName ) throws JaxenException;
-
- /**
- * Create a step with a node() node-test.
- *
- * @param axis the axis to create the node-test on
- * @return an all node step
- * @throws JaxenException if <code>axis</code> is not one of the axis constants????
- */
- Step createAllNodeStep( int axis ) throws JaxenException;
-
- /**
- * Create a step with a <code>comment()</code> node-test.
- *
- * @param axis the axis to create the <code>comment()</code> node-test on
- * @return a comment node step
- * @throws JaxenException if <code>axis</code> is not one of the axis constants????
- */
- Step createCommentNodeStep( int axis ) throws JaxenException;
-
- /**
- * Create a step with a <code>text()</code> node-test.
- *
- * @param axis the axis to create the <code>text()</code> node-test on
- * @return a text node step
- * @throws JaxenException if <code>axis</code> is not one of the axis constants????
- */
- Step createTextNodeStep( int axis ) throws JaxenException;
-
- /**
- * Create a step with a <code>processing-instruction()</code> node-test.
- *
- * @param axis the axis to create the <code>processing-instruction()</code> node-test on
- * @param name the target to match, may be empty
- * @return a processing instruction node step
- * @throws JaxenException if <code>axis</code> is not one of the axis constants????
- */
- Step createProcessingInstructionNodeStep( int axis,
- String name ) throws JaxenException;
-
- /**
- * Create from the supplied expression.
- *
- * @param predicateExpr the expression to evaluate in the predicate
- * @return a predicate
- * @throws JaxenException
- */
- Predicate createPredicate( Expr predicateExpr ) throws JaxenException;
-
- /**
- * Create an empty predicate set.
- *
- * @return an empty predicate set
- * @throws JaxenException
- */
- PredicateSet createPredicateSet() throws JaxenException;
-
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableAncestorAxis.java b/src/java/main/org/jaxen/expr/iter/IterableAncestorAxis.java
deleted file mode 100644
index 5b1e60f..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableAncestorAxis.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableAncestorAxis.java,v 1.7 2006/06/03 20:50:12 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:50:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableAncestorAxis.java,v 1.7 2006/06/03 20:50:12 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableAncestorAxis extends IterableAxis
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- public IterableAncestorAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getAncestorAxisIterator( contextNode );
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableAncestorOrSelfAxis.java b/src/java/main/org/jaxen/expr/iter/IterableAncestorOrSelfAxis.java
deleted file mode 100644
index 8aa1e1f..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableAncestorOrSelfAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableAncestorOrSelfAxis.java,v 1.7 2006/06/03 20:50:12 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:50:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableAncestorOrSelfAxis.java,v 1.7 2006/06/03 20:50:12 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableAncestorOrSelfAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- public IterableAncestorOrSelfAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getAncestorOrSelfAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableAttributeAxis.java b/src/java/main/org/jaxen/expr/iter/IterableAttributeAxis.java
deleted file mode 100644
index d2e36c8..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableAttributeAxis.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- $Id: IterableAttributeAxis.java,v 1.9 2006/06/03 20:50:12 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.NamedAccessNavigator;
-import org.jaxen.UnsupportedAxisException;
-
-/**
- * Provide access to the XPath attribute axis.
- * This axis does not include namespace declarations such as
- * <code>xmlns</code> and <code>xmlns:<i>prefix</i></code>.
- * It does include attributes defaulted from the DTD.
- *
- * @author Bob McWhirter
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public class IterableAttributeAxis extends IterableAxis {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Constructor.
- *
- * @param value the axis value
- */
- public IterableAttributeAxis(int value) {
- super(value);
- }
-
- /**
- * Gets an iterator for the attribute axis.
- *
- * @param contextNode the current context node to work from
- * @param support the additional context information
- */
- public Iterator iterator(Object contextNode, ContextSupport support) throws UnsupportedAxisException {
- return support.getNavigator().getAttributeAxisIterator(contextNode);
- }
-
- /**
- * Gets the iterator for the attribute axis that supports named access.
- *
- * @param contextNode the current context node to work from
- * @param support the additional context information
- * @param localName the local name of the attributes to return
- * @param namespacePrefix the prefix of the namespace of the attributes to return
- * @param namespaceURI the uri of the namespace of the attributes to return
- */
- public Iterator namedAccessIterator(
- Object contextNode,
- ContextSupport support,
- String localName,
- String namespacePrefix,
- String namespaceURI)
- throws UnsupportedAxisException {
-
- NamedAccessNavigator nav = (NamedAccessNavigator) support.getNavigator();
- return nav.getAttributeAxisIterator(contextNode, localName, namespacePrefix, namespaceURI);
- }
-
- /**
- * Does this axis support named access?
- *
- * @param support the additional context information
- * @return true if named access is supported. If not iterator() will be used.
- */
- public boolean supportsNamedAccess(ContextSupport support) {
- return (support.getNavigator() instanceof NamedAccessNavigator);
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableAxis.java b/src/java/main/org/jaxen/expr/iter/IterableAxis.java
deleted file mode 100644
index 06c9176..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableAxis.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- $Id: IterableAxis.java,v 1.9 2006/02/05 21:47:42 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.expr.iter;
-
-import java.io.Serializable;
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-/**
- * Provide access to the XPath axes.
- *
- * @author Bob McWhirter
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public abstract class IterableAxis implements Serializable {
-
- /** The axis type */
- private int value;
-
- /**
- * Constructor.
- *
- * @param axisValue
- */
- public IterableAxis(int axisValue) {
- this.value = axisValue;
- }
-
- /**
- * Gets the axis value.
- *
- * @return the axis value
- */
- public int value() {
- return this.value;
- }
-
- /**
- * Gets the iterator for a specific XPath axis.
- *
- * @param contextNode the current context node to work from
- * @param support the additional context information
- * @return an iterator for the axis
- * @throws UnsupportedAxisException
- */
- public abstract Iterator iterator(Object contextNode, ContextSupport support) throws UnsupportedAxisException;
-
- /**
- * Gets the iterator for a specific XPath axis that supports named access.
- *
- * @param contextNode the current context node to work from
- * @param support the additional context information
- * @param localName the local name of the nodes to return
- * @param namespacePrefix the prefix of the namespace of the nodes to return
- * @param namespaceURI the URI of the namespace of the nodes to return
- */
- public Iterator namedAccessIterator(
- Object contextNode,
- ContextSupport support,
- String localName,
- String namespacePrefix,
- String namespaceURI)
- throws UnsupportedAxisException {
-
- throw new UnsupportedOperationException("Named access unsupported");
- }
-
- /**
- * Does this axis support named access?
- *
- * @param support the additional context information
- * @return true if named access supported. If not iterator() will be used
- */
- public boolean supportsNamedAccess(ContextSupport support) {
- return false;
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableChildAxis.java b/src/java/main/org/jaxen/expr/iter/IterableChildAxis.java
deleted file mode 100644
index fb7306c..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableChildAxis.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- $Id: IterableChildAxis.java,v 1.11 2006/06/03 20:50:12 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.NamedAccessNavigator;
-import org.jaxen.UnsupportedAxisException;
-
-/**
- * Provide access to the child xpath axis.
- *
- * @author Bob McWhirter
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public class IterableChildAxis extends IterableAxis {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Constructor.
- *
- * @param value the axis value
- */
- public IterableChildAxis(int value) {
- super(value);
- }
-
- /**
- * Gets the iterator for the child axis.
- *
- * @param contextNode the current context node to work from
- * @param support the additional context information
- * @return an iterator over the children of the context node
- * @throws UnsupportedAxisException if the child axis is not supported
- */
- public Iterator iterator(Object contextNode, ContextSupport support)
- throws UnsupportedAxisException {
- return support.getNavigator().getChildAxisIterator(contextNode);
- }
-
- /**
- * Gets an iterator for the child XPath axis that supports named access.
- *
- * @param contextNode the current context node to work from
- * @param support the additional context information
- * @param localName the local name of the children to return
- * @param namespacePrefix the prefix of the namespace of the children to return
- * @param namespaceURI the URI of the namespace of the children to return
- * @return an iterator over the children of the context node
- * @throws UnsupportedAxisException if the child axis is not supported by the model
- */
- public Iterator namedAccessIterator(
- Object contextNode,
- ContextSupport support,
- String localName,
- String namespacePrefix,
- String namespaceURI)
- throws UnsupportedAxisException {
-
- NamedAccessNavigator nav = (NamedAccessNavigator) support.getNavigator();
- return nav.getChildAxisIterator(contextNode, localName, namespacePrefix, namespaceURI);
- }
-
- /**
- * Does this axis support named access?
- *
- * @param support the additional context information
- * @return true if named access supported. If not iterator() will be used
- */
- public boolean supportsNamedAccess(ContextSupport support) {
- return (support.getNavigator() instanceof NamedAccessNavigator);
- }
-
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableDescendantAxis.java b/src/java/main/org/jaxen/expr/iter/IterableDescendantAxis.java
deleted file mode 100644
index 3dcdbbc..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableDescendantAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableDescendantAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableDescendantAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableDescendantAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = 7286715505909806723L;
-
- public IterableDescendantAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getDescendantAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableDescendantOrSelfAxis.java b/src/java/main/org/jaxen/expr/iter/IterableDescendantOrSelfAxis.java
deleted file mode 100644
index 26e1eb5..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableDescendantOrSelfAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableDescendantOrSelfAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableDescendantOrSelfAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableDescendantOrSelfAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = 2956703237251023850L;
-
- public IterableDescendantOrSelfAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getDescendantOrSelfAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableFollowingAxis.java b/src/java/main/org/jaxen/expr/iter/IterableFollowingAxis.java
deleted file mode 100644
index 71f4347..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableFollowingAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableFollowingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableFollowingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableFollowingAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = -7100245752300813209L;
-
- public IterableFollowingAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getFollowingAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableFollowingSiblingAxis.java b/src/java/main/org/jaxen/expr/iter/IterableFollowingSiblingAxis.java
deleted file mode 100644
index 172914f..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableFollowingSiblingAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableFollowingSiblingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableFollowingSiblingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableFollowingSiblingAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = 4412705219546610009L;
-
- public IterableFollowingSiblingAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getFollowingSiblingAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableNamespaceAxis.java b/src/java/main/org/jaxen/expr/iter/IterableNamespaceAxis.java
deleted file mode 100644
index 0b8d356..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableNamespaceAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableNamespaceAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableNamespaceAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableNamespaceAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = -8022585664651357087L;
-
- public IterableNamespaceAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getNamespaceAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableParentAxis.java b/src/java/main/org/jaxen/expr/iter/IterableParentAxis.java
deleted file mode 100644
index 374315e..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableParentAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableParentAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableParentAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableParentAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = -7521574185875636490L;
-
- public IterableParentAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getParentAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterablePrecedingAxis.java b/src/java/main/org/jaxen/expr/iter/IterablePrecedingAxis.java
deleted file mode 100644
index ae435d4..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterablePrecedingAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterablePrecedingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterablePrecedingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterablePrecedingAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = 587333938258540052L;
-
- public IterablePrecedingAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getPrecedingAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterablePrecedingSiblingAxis.java b/src/java/main/org/jaxen/expr/iter/IterablePrecedingSiblingAxis.java
deleted file mode 100644
index 81a5b20..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterablePrecedingSiblingAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterablePrecedingSiblingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterablePrecedingSiblingAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterablePrecedingSiblingAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = -3140080721715120745L;
-
- public IterablePrecedingSiblingAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getPrecedingSiblingAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/IterableSelfAxis.java b/src/java/main/org/jaxen/expr/iter/IterableSelfAxis.java
deleted file mode 100644
index 115c4d6..0000000
--- a/src/java/main/org/jaxen/expr/iter/IterableSelfAxis.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/iter/IterableSelfAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/06/03 20:47:22 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableSelfAxis.java,v 1.7 2006/06/03 20:47:22 elharo Exp $
- */
-
-
-package org.jaxen.expr.iter;
-
-import java.util.Iterator;
-
-import org.jaxen.ContextSupport;
-import org.jaxen.UnsupportedAxisException;
-
-public class IterableSelfAxis extends IterableAxis
-{
- /**
- *
- */
- private static final long serialVersionUID = 8292222516706760134L;
-
- public IterableSelfAxis(int value)
- {
- super( value );
- }
-
- public Iterator iterator(Object contextNode,
- ContextSupport support) throws UnsupportedAxisException
- {
- return support.getNavigator().getSelfAxisIterator( contextNode );
- }
-}
diff --git a/src/java/main/org/jaxen/expr/iter/package.html b/src/java/main/org/jaxen/expr/iter/package.html
deleted file mode 100644
index 94b9194..0000000
--- a/src/java/main/org/jaxen/expr/iter/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.expr.iter.*
- </title>
- </head>
-
- <body>
- <p>
- Axis iterator creation functors.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/expr/package.html b/src/java/main/org/jaxen/expr/package.html
deleted file mode 100644
index 1130cf6..0000000
--- a/src/java/main/org/jaxen/expr/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.expr.*
- </title>
- </head>
-
- <body>
- <p>
- Interfaces and default implementations for
- XPath expression components.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/function/BooleanFunction.java b/src/java/main/org/jaxen/function/BooleanFunction.java
deleted file mode 100644
index c81a310..0000000
--- a/src/java/main/org/jaxen/function/BooleanFunction.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/BooleanFunction.java,v 1.17 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: BooleanFunction.java,v 1.17 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p>
- * <b>4.3</b> <code><i>boolean</i> boolean(<i>object</i>)</code>
- * </p>
- *
- * <blockquote
- * src="http://www.w3.org/TR/xpath#section-Boolean-Functions">
- * <p>
- * The <b><a href="http://www.w3.org/TR/xpath#function-boolean" target="_top">boolean</a></b>
- * function converts its argument to a boolean as follows:
- * </p>
- *
- * <ul>
- *
- * <li>
- * <p>
- * a number is true if and only if it is neither positive or negative
- * zero nor NaN
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * a node-set is true if and only if it is non-empty
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * a string is true if and only if its length is non-zero
- * </p>
- * </li>
- *
- * <li>
- *
- * <p>
- * an object of a type other than the four basic types is converted to a
- * boolean in a way that is dependent on that type
- * </p></li></ul>
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-boolean">Section 4.3 of the XPath Specification</a>
- */
-public class BooleanFunction implements Function
-{
-
-
- /**
- * Create a new <code>BooleanFunction</code> object.
- */
- public BooleanFunction() {}
-
- /** Convert the argument to a <code>Boolean</code>
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list with exactly one item which will be converted to a
- * <code>Boolean</code>
- *
- * @return the result of evaluating the function;
- * <code>Boolean.TRUE</code> or <code>Boolean.FALSE</code>
- *
- * @throws FunctionCallException if <code>args</code> has more or less than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if ( args.size() == 1 )
- {
- return evaluate( args.get(0), context.getNavigator() );
- }
-
- throw new FunctionCallException("boolean() requires one argument");
- }
-
- /**
- * <p>Convert the argument <code>obj</code> to a <code>Boolean</code>
- * according to the following rules:</p>
- *
- * <ul>
- * <li>Lists are false if they're empty; true if they're not.</li>
- * <li>Booleans are false if they're false; true if they're true.</li>
- * <li>Strings are false if they're empty; true if they're not.</li>
- * <li>Numbers are false if they're 0 or NaN; true if they're not.</li>
- * <li>All other objects are true.</li>
- * </ul>
- *
- * @param obj the object to convert to a boolean
- * @param nav ignored
- *
- * @return <code>Boolean.TRUE</code> or <code>Boolean.FALSE</code>
- */
- public static Boolean evaluate(Object obj, Navigator nav)
- {
- if ( obj instanceof List )
- {
- List list = (List) obj;
-
- // if it's an empty list, then we have a null node-set -> false
- if (list.size() == 0)
- {
- return Boolean.FALSE;
- }
-
- // otherwise, unwrap the list and check the primitive
- obj = list.get(0);
- }
-
- // now check for primitive types
- // otherwise a non-empty node-set is true
-
- // if it's a Boolean, let it decide
- if ( obj instanceof Boolean )
- {
- return (Boolean) obj;
- }
- // if it's a Number, != 0 -> true
- else if ( obj instanceof Number )
- {
- double d = ((Number) obj).doubleValue();
- if ( d == 0 || Double.isNaN(d) )
- {
- return Boolean.FALSE;
- }
- return Boolean.TRUE;
- }
- // if it's a String, "" -> false
- else if ( obj instanceof String )
- {
- return ( ((String)obj).length() > 0
- ? Boolean.TRUE
- : Boolean.FALSE );
- }
- else
- {
- // assume it's a node so that this node-set is non-empty
- // and so it's true
- return ( obj != null ) ? Boolean.TRUE : Boolean.FALSE;
- }
-
- }
-}
diff --git a/src/java/main/org/jaxen/function/CeilingFunction.java b/src/java/main/org/jaxen/function/CeilingFunction.java
deleted file mode 100644
index 60c50d8..0000000
--- a/src/java/main/org/jaxen/function/CeilingFunction.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/CeilingFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: CeilingFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.4</b> <code><i>number</i> ceiling(<i>number</i>)</code>
- * <blockquote src="http://www.w3.org/TR/xpath">
- * <p>
- *
- * <p><q>The ceiling function returns the smallest
- * (closest to negative infinity) number that is not less
- * than the argument and that is an integer....If the argument
- * is NaN, then NaN is returned. If the argument is positive infinity,
- * then positive infinity is returned. If the argument is negative infinity,
- * then negative infinity is returned. If the argument is positive zero,
- * then positive zero is returned.
- * If the argument is negative zero, then negative zero is returned.
- * If the argument is less than zero, but greater than -1,
- * then negative zero is returned.</q>
- * </p>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-ceiling">Section 4.4 of the XPath Specification</a>
- * @see <a href="http://www.w3.org/1999/11/REC-xpath-19991116-errata/">XPath Specification Errata</a>
- *
- */
-public class CeilingFunction implements Function
-{
-
- /**
- * Create a new <code>CeilingFunction</code> object.
- */
- public CeilingFunction() {}
-
- /** Returns the smallest integer greater than or equal to a number.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list with exactly one item which will be converted to a
- * <code>Double</code> as if by the XPath <code>number()</code> function
- *
- * @return a <code>Double</code> containing the smallest integer greater than or equal
- * <code>args.get(0)</code>
- *
- * @throws FunctionCallException if <code>args</code> has more or less than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 1)
- {
- return evaluate( args.get(0),
- context.getNavigator() );
- }
-
- throw new FunctionCallException("ceiling() requires one argument.");
- }
-
- /** Returns the smallest integer greater than or equal to the argument.
- * If necessary, the argument is first converted to a <code>Double</code>
- * as if by the XPath <code>number()</code> function.
- *
- * @param obj the object whose ceiling is returned
- * @param nav ignored
- *
- * @return a <code>Double</code> containing the smallest integer
- * greater than or equal to <code>obj</code>
- */
- public static Double evaluate(Object obj,
- Navigator nav)
- {
- Double value = NumberFunction.evaluate( obj,
- nav );
-
- return new Double( Math.ceil( value.doubleValue() ) );
- }
-}
diff --git a/src/java/main/org/jaxen/function/ConcatFunction.java b/src/java/main/org/jaxen/function/ConcatFunction.java
deleted file mode 100644
index c662298..0000000
--- a/src/java/main/org/jaxen/function/ConcatFunction.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/ConcatFunction.java,v 1.9 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: ConcatFunction.java,v 1.9 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <b>4.2</b> <code><i>string</i> concat(<i>string</i>,<i>string</i>,<i>string*</i>)</code>
- * <p>
- * Concatenates its arguments and returns the resulting string.
- * </p>
- *
- * @author bob mcwhirter (bob at werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-concat">Section 4.2 of the XPath Specification</a>
- */
-public class ConcatFunction implements Function
-{
-
- /**
- * Create a new <code>ConcatFunction</code> object.
- */
- public ConcatFunction() {}
-
- /**
- * Concatenates the arguments and returns the resulting string.
- * Non-string items are first converted to strings as if by the
- * XPath <code>string()<code> function.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args the list of strings to be concatenated
- *
- * @return a <code>String</code> containing the concatenation of the items
- * of <code>args</code>
- *
- * @throws FunctionCallException if <code>args</code> has less than two items
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if ( args.size() >= 2 )
- {
- return evaluate( args,
- context.getNavigator() );
- }
-
- throw new FunctionCallException("concat() requires at least two arguments");
- }
-
- /**
- * Converts each item in the list to a string and returns the
- * concatenation of these strings.
- * If necessary, each item is first converted to a <code>String</code>
- * as if by the XPath <code>string()</code> function.
- *
- * @param list the items to be concatenated
- * @param nav ignored
- *
- * @return the concatenation of the arguments
- */
- public static String evaluate(List list,
- Navigator nav)
- {
- StringBuffer result = new StringBuffer();
- Iterator argIter = list.iterator();
- while ( argIter.hasNext() )
- {
- result.append( StringFunction.evaluate( argIter.next(),
- nav ) );
- }
-
- return result.toString();
- }
-}
diff --git a/src/java/main/org/jaxen/function/ContainsFunction.java b/src/java/main/org/jaxen/function/ContainsFunction.java
deleted file mode 100644
index 857b06f..0000000
--- a/src/java/main/org/jaxen/function/ContainsFunction.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/ContainsFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: ContainsFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- */
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.2</b> <code><i>boolean</i> contains(<i>string</i>,<i>string</i>)</code></p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The <b>contains</b> function returns true if the first argument
- * string contains the second argument string, and otherwise returns false.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-contains">Section 4.2 of the XPath Specification</a>
- */
-public class ContainsFunction implements Function
-{
-
- /**
- * Create a new <code>ContainsFunction</code> object.
- */
- public ContainsFunction() {}
-
- /**
- * <p>
- * Returns true if the string-value of the
- * first item in <code>args</code> contains string-value of the second
- * item; false otherwise.
- * If necessary one or both items are converted to a string as if by the XPath
- * <code>string()</code> function.
- * </p>
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list containing exactly two items
- *
- * @return the result of evaluating the function;
- * <code>Boolean.TRUE</code> or <code>Boolean.FALSE</code>
- *
- * @throws FunctionCallException if <code>args</code> does not have exactly two items
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 2)
- {
- return evaluate(args.get(0),
- args.get(1),
- context.getNavigator() );
- }
-
- throw new FunctionCallException("contains() requires two arguments.");
- }
-
- /**
- * <p>Returns true if the first string contains the second string; false otherwise.
- * If necessary one or both arguments are converted to a string as if by the XPath
- * <code>string()</code> function.
- * </p>
- *
- * @param strArg the containing string
- * @param matchArg the contained string
- * @param nav used to calculate the string-values of the first two arguments
- *
- * @return <code>Boolean.TRUE</code> if true if the first string contains
- * the second string; <code>Boolean.FALSE</code> otherwise.
- */
- public static Boolean evaluate(Object strArg,
- Object matchArg,
- Navigator nav)
- {
- String str = StringFunction.evaluate( strArg,
- nav );
-
- String match = StringFunction.evaluate( matchArg,
- nav );
-
- return ( ( str.indexOf(match) >= 0)
- ? Boolean.TRUE
- : Boolean.FALSE
- );
- }
-}
diff --git a/src/java/main/org/jaxen/function/CountFunction.java b/src/java/main/org/jaxen/function/CountFunction.java
deleted file mode 100644
index 11fc295..0000000
--- a/src/java/main/org/jaxen/function/CountFunction.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/CountFunction.java,v 1.14 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: CountFunction.java,v 1.14 2006/02/05 21:47:41 elharo Exp $
- */
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-
-/**
- * <p><b>4.1</b> <code><i>number</i> count(<i>node-set</i>)</code></p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-count">
- * The <b>count</b> function returns the number of nodes in the argument node-set.
- * </blockquote>
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-count">Section 4.1 of the XPath Specification</a>
- */
-public class CountFunction implements Function
-{
-
- /**
- * Create a new <code>CountFunction</code> object.
- */
- public CountFunction() {}
-
- /**
- * <p>
- * Returns the number of nodes in the specified node-set.
- * </p>
- * @param context ignored
- * @param args the function arguments
- *
- * @return a <code>Double</code> giving the integral number of items in the first argument
- *
- * @throws FunctionCallException if args does not have exactly one
- * item; or that item is not a <code>List</code>
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 1)
- {
- return evaluate( args.get(0) );
- }
-
- throw new FunctionCallException( "count() requires one argument." );
- }
-
- /**
- * <p>
- * Returns the number of nodes in the specified node-set.
- * </p>
- *
- * @param obj a <code>List</code> of nodes
- * @return the integral number of items in the list
- * @throws FunctionCallException if obj is not a <code>List</code>
- */
- public static Double evaluate(Object obj) throws FunctionCallException
- {
-
- if (obj instanceof List)
- {
- return new Double( ((List) obj).size() );
- }
-
- throw new FunctionCallException("count() function can only be used for node-sets");
-
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/FalseFunction.java b/src/java/main/org/jaxen/function/FalseFunction.java
deleted file mode 100644
index d8c9267..0000000
--- a/src/java/main/org/jaxen/function/FalseFunction.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/FalseFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FalseFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-
-/**
- * <p><b>4.3</b> <code><i>boolean</i> false()</code>
- *
- * <p>Returns false.</p>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-false">Section 4.3 of the XPath Specification</a>
- */
-public class FalseFunction implements Function
-{
-
- /**
- * Create a new <code>FalseFunction</code> object.
- */
- public FalseFunction() {}
-
- /** Returns <code>Boolean.FALSE</code>
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args an empty list
- *
- * @return <code>Boolean.FALSE</code>
- *
- * @throws FunctionCallException if <code>args</code> is not empty
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 0)
- {
- return evaluate();
- }
-
- throw new FunctionCallException( "false() requires no arguments." );
- }
-
- /**
- * Returns false.
- *
- * @return <code>Boolean.FALSE</code>
- */
- public static Boolean evaluate()
- {
- return Boolean.FALSE;
- }
-}
diff --git a/src/java/main/org/jaxen/function/FloorFunction.java b/src/java/main/org/jaxen/function/FloorFunction.java
deleted file mode 100644
index 551bd00..0000000
--- a/src/java/main/org/jaxen/function/FloorFunction.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/FloorFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FloorFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.4</b> <code><i>number</i> floor(<i>number</i>)</code></p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The floor function returns the largest (closest to positive infinity)
- * number that is not greater than the argument and that is an integer....
- * If the argument is NaN, then NaN is returned.
- * If the argument is positive infinity, then positive infinity is returned.
- * If the argument is negative infinity, then negative infinity is returned.
- * If the argument is positive zero, then positive zero is returned.
- * If the argument is negative zero, then negative zero is returned.
- * If the argument is greater than zero, but less than 1, then positive zero is returned.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-floor" target="_top">Section 4.4 of the XPath Specification</a>
- * @see <a href="http://www.w3.org/1999/11/REC-xpath-19991116-errata/" target="_top">XPath Errata</a>
- */
-public class FloorFunction implements Function
-{
-
- /**
- * Create a new <code>FloorFunction</code> object.
- */
- public FloorFunction() {}
-
- /** Returns the largest integer less than or equal to a number.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list with exactly one item which will be converted to a
- * <code>Double</code> as if by the XPath <code>number()</code> function
- *
- * @return a <code>Double</code> containing the largest integer less than or equal
- * to <code>args.get(0)</code>
- *
- * @throws FunctionCallException if <code>args</code> has more or less than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 1)
- {
- return evaluate( args.get(0),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "floor() requires one argument." );
- }
-
- /** Returns the largest integer less than or equal to the argument.
- * If necessary, the argument is first converted to a <code>Double</code>
- * as if by the XPath <code>number()</code> function.
- *
- * @param obj the object whose floor is returned
- * @param nav ignored
- *
- * @return a <code>Double</code> containing the largest integer less
- * than or equal to <code>obj</code>
- */
- public static Double evaluate(Object obj,
- Navigator nav)
- {
- Double value = NumberFunction.evaluate( obj,
- nav );
-
- return new Double( Math.floor( value.doubleValue() ) );
- }
-}
-
diff --git a/src/java/main/org/jaxen/function/IdFunction.java b/src/java/main/org/jaxen/function/IdFunction.java
deleted file mode 100644
index 4638f17..0000000
--- a/src/java/main/org/jaxen/function/IdFunction.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/IdFunction.java,v 1.13 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IdFunction.java,v 1.13 2006/02/05 21:47:41 elharo Exp $
- */
-
-package org.jaxen.function;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.1</b> <code><i>node-set</i> id(<i>object</i>)</code> </p>
- *
- * <p>The <b>id</b> function returns a <code>List</code>
- * of all the elements in the context document that have an ID
- * matching one of a specified list of IDs. How an attribute is determined
- * to be of type ID depends on the navigator, but it normally requires that
- * the attribute be declared to have type ID in the DTD.
- * </p>
- *
- * <p>
- * There should be no more than one element in any document with a
- * certain ID. However, if there are multiple such elements--i.e. if
- * there are duplicate IDs--then this function selects only the first element
- * in document order with the specified ID.
- * </p>
- *
- * @author Erwin Bolwidt (ejb @ klomp.org)
- * @author J\u00e9r\u00f4me N\u00e8gre (jerome.negre @ e-xmlmedia.fr)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-id" target="_top">Section 4.1 of the XPath Specification</a>
- */
-public class IdFunction implements Function
-{
-
- /**
- * Create a new <code>IdFunction</code> object.
- */
- public IdFunction() {}
-
- /**
- * Returns a list of the nodes with the specified IDs.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list with exactly one item which is either a string
- * a node-set
- *
- * @return a <code>List</code> containing the first node in document
- * with each of the specified IDs; or
- * an empty list if there are no such nodes
- *
- * @throws FunctionCallException if <code>args</code> has more or less than one item
- */
- public Object call(Context context, List args) throws FunctionCallException
- {
- if ( args.size() == 1 ) {
- return evaluate( context.getNodeSet(),
- args.get(0), context.getNavigator() );
- }
-
- throw new FunctionCallException( "id() requires one argument" );
- }
-
- /**
- * Returns a list of the nodes with the specified IDs.
- *
- * @param contextNodes the context node-set. The first item in this list
- * determines the document in which the search is performed.
- * @param arg the ID or IDs to search for
- * @param nav the navigator used to calculate string-values and search
- * by ID
- *
- * @return a <code>List</code> containing the first node in document
- * with each of the specified IDs; or
- * an empty list if there are no such nodes
- *
- */
- public static List evaluate(List contextNodes, Object arg, Navigator nav)
- {
- if (contextNodes.size() == 0) return Collections.EMPTY_LIST;
-
- List nodes = new ArrayList();
-
- Object contextNode = contextNodes.get(0);
-
- if (arg instanceof List) {
- Iterator iter = ((List)arg).iterator();
- while (iter.hasNext()) {
- String id = StringFunction.evaluate(iter.next(), nav);
- nodes.addAll( evaluate( contextNodes, id, nav ) );
- }
- }
- else {
- String ids = StringFunction.evaluate(arg, nav);
- StringTokenizer tok = new StringTokenizer(ids, " \t\n\r");
- while (tok.hasMoreTokens()) {
- String id = tok.nextToken();
- Object node = nav.getElementById(contextNode, id);
- if (node != null) {
- nodes.add(node);
- }
- }
- }
- return nodes;
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/function/LangFunction.java b/src/java/main/org/jaxen/function/LangFunction.java
deleted file mode 100644
index 2f24c52..0000000
--- a/src/java/main/org/jaxen/function/LangFunction.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/LangFunction.java,v 1.13 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LangFunction.java,v 1.13 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-
-/**
- * <p>
- * <b>4.3</b> <code><i>boolean</i> lang(<i>string</i>)</code>
- * </p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-lang">
- * <p>
- * The <b>lang</b> function returns true or false depending on whether
- * the language of the context node as specified by
- * <code>xml:lang</code> attributes is the same as or is a sublanguage
- * of the language specified by the argument string. The language of the
- * context node is determined by the value of the <code>xml:lang</code>
- *
- * attribute on the context node, or, if the context node has no
- * <code>xml:lang</code> attribute, by the value of the
- * <code>xml:lang</code> attribute on the nearest ancestor of the
- * context node that has an <code>xml:lang</code> attribute. If there
- * is no such attribute, then <b><a href="#function-lang">lang</a></b>
- * returns false. If there is such an attribute, then <b><a
- * href="#function-lang">lang</a></b> returns true if the attribute
- * value is equal to the argument ignoring case, or if there is some
- * suffix starting with <code>-</code> such that the attribute value
- * is equal to the argument ignoring that suffix of the attribute value
- * and ignoring case. For example, <code>lang("en")</code> would
- * return true if the context node is any of these five elements:
- * </p>
- *
- * <pre>
- * <para xml:lang="en"/>
- * <div xml:lang="en"><para/></div>
- * <para xml:lang="EN"/>
- * <para xml:lang="en-us"/>
- * </pre>
- *
- * </blockquote>
- *
- * @author Attila Szegedi (szegedia @ freemail.hu)
- * @see <a href="http://www.w3.org/TR/xpath#function-lang"
- * target="_top">XPath Specification</a>
- */
-public class LangFunction implements Function
-{
- private static final String LANG_LOCALNAME = "lang";
- private static final String XMLNS_URI =
- "http://www.w3.org/XML/1998/namespace";
-
-
- /**
- * Create a new <code>LangFunction</code> object.
- */
- public LangFunction() {}
-
-
- /**
- * <p>
- * Determines whether or not the context node is written in the language specified
- * by the XPath string-value of <code>args.get(0)</code>,
- * as determined by the nearest <code>xml:lang</code> attribute in scope.
- * </p>
- *
- * @param context the context in which to evaluate the <code>lang()</code> function
- * @param args the arguments to the lang function
- * @return a <code>Boolean</code> indicating whether the context node is written in
- * the specified language
- * @throws FunctionCallException if <code>args</code> does not have length one
- *
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() != 1) {
- throw new FunctionCallException("lang() requires exactly one argument.");
- }
-
- Object arg = args.get(0);
-
- try {
- return evaluate(context.getNodeSet(), arg, context.getNavigator() );
- }
- catch(UnsupportedAxisException e) {
- throw new FunctionCallException("Can't evaluate lang()",
- e);
- }
-
- }
-
- private static Boolean evaluate(List contextNodes, Object lang, Navigator nav)
- throws UnsupportedAxisException
- {
- return evaluate(contextNodes.get(0),
- StringFunction.evaluate(lang, nav), nav)
- ? Boolean.TRUE : Boolean.FALSE;
- }
-
- private static boolean evaluate(Object node, String lang, Navigator nav)
- throws UnsupportedAxisException
- {
-
- Object element = node;
- if (! nav.isElement(element)) {
- element = nav.getParentNode(node);
- }
- while (element != null && nav.isElement(element))
- {
- Iterator attrs = nav.getAttributeAxisIterator(element);
- while(attrs.hasNext())
- {
- Object attr = attrs.next();
- if(LANG_LOCALNAME.equals(nav.getAttributeName(attr)) &&
- XMLNS_URI.equals(nav.getAttributeNamespaceUri(attr)))
- {
- return
- isSublang(nav.getAttributeStringValue(attr), lang);
- }
- }
- element = nav.getParentNode(element);
- }
- return false;
- }
-
- private static boolean isSublang(String sublang, String lang)
- {
- if(sublang.equalsIgnoreCase(lang))
- {
- return true;
- }
- int ll = lang.length();
- return
- sublang.length() > ll &&
- sublang.charAt(ll) == '-' &&
- sublang.substring(0, ll).equalsIgnoreCase(lang);
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/function/LastFunction.java b/src/java/main/org/jaxen/function/LastFunction.java
deleted file mode 100644
index d6f7f8c..0000000
--- a/src/java/main/org/jaxen/function/LastFunction.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/LastFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LastFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- */
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-
-/**
- * <p><b>4.1</b> <code><i>number</i> last()</code> </p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-last">
- * The <b>last</b> function returns a number equal to
- * the context size from the expression evaluation context.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-last" target="_top">Section 4.1 of the XPath Specification</a>
- */
-public class LastFunction implements Function
-{
-
- /**
- * Create a new <code>LastFunction</code> object.
- */
- public LastFunction() {}
-
- /**
- * Returns the number of nodes in the context node-set.
- *
- * @param context the context at the point in the
- * expression where the function is called
- * @param args an empty list
- *
- * @return a <code>Double</code> containing the context size
- *
- * @throws FunctionCallException if <code>args</code> is not empty
- *
- * @see Context#getSize()
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 0)
- {
- return evaluate( context );
- }
-
- throw new FunctionCallException( "last() requires no arguments." );
- }
-
- /**
- * Returns the number of nodes in the context node-set.
- *
- * @param context the context at the point in the
- * expression where the function is called
- *
- * @return the context size
- *
- * @see Context#getSize()
- */
- public static Double evaluate(Context context)
- {
- return new Double( context.getSize() );
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/LocalNameFunction.java b/src/java/main/org/jaxen/function/LocalNameFunction.java
deleted file mode 100644
index be05a77..0000000
--- a/src/java/main/org/jaxen/function/LocalNameFunction.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/LocalNameFunction.java,v 1.14 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LocalNameFunction.java,v 1.14 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.1</b> <code><i>string</i> local-name(<i>node-set?</i>)</code></p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The <b>local-name</b> function returns the local part of the
- * expanded-name of the node in the argument node-set that is first in document order.
- * If the argument node-set is empty or the first node has no expanded-name, an
- * empty string is returned. If the argument is omitted, it defaults to a node-set with the context node as its only member.
- *
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-local-name" target="_top">Section 4.1 of the XPath Specification</a>
- */
-public class LocalNameFunction implements Function
-{
-
- /**
- * Create a new <code>LocalNameFunction</code> object.
- */
- public LocalNameFunction() {}
-
- /**
- * Returns the local-name of the specified node or the context node if
- * no arguments are provided.
- *
- * @param context the context at the point in the
- * expression where the function is called
- * @param args a <code>List</code> containing zero or one items
- *
- * @return a <code>String</code> containing the local-name
- *
- * @throws FunctionCallException if <code>args</code> has more than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if ( args.size() == 0 )
- {
- return evaluate( context.getNodeSet(),
- context.getNavigator() );
- }
-
- if ( args.size() == 1 )
- {
- return evaluate( args,
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "local-name() requires zero or one argument." );
- }
-
- /**
- * Returns the local-name of <code>list.get(0)</code>
- *
- * @param list a list of nodes
- * @param nav the <code>Navigator</code> used to retrieve the local name
- *
- * @return the local-name of <code>list.get(0)</code>
- *
- * @throws FunctionCallException if <code>list.get(0)</code> is not a node
- */
- public static String evaluate(List list,
- Navigator nav) throws FunctionCallException
- {
- if ( ! list.isEmpty() )
- {
- Object first = list.get(0);
-
- if (first instanceof List)
- {
- return evaluate( (List) first,
- nav );
- }
- else if ( nav.isElement( first ) )
- {
- return nav.getElementName( first );
- }
- else if ( nav.isAttribute( first ) )
- {
- return nav.getAttributeName( first );
- }
- else if ( nav.isProcessingInstruction( first ) )
- {
- return nav.getProcessingInstructionTarget( first );
- }
- else if ( nav.isNamespace( first ) )
- {
- return nav.getNamespacePrefix( first );
- }
- else if ( nav.isDocument( first ) )
- {
- return "";
- }
- else if ( nav.isComment( first ) )
- {
- return "";
- }
- else if ( nav.isText( first ) )
- {
- return "";
- }
- else {
- throw new FunctionCallException("The argument to the local-name function must be a node-set");
- }
- }
-
- return "";
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/function/NameFunction.java b/src/java/main/org/jaxen/function/NameFunction.java
deleted file mode 100644
index 8d1fa1f..0000000
--- a/src/java/main/org/jaxen/function/NameFunction.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/NameFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NameFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.1</b> <code><i>string</i> name(<i>node-set?</i>)</code> </p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The <b>name</b> function returns a string containing a QName representing
- * the expanded-name of the node in the argument node-set that is first in document order.
- * The QName must represent the expanded-name with respect to the namespace declarations
- * in effect on the node whose expanded-name is being represented. Typically, this will
- * be the QName that occurred in the XML source....If
- * the argument node-set is empty or the first node has
- * no expanded-name, an empty string is returned.
- * If the argument it omitted, it defaults to a node-set with the context node as its only member.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-name" target="_top">Section 4.1 of the XPath Specification</a>
- */
-public class NameFunction implements Function
-{
-
-
- /**
- * Create a new <code>NameFunction</code> object.
- */
- public NameFunction() {}
-
- /**
- * Returns the name of the specified node or the name of the context node if
- * no arguments are provided.
- *
- * @param context the context at the point in the
- * expression where the function is called
- * @param args a <code>List</code> containing zero or one items
- *
- * @return a <code>String</code> containing the name
- *
- * @throws FunctionCallException if <code>args</code> has more than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if ( args.size() == 0 )
- {
- return evaluate( context.getNodeSet(),
- context.getNavigator() );
- }
-
- if ( args.size() == 1 )
- {
- return evaluate( args,
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "name() requires zero or one argument." );
- }
-
- /**
- * Returns the name of <code>list.get(0)</code>
- *
- * @param list a list of nodes
- * @param nav the <code>Navigator</code> used to retrieve the name
- *
- * @return the name of <code>list.get(0)</code>
- *
- * @throws FunctionCallException if <code>list.get(0)</code> is not a node
- */
- public static String evaluate(List list,
- Navigator nav) throws FunctionCallException
- {
- if ( ! list.isEmpty() )
- {
- Object first = list.get(0);
-
- if (first instanceof List)
- {
- return evaluate( (List) first,
- nav );
- }
- else if ( nav.isElement( first ) )
- {
- return nav.getElementQName( first );
- }
- else if ( nav.isAttribute( first ) )
- {
- return nav.getAttributeQName( first );
- }
- else if ( nav.isProcessingInstruction( first ) )
- {
- return nav.getProcessingInstructionTarget( first );
- }
- else if ( nav.isNamespace( first ) )
- {
- return nav.getNamespacePrefix( first );
- }
- else if ( nav.isDocument( first ) )
- {
- return "";
- }
- else if ( nav.isComment( first ) )
- {
- return "";
- }
- else if ( nav.isText( first ) )
- {
- return "";
- }
- else {
- throw new FunctionCallException("The argument to the name function must be a node-set");
- }
- }
-
- return "";
-
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/NamespaceUriFunction.java b/src/java/main/org/jaxen/function/NamespaceUriFunction.java
deleted file mode 100644
index e80f10b..0000000
--- a/src/java/main/org/jaxen/function/NamespaceUriFunction.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/NamespaceUriFunction.java,v 1.13 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NamespaceUriFunction.java,v 1.13 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p>
- * <b>4.1</b>
- * <code><i>string</i> namespace-uri(<i>node-set?</i>)</code>
- * </p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * <p>
- * The <b>namespace-uri</b>
- * function returns the namespace URI of the <a
- * href="http://www.w3.org/TR/xpath#dt-expanded-name" target="_top">expanded-name</a> of the node in the
- * argument node-set that is first in <a
- * href="http://www.w3.org/TR/xpath#dt-document-order" target="_top">document order</a>. If the argument
- * node-set is empty, the first node has no <a
- * href="http://www.w3.org/TR/xpath#dt-expanded-name" target="_top">expanded-name</a>, or the namespace URI of
- * the <a href="http://www.w3.org/TR/xpath#dt-expanded-name" target="_top">expanded-name</a> is null, an empty
- * string is returned. If the argument is omitted, it defaults to a
- * node-set with the context node as its only member.
- * </p>
- *
- * <blockquote> <b>NOTE: </b>The string returned by the <b>namespace-uri</b> function will
- * be empty except for element nodes and attribute nodes.</blockquote>
- *
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-namespace-uri"
- * target="_top">Section 4.1 of the XPath Specification</a>
- */
-public class NamespaceUriFunction implements Function
-{
-
- /**
- * Create a new <code>NamespaceUriFunction</code> object.
- */
- public NamespaceUriFunction() {}
-
- /**
- * Returns the namespace URI of the specified node or the namespace URI of the context node if
- * no arguments are provided.
- *
- * @param context the context at the point in the
- * expression where the function is called
- * @param args a <code>List</code> containing zero or one items
- *
- * @return a <code>String</code> containing the namespace URI
- *
- * @throws FunctionCallException if <code>args</code> has more than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 0)
- {
- return evaluate( context.getNodeSet(),
- context.getNavigator() );
- }
-
- if ( args.size() == 1 )
- {
- return evaluate( args,
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "namespace-uri() requires zero or one argument." );
- }
-
- /**
- * Returns the namespace URI of <code>list.get(0)</code>
- *
- * @param list a list of nodes
- * @param nav the <code>Navigator</code> used to retrieve the namespace
- *
- * @return the namespace URI of <code>list.get(0)</code>
- *
- * @throws FunctionCallException if <code>list.get(0)</code> is not a node
- */
- public static String evaluate(List list,
- Navigator nav) throws FunctionCallException
- {
- if ( ! list.isEmpty() )
- {
- Object first = list.get(0);
-
- if ( first instanceof List )
- {
- return evaluate( (List) first,
- nav );
- }
- else if ( nav.isElement( first ) )
- {
- return nav.getElementNamespaceUri( first );
- }
- else if ( nav.isAttribute( first ) )
- {
- String uri = nav.getAttributeNamespaceUri( first );
- if (uri == null) return "";
- return uri;
- }
- else if ( nav.isProcessingInstruction( first ) )
- {
- return "";
- }
- else if ( nav.isNamespace( first ) )
- {
- return "";
- }
- else if ( nav.isDocument( first ) )
- {
- return "";
- }
- else if ( nav.isComment( first ) )
- {
- return "";
- }
- else if ( nav.isText( first ) )
- {
- return "";
- }
- else {
- throw new FunctionCallException(
- "The argument to the namespace-uri function must be a node-set");
- }
-
- }
-
- return "";
-
- }
-}
-
diff --git a/src/java/main/org/jaxen/function/NormalizeSpaceFunction.java b/src/java/main/org/jaxen/function/NormalizeSpaceFunction.java
deleted file mode 100644
index f906e1e..0000000
--- a/src/java/main/org/jaxen/function/NormalizeSpaceFunction.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/NormalizeSpaceFunction.java,v 1.17 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NormalizeSpaceFunction.java,v 1.17 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p>
- * <b>4.2</b> <code><i>string</i> normalize-space(<i>string</i>)</code>
- * </p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-normalize-space">
- * The <b>normalize-space</b> function
- * returns the argument string with whitespace normalized by stripping
- * leading and trailing whitespace and replacing sequences of whitespace
- * characters by a single space. Whitespace characters are the same as
- * those allowed by the <a href="http://www.w3.org/TR/REC-xml#NT-S" target="_top">S</a>
- * production in XML. If the argument is omitted, it defaults to the
- * context node converted to a string, in other words the <a
- * href="http://www.w3.org/TR/xpath#dt-string-value"
- * target="_top">string-value</a> of the context node.
- * </blockquote>
- *
- * @author James Strachan (james at metastuff.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-normalize-space"
- * target="_top">Section 4.2 of the XPath Specification</a>
- */
-public class NormalizeSpaceFunction implements Function
-{
-
-
- /**
- * Create a new <code>NormalizeSpaceFunction</code> object.
- */
- public NormalizeSpaceFunction() {}
-
- /**
- * Returns the string-value of the first item in <code>args</code>
- * after removing all leading and trailing white space, and
- * replacing each other sequence of whitespace by a single space.
- * Whitespace consists of the characters space (0x32), carriage return (0x0D),
- * linefeed (0x0A), and tab (0x09).
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list that contains exactly one item
- *
- * @return a normalized <code>String</code>
- *
- * @throws FunctionCallException if <code>args</code> does not have length one
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
-
- if (args.size() == 0) {
- return evaluate( context.getNodeSet(),
- context.getNavigator() );
- }
- else if (args.size() == 1)
- {
- return evaluate( args.get(0),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "normalize-space() cannot have more than one argument" );
- }
-
- /**
- * Returns the string-value of <code>strArg</code> after removing
- * all leading and trailing white space, and
- * replacing each other sequence of whitespace by a single space.
- * Whitespace consists of the characters space (0x32), carriage return (0x0D),
- * linefeed (0x0A), and tab (0x09).
- *
- * @param strArg the object whose string-value is normalized
- * @param nav the context at the point in the
- * expression when the function is called
- *
- * @return the normalized string-value
- */
- public static String evaluate(Object strArg,
- Navigator nav)
- {
- String str = StringFunction.evaluate( strArg,
- nav );
-
- char[] buffer = str.toCharArray();
- int write = 0;
- int lastWrite = 0;
- boolean wroteOne = false;
- int read = 0;
- while (read < buffer.length)
- {
- if (isXMLSpace(buffer[read]))
- {
- if (wroteOne)
- {
- buffer[write++] = ' ';
- }
- do
- {
- read++;
- }
- while(read < buffer.length && isXMLSpace(buffer[read]));
- }
- else
- {
- buffer[write++] = buffer[read++];
- wroteOne = true;
- lastWrite = write;
- }
- }
-
- return new String(buffer, 0, lastWrite);
- }
-
-
- private static boolean isXMLSpace(char c) {
- return c == ' ' || c == '\n' || c == '\r' || c == '\t';
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/NotFunction.java b/src/java/main/org/jaxen/function/NotFunction.java
deleted file mode 100644
index 69ad342..0000000
--- a/src/java/main/org/jaxen/function/NotFunction.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/NotFunction.java,v 1.9 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NotFunction.java,v 1.9 2006/02/05 21:47:41 elharo Exp $
- */
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.3</b> <code><i>boolean</i> not(<i>boolean</i>)</code> </p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-not">
- * The <b>not</b> function returns true if its argument is false, and false otherwise.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-not" target="_top">Section 4.3 of the XPath Specification</a>
- */
-public class NotFunction implements Function
-{
-
- /**
- * Create a new <code>NotFunction</code> object.
- */
- public NotFunction() {}
-
- /**
- * Returns <code>Boolean.TRUE</code> if the boolean value of
- * <code>args.get(0)</code> is false, and <code>Boolean.FALSE</code> otherwise.
- * The boolean value is calculated as if by the XPath <code>boolean</code>
- * function.
- *
- * @param context the context at the point in the
- * expression where the function is called
- * @param args a single element list
- *
- * @return <code>Boolean.TRUE</code> if the boolean value of
- * <code>obj</code> is false, and <code>Boolean.FALSE</code> otherwise
- *
- * @throws FunctionCallException if <code>args</code> does not have exactly one argument
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 1)
- {
- return evaluate( args.get(0), context.getNavigator() );
- }
-
- throw new FunctionCallException( "not() requires one argument." );
- }
-
- /**
- * Returns <code>Boolean.TRUE</code> if the boolean value of
- * <code>obj</code> is false, and <code>Boolean.FALSE</code> otherwise.
- * The boolean value is calculated as if by the XPath <code>boolean</code>
- * function.
- *
- * @param obj the object whose boolean value is inverted
- * @param nav the <code>Navigator</code> used to calculate the boolean value of <code>obj</code>
- *
- * @return <code>Boolean.TRUE</code> if the boolean value of
- * <code>obj</code> is false, and <code>Boolean.FALSE</code> otherwise
- */
- public static Boolean evaluate(Object obj, Navigator nav)
- {
- return ( ( BooleanFunction.evaluate( obj, nav ).booleanValue() )
- ? Boolean.FALSE
- : Boolean.TRUE
- );
- }
-
-}
\ No newline at end of file
diff --git a/src/java/main/org/jaxen/function/NumberFunction.java b/src/java/main/org/jaxen/function/NumberFunction.java
deleted file mode 100644
index 3ef1003..0000000
--- a/src/java/main/org/jaxen/function/NumberFunction.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/NumberFunction.java,v 1.18 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.18 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NumberFunction.java,v 1.18 2006/02/05 21:47:41 elharo Exp $
- */
-
-package org.jaxen.function;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p>
- * <b>4.4</b> <code><i>number</i> number(<i>object</i>)</code>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-number">
- * <p>
- * The <b>number</b> function converts
- * its argument to a number as follows:
- * </p>
- *
- * <ul>
- *
- * <li>
- * <p>
- * a string that consists of optional whitespace followed by an optional
- * minus sign followed by a <a href="#NT-Number">Number</a> followed by
- * whitespace is converted to the IEEE 754 number that is nearest
- * (according to the IEEE 754 round-to-nearest rule) to the mathematical
- * value represented by the string; any other string is converted to NaN
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * boolean true is converted to 1; boolean false is converted to 0
- * </p>
- * </li>
- *
- * <li>
- *
- * <p>
- * a node-set is first converted to a string as if by a call to the <b><a
- * href="http://www.w3.org/TR/xpath#function-string" target="_top">string</a></b> function and then converted
- * in the same way as a string argument
- * </p>
- *
- * </li>
- *
- * <li>
- * <p>
- * an object of a type other than the four basic types is converted to a
- * number in a way that is dependent on that type
- * </p>
- * </li>
- *
- * </ul>
- *
- * <p>
- * If the argument is omitted, it defaults to a node-set with the
- * context node as its only member.
- * </p>
- *
- * <blockquote> <b>NOTE: </b>The <b>number</b>
- * function should not be used for conversion of numeric data occurring
- * in an element in an XML document unless the element is of a type that
- * represents numeric data in a language-neutral format (which would
- * typically be transformed into a language-specific format for
- * presentation to a user). In addition, the <b>number</b> function cannot be used
- * unless the language-neutral format used by the element is consistent
- * with the XPath syntax for a <a href="http://www.w3.org/TR/xpath#NT-Number">Number</a>.</blockquote>
- *
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-number"
- * target="_top">Section 4.4 of the XPath Specification</a>
- */
-public class NumberFunction implements Function
-{
-
- private final static Double NaN = new Double( Double.NaN );
-
-
- /**
- * Create a new <code>NumberFunction</code> object.
- */
- public NumberFunction() {}
-
- /**
- * Returns the number value of <code>args.get(0)</code>,
- * or the number value of the context node if <code>args</code>
- * is empty.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list containing the single item to be converted to a
- * <code>Double</code>
- *
- * @return a <code>Double</code>
- *
- * @throws FunctionCallException if <code>args</code> has more than one item
- */
- public Object call(Context context, List args) throws FunctionCallException
- {
- if (args.size() == 1)
- {
- return evaluate( args.get(0), context.getNavigator() );
- }
- else if (args.size() == 0)
- {
- return evaluate( context.getNodeSet(), context.getNavigator() );
- }
-
- throw new FunctionCallException( "number() takes at most one argument." );
- }
-
- /**
- * Returns the number value of <code>obj</code>.
- *
- * @param obj the object to be converted to a number
- * @param nav the <code>Navigator</code> used to calculate the string-value
- * of node-sets
- *
- * @return a <code>Double</code>
- */
- public static Double evaluate(Object obj, Navigator nav)
- {
- if( obj instanceof Double )
- {
- return (Double) obj;
- }
- else if ( obj instanceof String )
- {
- String str = (String) obj;
- try
- {
- Double doubleValue = new Double( str );
- return doubleValue;
- }
- catch (NumberFormatException e)
- {
- return NaN;
- }
- }
- else if ( obj instanceof List || obj instanceof Iterator )
- {
- return evaluate( StringFunction.evaluate( obj, nav ), nav );
- }
- else if ( nav.isElement( obj ) || nav.isAttribute( obj ) )
- {
- return evaluate( StringFunction.evaluate( obj, nav ), nav );
- }
- else if ( obj instanceof Boolean )
- {
- if ( obj == Boolean.TRUE )
- {
- return new Double( 1 );
- }
- else
- {
- return new Double( 0 );
- }
- }
- return NaN;
- }
-
- /**
- * Determines whether the argument is not a number (NaN) as defined
- * by IEEE 754.
- *
- * @param val the double to test
- * @return true if the value is NaN, false otherwise
- */
- public static boolean isNaN( double val )
- {
- return Double.isNaN(val);
- }
-
- /**
- * Determines whether the argument is not a number (NaN) as defined
- * by IEEE 754.
- *
- * @param val the <code>Double</code> to test
- * @return true if the value is NaN, false otherwise
- */
- public static boolean isNaN( Double val )
- {
- return val.equals( NaN );
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/PositionFunction.java b/src/java/main/org/jaxen/function/PositionFunction.java
deleted file mode 100644
index 3b95064..0000000
--- a/src/java/main/org/jaxen/function/PositionFunction.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/PositionFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: PositionFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-
-/**
- * <p><b>4.1</b> <code><i>number</i> position()</code></p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The position function returns a number equal to the context position from the expression evaluation context.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-position" target="_top">Section 4.1 of the XPath Specification</a>
- */
-public class PositionFunction implements Function
-{
-
- /**
- * Create a new <code>PositionFunction</code> object.
- */
- public PositionFunction() {}
-
- /**
- * Returns the position of the context node in the context node-set.
- *
- * @param context the context at the point in the
- * expression where the function is called
- * @param args an empty list
- *
- * @return a <code>Double</code> containing the context position
- *
- * @throws FunctionCallException if <code>args</code> is not empty
- *
- * @see Context#getSize()
- */
- public Object call(Context context, List args) throws FunctionCallException
- {
- if ( args.size() == 0 )
- {
- return evaluate( context );
- }
-
- throw new FunctionCallException( "position() does not take any arguments." );
- }
-
- /**
- *
- * Returns the position of the context node in the context node-set.
- *
- * @param context the context at the point in the
- * expression where the function is called
- *
- * @return a <code>Double</code> containing the context position
- *
- * @see Context#getPosition()
- */
- public static Double evaluate(Context context)
- {
- return new Double( context.getPosition() );
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/RoundFunction.java b/src/java/main/org/jaxen/function/RoundFunction.java
deleted file mode 100644
index 763fa34..0000000
--- a/src/java/main/org/jaxen/function/RoundFunction.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/RoundFunction.java,v 1.12 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.12 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: RoundFunction.java,v 1.12 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.4</b> <code><i>number</i> round(<i>number</i>)</code> </p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The <b>round</b> function returns the number that is closest to the argument and that is an integer.
- * If there are two such numbers, then the one that is closest to positive infinity is returned.
- * If the argument is NaN, then NaN is returned. If the argument is positive infinity, then positive infinity is returned.
- * If the argument is negative infinity, then negative infinity is returned.
- * If the argument is positive zero, then positive zero is returned.
- * If the argument is negative zero, then negative zero is returned.
- * If the argument is less than zero, but greater than or equal to -0.5, then negative zero is returned.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-round" target="_top">Section 4.4 of the XPath Specification</a>
- */
-public class RoundFunction implements Function
-{
-
- /**
- * Create a new <code>RoundFunction</code> object.
- */
- public RoundFunction() {}
-
-
- /** Returns the nearest integer to the number.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list with exactly one item which will be converted to a
- * <code>Double</code> as if by the XPath <code>number()</code> function
- *
- * @return a <code>Double</code> containing the integer nearest to
- * <code>args.get(0)</code>
- *
- * @throws FunctionCallException if <code>args</code> has more or less than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 1)
- {
- return evaluate( args.get(0),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "round() requires one argument." );
- }
-
- /**
- * Returns the integer nearest to the argument.
- * If necessary, the argument is first converted to a <code>Double</code>
- * as if by the XPath <code>number()</code> function.
- *
- * @param obj the object to be rounded
- * @param nav ignored
- *
- * @return the integer nearest to <code>obj</code>
- */
- public static Double evaluate(Object obj,
- Navigator nav)
- {
- Double d = NumberFunction.evaluate( obj,
- nav );
-
- if (d.isNaN() || d.isInfinite())
- {
- return d;
- }
-
- double value = d.doubleValue();
- return new Double( Math.round( value ) );
- }
-}
diff --git a/src/java/main/org/jaxen/function/StartsWithFunction.java b/src/java/main/org/jaxen/function/StartsWithFunction.java
deleted file mode 100644
index 4c60c8d..0000000
--- a/src/java/main/org/jaxen/function/StartsWithFunction.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/StartsWithFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: StartsWithFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.2</b> <code><i>boolean</i> starts-with(<i>string</i>,<i>string</i>)</code></p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The <b>starts-with</b> function returns true if the first argument string starts
- * with the second argument string, and otherwise returns false.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-starts-with" target="_top">Section 4.2 of the XPath Specification</a>
- */
-public class StartsWithFunction implements Function
-{
-
- /**
- * Create a new <code>StartsWithFunction</code> object.
- */
- public StartsWithFunction() {}
-
- /**
- * Returns true if the string-value of the first item in <code>args</code>
- * starts with the string-value of the second item in <code>args</code>.
- * Otherwise it returns false.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list that contains two items
- *
- * @return <code>Boolean.TRUE</code> if the first item in <code>args</code>
- * starts with the string-value of the second item in <code>args</code>;
- * otherwise <code>Boolean.FALSE</code>
- *
- * @throws FunctionCallException if <code>args</code> does not have length two
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 2)
- {
- return evaluate( args.get(0),
- args.get(1),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "starts-with() requires two arguments." );
- }
-
- /**
- * Returns true if the string-value of <code>strArg</code>
- * starts with the string-value of <code>matchArg</code>.
- * Otherwise it returns false.
- *
- * @param strArg the object whose string-value searched for the prefix
- * @param matchArg the object whose string-value becomes the prefix string to compare against
- * @param nav the navigator used to calculate the string-values of the arguments
- *
- * @return <code>Boolean.TRUE</code> if the string-value of <code>strArg</code>
- * starts with the string-value of <code>matchArg</code>;
- * otherwise <code>Boolean.FALSE</code>
- *
- */
- public static Boolean evaluate(Object strArg,
- Object matchArg,
- Navigator nav)
- {
- String str = StringFunction.evaluate( strArg,
- nav );
-
- String match = StringFunction.evaluate( matchArg,
- nav );
-
- return ( str.startsWith(match)
- ? Boolean.TRUE
- : Boolean.FALSE
- );
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/StringFunction.java b/src/java/main/org/jaxen/function/StringFunction.java
deleted file mode 100644
index 4743e69..0000000
--- a/src/java/main/org/jaxen/function/StringFunction.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/StringFunction.java,v 1.33 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.33 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: StringFunction.java,v 1.33 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.JaxenRuntimeException;
-
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-import java.text.DecimalFormatSymbols;
-import java.util.List;
-import java.util.Iterator;
-import java.util.Locale;
-
-/**
- * <p>
- * <b>4.2</b> <code><i>string</i> string(<i>object</i>)</code>
- * </p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * <p>
- * The <b>string</b> function converts
- * an object to a string as follows:
- * </p>
- *
- * <ul>
- *
- * <li>
- * <p>
- * A node-set is converted to a string by returning the <a
- * href="http://www.w3.org/TR/xpath#dt-string-value" target="_top">string-value</a> of the node in the node-set
- * that is first in <a href="http://www.w3.org/TR/xpath#dt-document-order" target="_top">document order</a>. If
- * the node-set is empty, an empty string is returned.
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * A number is converted to a string as follows
- * </p>
- *
- * <ul>
- *
- * <li>
- * <p>
- * NaN is converted to the string <code>NaN</code>
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * positive zero is converted to the string <code>0</code>
- * </p>
- * </li>
- *
- * <li>
- *
- * <p>
- * negative zero is converted to the string <code>0</code>
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * positive infinity is converted to the string <code>Infinity</code>
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * negative infinity is converted to the string <code>-Infinity</code>
- *
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * if the number is an integer, the number is represented in decimal
- * form as a <a href="http://www.w3.org/TR/xpath#NT-Number" target="_top">Number</a> with no decimal point and
- * no leading zeros, preceded by a minus sign (<code>-</code>) if
- * the number is negative
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * otherwise, the number is represented in decimal form as a Number including a decimal point with at least
- * one digit before the decimal point and at least one digit after the
- * decimal point, preceded by a minus sign (<code>-</code>) if the
- * number is negative; there must be no leading zeros before the decimal
- * point apart possibly from the one required digit immediately before
- * the decimal point; beyond the one required digit after the decimal
- * point there must be as many, but only as many, more digits as are
- * needed to uniquely distinguish the number from all other IEEE 754
- * numeric values.
- * </p>
- *
- * </li>
- *
- * </ul>
- *
- * </li>
- *
- * <li>
- * <p>
- * The boolean false value is converted to the string <code>false</code>.
- * The boolean true value is converted to the string <code>true</code>.
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * An object of a type other than the four basic types is converted to a
- * string in a way that is dependent on that type.
- * </p>
- *
- * </li>
- *
- * </ul>
- *
- * <p>
- * If the argument is omitted, it defaults to a node-set with the
- * context node as its only member.
- * </p>
- *
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-string"
- * target="_top">Section 4.2 of the XPath Specification</a>
- */
-public class StringFunction implements Function
-{
-
- private static DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH);
-
- static {
- DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ENGLISH);
- symbols.setNaN("NaN");
- symbols.setInfinity("Infinity");
- format.setGroupingUsed(false);
- format.setMaximumFractionDigits(32);
- format.setDecimalFormatSymbols(symbols);
- }
-
- /**
- * Create a new <code>StringFunction</code> object.
- */
- public StringFunction() {}
-
- /**
- * Returns the string-value of <code>args.get(0)</code>
- * or of the context node if <code>args</code> is empty.
- *
- * @param context the context at the point in the
- * expression where the function is called
- * @param args list with zero or one element
- *
- * @return a <code>String</code>
- *
- * @throws FunctionCallException if <code>args</code> has more than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- int size = args.size();
-
- if ( size == 0 )
- {
- return evaluate( context.getNodeSet(),
- context.getNavigator() );
- }
- else if ( size == 1 )
- {
- return evaluate( args.get(0),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "string() takes at most argument." );
- }
-
- /**
- * Returns the XPath string-value of <code>obj</code>.
- * This operation is only defined if obj is a node, node-set,
- * <code>String</code>, <code>Number</code>, or
- * <code>Boolean</code>. For other types this function
- * returns the empty string.
- *
- * @param obj the node, node-set, string, number, or boolean
- * whose string-value is calculated
- * @param nav the navigator used to calculate the string-value
- *
- * @return a <code>String</code>. May be empty but is never null.
- */
- public static String evaluate(Object obj,
- Navigator nav)
- {
- try
- {
- // Workaround because XOM uses lists for Text nodes
- // so we need to check for that first
- if (nav != null && nav.isText(obj))
- {
- return nav.getTextStringValue(obj);
- }
-
- if (obj instanceof List)
- {
- List list = (List) obj;
- if (list.isEmpty())
- {
- return "";
- }
- // do not recurse: only first list should unwrap
- obj = list.get(0);
- }
-
- if (nav != null) {
- // This stack of instanceof really suggests there's
- // a failure to take advantage of polymorphism here
- if (nav.isElement(obj))
- {
- return nav.getElementStringValue(obj);
- }
- else if (nav.isAttribute(obj))
- {
- return nav.getAttributeStringValue(obj);
- }
-
- else if (nav.isDocument(obj))
- {
- Iterator childAxisIterator = nav.getChildAxisIterator(obj);
- while (childAxisIterator.hasNext())
- {
- Object descendant = childAxisIterator.next();
- if (nav.isElement(descendant))
- {
- return nav.getElementStringValue(descendant);
- }
- }
- }
- else if (nav.isProcessingInstruction(obj))
- {
- return nav.getProcessingInstructionData(obj);
- }
- else if (nav.isComment(obj))
- {
- return nav.getCommentStringValue(obj);
- }
- else if (nav.isText(obj))
- {
- return nav.getTextStringValue(obj);
- }
- else if (nav.isNamespace(obj))
- {
- return nav.getNamespaceStringValue(obj);
- }
- }
-
- if (obj instanceof String)
- {
- return (String) obj;
- }
- else if (obj instanceof Boolean)
- {
- return stringValue(((Boolean) obj).booleanValue());
- }
- else if (obj instanceof Number)
- {
- return stringValue(((Number) obj).doubleValue());
- }
-
- }
- catch (UnsupportedAxisException e)
- {
- throw new JaxenRuntimeException(e);
- }
-
- return "";
-
- }
-
- private static String stringValue(double value)
- {
-
- // DecimalFormat formats negative zero as "-0".
- // Therefore we need to test for zero explicitly here.
- if (value == 0) return "0";
-
- // need to synchronize object for thread-safety
- String result = null;
- synchronized (format) {
- result = format.format(value);
- }
- return result;
-
- }
-
- private static String stringValue(boolean value)
- {
- return value ? "true" : "false";
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/StringLengthFunction.java b/src/java/main/org/jaxen/function/StringLengthFunction.java
deleted file mode 100644
index 8ae897f..0000000
--- a/src/java/main/org/jaxen/function/StringLengthFunction.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/StringLengthFunction.java,v 1.12 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.12 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: StringLengthFunction.java,v 1.12 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.2</b> <code><i>number</i> string-length(<i>string</i>)</code></p>
- *
- * <p>
- * The <b>string-length</b> function returns the number of <strong>Unicode characters</strong>
- * in its argument. This is <strong>not</strong> necessarily
- * the same as the number <strong>Java chars</strong>
- * in the corresponding Java string. In particular, if the Java <code>String</code>
- * contains surrogate pairs each such pair will be counted as only one character
- * by this function. If the argument is omitted,
- * it returns the length of the string-value of the context node.
- * </p>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-string-length" target="_top">Section
- * 4.2 of the XPath Specification</a>
- */
-public class StringLengthFunction implements Function
-{
-
-
- /**
- * Create a new <code>StringLengthFunction</code> object.
- */
- public StringLengthFunction() {}
-
-
- /**
- * <p>
- * Returns the number of Unicode characters in the string-value of the argument.
- * </p>
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list containing the item whose string-value is to be counted.
- * If empty, the length of the context node's string-value is returned.
- *
- * @return a <code>Double</code> giving the number of Unicode characters
- *
- * @throws FunctionCallException if args has more than one item
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 0)
- {
- return evaluate( context.getNodeSet(),
- context.getNavigator() );
- }
- else if (args.size() == 1)
- {
- return evaluate( args.get(0),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "string-length() requires one argument." );
- }
-
- /**
- * <p>
- * Returns the number of Unicode characters in the string-value of
- * an object.
- * </p>
- *
- * @param obj the object whose string-value is counted
- * @param nav used to calculate the string-values of the first two arguments
- *
- * @return a <code>Double</code> giving the number of Unicode characters
- *
- * @throws FunctionCallException if the string contains mismatched surrogates
- */
- public static Double evaluate(Object obj, Navigator nav) throws FunctionCallException
- {
- String str = StringFunction.evaluate( obj, nav );
- // String.length() counts UTF-16 code points; not Unicode characters
- char[] data = str.toCharArray();
- int length = 0;
- for (int i = 0; i < data.length; i++) {
- char c = data[i];
- length++;
- // if this is a high surrogate; assume the next character is
- // is a low surrogate and skip it
- if (c >= 0xD800) {
- try {
- char low = data[i+1];
- if (low < 0xDC00 || low > 0xDFFF) {
- throw new FunctionCallException("Bad surrogate pair in string " + str);
- }
- i++; // increment past low surrogate
- }
- catch (ArrayIndexOutOfBoundsException ex) {
- throw new FunctionCallException("Bad surrogate pair in string " + str);
- }
- }
- }
- return new Double(length);
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/SubstringAfterFunction.java b/src/java/main/org/jaxen/function/SubstringAfterFunction.java
deleted file mode 100644
index 5933ea3..0000000
--- a/src/java/main/org/jaxen/function/SubstringAfterFunction.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/SubstringAfterFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SubstringAfterFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.2</b> <code><i>string</i> substring-after(<i>string</i>,<i>string</i>)</code></p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * The <b>substring-after</b> function returns the substring of the first argument string
- * that follows the first occurrence of the second argument string in the first
- * argument string, or the empty string if the first argument string does not contain the second argument string.
- * For example, substring-after("1999/04/01","/") returns 04/01,
- * and substring-after("1999/04/01","19") returns 99/04/01.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-substring-after" target="_top">Section 4.2 of the XPath Specification</a>
- */
-public class SubstringAfterFunction implements Function
-{
-
- /**
- * Create a new <code>SubstringAfterFunction</code> object.
- */
- public SubstringAfterFunction() {}
-
-
- /**
- * Returns the part of the string-value of the first item in <code>args</code>
- * that follows the string-value of the second item in <code>args</code>;
- * or the empty string if the second string is not a substring of the first string.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list that contains two items
- *
- * @return a <code>String</code> containing that
- * part of the string-value of the first item in <code>args</code>
- * that comes before the string-value of the second item in <code>args</code>
- *
- * @throws FunctionCallException if <code>args</code> does not have length two
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 2)
- {
- return evaluate( args.get(0),
- args.get(1),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "substring-after() requires two arguments." );
- }
-
-
- /**
- * Returns the part of <code>strArg</code> that follows the first occurence
- * of <code>matchArg</code>; or the empty string if the
- * <code>strArg</code> does not contain <code>matchArg</code>
- *
- * @param strArg the string from which the substring is extracted
- * @param matchArg the string that marks the boundary of the substring
- * @param nav the <code>Navigator</code> used to calculate the string-values of
- * the first two arguments
- *
- * @return a <code>String</code> containing
- * the part of <code>strArg</code> that precedes the first occurence
- * of <code>matchArg</code>
- *
- */
- public static String evaluate(Object strArg,
- Object matchArg,
- Navigator nav)
- {
- String str = StringFunction.evaluate( strArg,
- nav );
-
- String match = StringFunction.evaluate( matchArg,
- nav );
-
- int loc = str.indexOf(match);
-
- if ( loc < 0 )
- {
- return "";
- }
-
- return str.substring(loc+match.length());
- }
-}
diff --git a/src/java/main/org/jaxen/function/SubstringBeforeFunction.java b/src/java/main/org/jaxen/function/SubstringBeforeFunction.java
deleted file mode 100644
index 21725cc..0000000
--- a/src/java/main/org/jaxen/function/SubstringBeforeFunction.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/SubstringBeforeFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SubstringBeforeFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.2</b> <code><i>string</i> substring-before(<i>string</i>,<i>string</i>)</code></p>
- *
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-substring-before">
- * The substring-before function returns the substring of the first argument
- * string that precedes the first occurrence of the second argument string
- * in the first argument string, or the empty string if the
- * first argument string does not contain the second argument string.
- * For example, substring-before("1999/04/01","/") returns 1999.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-substring-before" target="_top">Section 4.2 of the XPath Specification</a>
- */
-public class SubstringBeforeFunction implements Function
-{
-
-
- /**
- * Create a new <code>SubstringBeforeFunction</code> object.
- */
- public SubstringBeforeFunction() {}
-
-
- /**
- * Returns the part of the string-value of the first item in <code>args</code>
- * that comes before the string-value of the second item in <code>args</code>;
- * or the empty string if the second string is not a substring of the first string.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list that contains two items
- *
- * @return a <code>String</code> containing that
- * part of the string-value of the first item in <code>args</code>
- * that comes before the string-value of the second item in <code>args</code>
- *
- * @throws FunctionCallException if <code>args</code> does not have length two
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 2)
- {
- return evaluate( args.get(0),
- args.get(1),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "substring-before() requires two arguments." );
- }
-
- /**
- * Returns the part of <code>strArg</code> that precedes the first occurence
- * of <code>matchArg</code>; or the empty string if the
- * <code>strArg</code> does not contain <code>matchArg</code>
- *
- * @param strArg the string from which the substring is extracted
- * @param matchArg the string that marks the boundary of the substring
- * @param nav the <code>Navigator</code> used to calculate the string-values of
- * the first two arguments
- *
- * @return a <code>String</code> containing the part of <code>strArg</code> that precedes the first occurence
- * of <code>matchArg</code>
- *
- */
- public static String evaluate(Object strArg,
- Object matchArg,
- Navigator nav)
- {
- String str = StringFunction.evaluate( strArg,
- nav );
-
- String match = StringFunction.evaluate( matchArg,
- nav );
-
- int loc = str.indexOf(match);
-
- if ( loc < 0 )
- {
- return "";
- }
-
- return str.substring(0, loc);
-
- }
-}
diff --git a/src/java/main/org/jaxen/function/SubstringFunction.java b/src/java/main/org/jaxen/function/SubstringFunction.java
deleted file mode 100644
index 82fbccd..0000000
--- a/src/java/main/org/jaxen/function/SubstringFunction.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/SubstringFunction.java,v 1.16 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.16 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- */
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-/**
- * <p>
- * <b>4.2</b>
- * <code><i>string</i> substring(<i>string</i>,<i>number</i>,<i>number?</i>)</code>
- * </p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath">
- * <p>The <b>substring</b> function returns the
- * substring of the first argument starting at the position specified in
- * the second argument with length specified in the third argument. For
- * example,
- *
- * <code>substring("12345",2,3)</code> returns <code>"234"</code>.
- * If the third argument is not specified, it returns the substring
- * starting at the position specified in the second argument and
- * continuing to the end of the string. For example,
- * <code>substring("12345",2)</code> returns <code>"2345"</code>.
- * </p>
- *
- * <p>
- * More precisely, each character in the string (see <a
- * href="http://www.w3.org/TR/xpath#strings">[<b>3.6 Strings</b>]</a>) is considered to have a
- * numeric position: the position of the first character is 1, the
- * position of the second character is 2 and so on.
- * </p>
- *
- * <blockquote> <b>NOTE: </b>This differs from Java and ECMAScript, in
- * which the <code>String.substring</code> method treats the position
- * of the first character as 0.</blockquote>
- *
- * <p>
- * The returned substring contains those characters for which the
- * position of the character is greater than or equal to the rounded
- * value of the second argument and, if the third argument is specified,
- * less than the sum of the rounded value of the second argument and the
- * rounded value of the third argument; the comparisons and addition
- * used for the above follow the standard IEEE 754 rules; rounding is
- * done as if by a call to the <b><a href="#function-round">round</a></b>
- * function. The following examples illustrate various unusual cases:
- * </p>
- *
- * <ul>
- *
- * <li>
- * <p>
- * <code>substring("12345", 1.5, 2.6)</code> returns
- * <code>"234"</code>
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * <code>substring("12345", 0, 3)</code> returns <code>"12"</code>
- *
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * <code>substring("12345", 0 div 0, 3)</code> returns <code>""</code>
- * </p>
- * </li>
- *
- * <li>
- * <p>.
- * <code>substring("12345", 1, 0 div 0)</code> returns
- *
- * <code>""</code>
- * </p>
- * </li>
- *
- * <li>
- * <p>
- * <code>substring("12345", -42, 1 div 0)</code> returns
- * <code>"12345"</code>
- * </p>
- * </li>
- *
- * <li>
- * <p>
- *
- * <code>substring("12345", -1 div 0, 1 div 0)</code> returns
- * <code>""</code> </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-substring"
- * target="_top">Section 4.2 of the XPath Specification</a>
- */
-public class SubstringFunction implements Function
-{
-
- /**
- * Create a new <code>SubstringFunction</code> object.
- */
- public SubstringFunction() {}
-
-
- /** Returns a substring of an XPath string-value by character index.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list that contains two or three items
- *
- * @return a <code>String</code> containing the specifed character subsequence of
- * the original string or the string-value of the context node
- *
- * @throws FunctionCallException if <code>args</code> has more than three
- * or less than two items
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- final int argc = args.size();
- if (argc < 2 || argc > 3){
- throw new FunctionCallException( "substring() requires two or three arguments." );
- }
-
- final Navigator nav = context.getNavigator();
-
- final String str = StringFunction.evaluate(args.get(0), nav );
- // The spec doesn't really address this case
- if (str == null) {
- return "";
- }
-
- final int stringLength = (StringLengthFunction.evaluate(args.get(0), nav )).intValue();
-
- if (stringLength == 0) {
- return "";
- }
-
- Double d1 = NumberFunction.evaluate(args.get(1), nav);
-
- if (d1.isNaN()){
- return "";
- }
- // Round the value and subtract 1 as Java strings are zero based
- int start = RoundFunction.evaluate(d1, nav).intValue() - 1;
-
- int substringLength = stringLength;
- if (argc == 3){
- Double d2 = NumberFunction.evaluate(args.get(2), nav);
-
- if (!d2.isNaN()){
- substringLength = RoundFunction.evaluate(d2, nav ).intValue();
- }
- else {
- substringLength = 0;
- }
- }
-
- if (substringLength < 0) return "";
-
- int end = start + substringLength;
- if (argc == 2) end = stringLength;
-
- // negative start is treated as 0
- if ( start < 0){
- start = 0;
- }
- else if (start > stringLength){
- return "";
- }
-
- if (end > stringLength){
- end = stringLength;
- }
- else if (end < start) return "";
-
- if (stringLength == str.length()) {
- // easy case; no surrogate pairs
- return str.substring(start, end);
- }
- else {
- return unicodeSubstring(str, start, end);
- }
-
- }
-
- private static String unicodeSubstring(String s, int start, int end) {
-
- StringBuffer result = new StringBuffer(s.length());
- for (int jChar = 0, uChar=0; uChar < end; jChar++, uChar++) {
- char c = s.charAt(jChar);
- if (uChar >= start) result.append(c);
- if (c >= 0xD800) { // get the low surrogate
- // ???? we could check here that this is indeed a low surroagte
- // we could also catch StringIndexOutOfBoundsException
- jChar++;
- if (uChar >= start) result.append(s.charAt(jChar));
- }
- }
- return result.toString();
- }
-}
diff --git a/src/java/main/org/jaxen/function/SumFunction.java b/src/java/main/org/jaxen/function/SumFunction.java
deleted file mode 100644
index f43de5a..0000000
--- a/src/java/main/org/jaxen/function/SumFunction.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/SumFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SumFunction.java,v 1.11 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p><b>4.4</b> <code><i>number</i> sum(<i>node-set</i>)</code> </p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-sum">
- * The sum function returns the sum, for each node in the argument node-set,
- * of the result of converting the string-values of the node to a number.
- * </blockquote>
- *
- * @author bob mcwhirter (bob @ werken.com)
- * @see <a href="http://www.w3.org/TR/xpath#function-sum" target="_top">Section 4.4 of the XPath Specification</a>
- */
-public class SumFunction implements Function
-{
-
- /**
- * Create a new <code>SumFunction</code> object.
- */
- public SumFunction() {}
-
- /** Returns the sum of its arguments.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list that contains exactly one item, also a <code>List</code>
- *
- * @return a <code>Double</code> containing the sum of the items in <code>args.get(0)</code>
- *
- * @throws FunctionCallException if <code>args</code> has more or less than one item;
- * or if the first argument is not a <code>List</code>
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
-
- if (args.size() == 1)
- {
- return evaluate( args.get(0),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "sum() requires one argument." );
- }
-
- /**
- * Returns the sum of the items in a list.
- * If necessary, each item in the list is first converted to a <code>Double</code>
- * as if by the XPath <code>number()</code> function.
- *
- * @param obj a <code>List</code> of numbers to be summed
- * @param nav ignored
- *
- * @return the sum of the list
- *
- * @throws FunctionCallException if <code>obj</code> is not a <code>List</code>
- */
- public static Double evaluate(Object obj,
- Navigator nav) throws FunctionCallException
- {
- double sum = 0;
-
- if (obj instanceof List)
- {
- Iterator nodeIter = ((List)obj).iterator();
- while ( nodeIter.hasNext() )
- {
- double term = NumberFunction.evaluate( nodeIter.next(),
- nav ).doubleValue();
- sum += term;
- }
- }
- else
- {
- throw new FunctionCallException("The argument to the sum function must be a node-set");
- }
-
- return new Double(sum);
- }
-
-}
diff --git a/src/java/main/org/jaxen/function/TranslateFunction.java b/src/java/main/org/jaxen/function/TranslateFunction.java
deleted file mode 100644
index 4da8285..0000000
--- a/src/java/main/org/jaxen/function/TranslateFunction.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/TranslateFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: TranslateFunction.java,v 1.10 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-
-/**
- * <p>
- * <b>4.2</b>
- * <code><i>string</i> translate(<i>string</i>,<i>string</i>,<i>string</i>)</code>
- * </p>
- *
- * <blockquote src="http://www.w3.org/TR/xpath#function-translate">
- * <p>
- * The <b><a href="http://www.w3.org/TR/xpath#function-translate">translate</a></b> function
- * returns the first argument string with occurrences of characters in
- * the second argument string replaced by the character at the
- * corresponding position in the third argument string. For example,
- * <code>translate("bar","abc","ABC")</code> returns the string
- * <code>BAr</code>. If there is a character in the second argument
- * string with no character at a corresponding position in the third
- * argument string (because the second argument string is longer than
- * the third argument string), then occurrences of that character in the
- * first argument string are removed. For example,
- * <code>translate("--aaa--","abc-","ABC")</code> returns
- * <code>"AAA"</code>. If a character occurs more than once in the
- * second argument string, then the first occurrence determines the
- * replacement character. If the third argument string is longer than
- * the second argument string, then excess characters are ignored.
- * </p>
- *
- * <blockquote> <b>NOTE: </b>The <b>translate</b> function is not a
- * sufficient solution for case conversion in all languages. A future
- * version of XPath may provide additional functions for case
- * conversion.</blockquote>
- *
- * </blockquote>
- *
- * @author Jan Dvorak ( jan.dvorak @ mathan.cz )
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-translate"
- * target="_top">Section 4.2 of the XPath Specification</a>
- */
-public class TranslateFunction implements Function
-{
-
- /* The translation is done thru a HashMap. Performance tip (for anyone
- * who needs to improve the performance of this particular function):
- * Cache the HashMaps, once they are constructed. */
-
- /**
- * Create a new <code>TranslateFunction</code> object.
- */
- public TranslateFunction() {}
-
-
- /** Returns a copy of the first argument in which
- * characters found in the second argument are replaced by
- * corresponding characters from the third argument.
- *
- * @param context the context at the point in the
- * expression when the function is called
- * @param args a list that contains exactly three items
- *
- * @return a <code>String</code> built from <code>args.get(0)</code>
- * in which occurrences of characters in <code>args.get(1)</code>
- * are replaced by the corresponding characters in <code>args.get(2)</code>
- *
- * @throws FunctionCallException if <code>args</code> does not have exactly three items
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 3) {
- return evaluate( args.get(0),
- args.get(1),
- args.get(2),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "translate() requires three arguments." );
- }
-
- /**
- * Returns a copy of <code>strArg</code> in which
- * characters found in <code>fromArg</code> are replaced by
- * corresponding characters from <code>toArg</code>.
- * If necessary each argument is first converted to it string-value
- * as if by the XPath <code>string()</code> function.
- *
- * @param strArg the base string
- * @param fromArg the characters to be replaced
- * @param toArg the characters they will be replaced by
- * @param nav the <code>Navigator</code> used to calculate the string-values of the arguments.
- *
- * @return a copy of <code>strArg</code> in which
- * characters found in <code>fromArg</code> are replaced by
- * corresponding characters from <code>toArg</code>
- *
- * @throws FunctionCallException if one of the arguments is a malformed Unicode string;
- * that is, if surrogate characters don't line up properly
- *
- */
- public static String evaluate(Object strArg,
- Object fromArg,
- Object toArg,
- Navigator nav) throws FunctionCallException
- {
- String inStr = StringFunction.evaluate( strArg, nav );
- String fromStr = StringFunction.evaluate( fromArg, nav );
- String toStr = StringFunction.evaluate( toArg, nav );
-
- // Initialize the mapping in a HashMap
- Map characterMap = new HashMap();
- String[] fromCharacters = toUnicodeCharacters(fromStr);
- String[] toCharacters = toUnicodeCharacters(toStr);
- int fromLen = fromCharacters.length;
- int toLen = toCharacters.length;
- for ( int i = 0; i < fromLen; i++ ) {
- String cFrom = fromCharacters[i];
- if ( characterMap.containsKey( cFrom ) ) {
- // We've seen the character before, ignore
- continue;
- }
-
- if ( i < toLen ) {
- // Will change
- characterMap.put( cFrom, toCharacters[i] );
- }
- else {
- // Will delete
- characterMap.put( cFrom, null );
- }
- }
-
- // Process the input string thru the map
- StringBuffer outStr = new StringBuffer( inStr.length() );
- String[] inCharacters = toUnicodeCharacters(inStr);
- int inLen = inCharacters.length;
- for ( int i = 0; i < inLen; i++ ) {
- String cIn = inCharacters[i];
- if ( characterMap.containsKey( cIn ) ) {
- String cTo = (String) characterMap.get( cIn );
- if ( cTo != null ) {
- outStr.append( cTo );
- }
- }
- else {
- outStr.append( cIn );
- }
- }
-
- return outStr.toString();
- }
-
- private static String[] toUnicodeCharacters(String s) throws FunctionCallException {
-
- String[] result = new String[s.length()];
- int stringLength = 0;
- for (int i = 0; i < s.length(); i++) {
- char c1 = s.charAt(i);
- if (isHighSurrogate(c1)) {
- try {
- char c2 = s.charAt(i+1);
- if (isLowSurrogate(c2)) {
- result[stringLength] = (c1 + "" + c2).intern();
- i++;
- }
- else {
- throw new FunctionCallException("Mismatched surrogate pair in translate function");
- }
- }
- catch (StringIndexOutOfBoundsException ex) {
- throw new FunctionCallException("High surrogate without low surrogate at end of string passed to translate function");
- }
- }
- else {
- result[stringLength]=String.valueOf(c1).intern();
- }
- stringLength++;
- }
-
- if (stringLength == result.length) return result;
-
- // trim array
- String[] trimmed = new String[stringLength];
- System.arraycopy(result, 0, trimmed, 0, stringLength);
- return trimmed;
-
- }
-
- private static boolean isHighSurrogate(char c) {
- return c >= 0xD800 && c <= 0xDBFF;
- }
-
- private static boolean isLowSurrogate(char c) {
- return c >= 0xDC00 && c <= 0xDFFF;
- }
-
-}
\ No newline at end of file
diff --git a/src/java/main/org/jaxen/function/TrueFunction.java b/src/java/main/org/jaxen/function/TrueFunction.java
deleted file mode 100644
index 5d6b754..0000000
--- a/src/java/main/org/jaxen/function/TrueFunction.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/TrueFunction.java,v 1.9 2006/02/05 21:47:41 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/02/05 21:47:41 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: TrueFunction.java,v 1.9 2006/02/05 21:47:41 elharo Exp $
- */
-
-
-package org.jaxen.function;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-
-/**
- * <p><b>4.3</b> <code><i>boolean</i> true()</code></p>
- *
- * <p>Returns true.</p>
- *
- * @author bob mcwhirter (bob @ werken.com)
- *
- * @see <a href="http://www.w3.org/TR/xpath#function-true">XPath Specification</a>
- */
-public class TrueFunction implements Function
-{
-
- /**
- * Create a new <code>TrueFunction</code> object.
- */
- public TrueFunction() {}
-
-
- /** Returns <code>Boolean.TRUE</code>
- *
- * @param context ignored
- * @param args an empty list
- *
- * @return <code>Boolean.TRUE</code>
- *
- * @throws FunctionCallException if <code>args</code> is not empty
- */
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 0)
- {
- return evaluate();
- }
-
- throw new FunctionCallException( "true() requires no arguments." );
- }
-
- /**
- * Returns true.
- *
- * @return <code>Boolean.TRUE</code>
- */
- public static Boolean evaluate()
- {
- return Boolean.TRUE;
- }
-}
diff --git a/src/java/main/org/jaxen/function/ext/EndsWithFunction.java b/src/java/main/org/jaxen/function/ext/EndsWithFunction.java
deleted file mode 100644
index 71b4a00..0000000
--- a/src/java/main/org/jaxen/function/ext/EndsWithFunction.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/ext/EndsWithFunction.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: EndsWithFunction.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.function.ext;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.function.StringFunction;
-
-/**
- * <p><code><i>boolean</i> ends-with(<i>string</i>,<i>string</i>)</code>
- *
- * @author mark wilson (markw @ wilsoncom.de)
- */
-public class EndsWithFunction implements Function
-{
-
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 2)
- {
- return evaluate( args.get(0),
- args.get(1),
- context.getNavigator() );
- }
-
- throw new FunctionCallException( "ends-with() requires two arguments." );
- }
-
- public static Boolean evaluate(Object strArg,
- Object matchArg,
- Navigator nav)
- {
- String str = StringFunction.evaluate( strArg,
- nav );
-
- String match = StringFunction.evaluate( matchArg,
- nav );
-
- return ( str.endsWith(match)
- ? Boolean.TRUE
- : Boolean.FALSE
- );
- }
-}
diff --git a/src/java/main/org/jaxen/function/ext/EvaluateFunction.java b/src/java/main/org/jaxen/function/ext/EvaluateFunction.java
deleted file mode 100644
index e1da212..0000000
--- a/src/java/main/org/jaxen/function/ext/EvaluateFunction.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/ext/EvaluateFunction.java,v 1.10 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: EvaluateFunction.java,v 1.10 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.function.ext;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.XPath;
-import org.jaxen.function.StringFunction;
-
-/**
- * <code><i>node-set</i> evaluate(<i>string</i>)</code>
- *
- * @author Erwin Bolwidt (ejb @ klomp.org)
- */
-public class EvaluateFunction implements Function
-{
- public Object call( Context context, List args )
- throws FunctionCallException
- {
- if ( args.size() == 1 ) {
- return evaluate( context, args.get(0));
- }
-
- throw new FunctionCallException( "evaluate() requires one argument" );
- }
-
- public static List evaluate (Context context, Object arg)
- throws FunctionCallException
- {
- List contextNodes = context.getNodeSet();
-
- if (contextNodes.size() == 0)
- return Collections.EMPTY_LIST;
-
- Navigator nav = context.getNavigator();
-
- String xpathString;
- if ( arg instanceof String )
- xpathString = (String)arg;
- else
- xpathString = StringFunction.evaluate(arg, nav);
-
- try {
- XPath xpath = nav.parseXPath(xpathString);
- ContextSupport support = context.getContextSupport();
- xpath.setVariableContext( support.getVariableContext() );
- xpath.setFunctionContext( support.getFunctionContext() );
- xpath.setNamespaceContext( support.getNamespaceContext() );
- return xpath.selectNodes( context.duplicate() );
- }
- catch ( org.jaxen.saxpath.SAXPathException e ) {
- throw new FunctionCallException(e.toString());
- }
- }
-}
-
diff --git a/src/java/main/org/jaxen/function/ext/LocaleFunctionSupport.java b/src/java/main/org/jaxen/function/ext/LocaleFunctionSupport.java
deleted file mode 100644
index 6c16768..0000000
--- a/src/java/main/org/jaxen/function/ext/LocaleFunctionSupport.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/ext/LocaleFunctionSupport.java,v 1.10 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LocaleFunctionSupport.java,v 1.10 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.function.ext;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.StringTokenizer;
-
-import org.jaxen.Function;
-import org.jaxen.Navigator;
-import org.jaxen.function.StringFunction;
-
-/**
- * <p>An abstract base class for Locale-specific extension
- * functions. This class provides convenience methods that
- * can be inherited, specifically to find a Locale from
- * an XPath function argument value.
- * </p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public abstract class LocaleFunctionSupport implements Function
-{
-
- /**
- * Attempts to convert the given function argument value
- * into a Locale either via casting, extracting it from a List
- * or looking up the named Locale using reflection.
- *
- * @param value is either a Locale, a List containing a Locale
- * or a String containing the name of a Locale
- * as defined by the Locale static members.
- *
- * @return the Locale for the value or null if one could
- * not be deduced
- */
- protected Locale getLocale(Object value, Navigator navigator)
- {
- if (value instanceof Locale)
- {
- return (Locale) value;
- }
- else if(value instanceof List)
- {
- List list = (List) value;
- if ( ! list.isEmpty() )
- {
- return getLocale( list.get(0), navigator );
- }
- }
- else {
- String text = StringFunction.evaluate( value, navigator );
- if (text != null && text.length() > 0)
- {
- return findLocale( text );
- }
- }
- return null;
- }
-
- /**
- * Tries to find a Locale instance by name using
- * <a href="http://www.ietf.org/rfc/rfc3066.txt" target="_top">RFC 3066</a>
- * language tags such as 'en', 'en-US', 'en-US-Brooklyn'.
- *
- * @param localeText the RFC 3066 language tag
- * @return the locale for the given text or null if one could not
- * be found
- */
- protected Locale findLocale(String localeText) {
- StringTokenizer tokens = new StringTokenizer( localeText, "-" );
- if (tokens.hasMoreTokens())
- {
- String language = tokens.nextToken();
- if (! tokens.hasMoreTokens())
- {
- return findLocaleForLanguage(language);
- }
- else
- {
- String country = tokens.nextToken();
- if (! tokens.hasMoreTokens())
- {
- return new Locale(language, country);
- }
- else
- {
- String variant = tokens.nextToken();
- return new Locale(language, country, variant);
- }
- }
- }
- return null;
- }
-
- /**
- * Finds the locale with the given language name with no country
- * or variant, such as Locale.ENGLISH or Locale.FRENCH
- *
- * @param language the language code to look for
- * @return the locale for the given language or null if one could not
- * be found
- */
- protected Locale findLocaleForLanguage(String language) {
- Locale[] locales = Locale.getAvailableLocales();
- for ( int i = 0, size = locales.length; i < size; i++ )
- {
- Locale locale = locales[i];
- if ( language.equals( locale.getLanguage() ) )
- {
- String country = locale.getCountry();
- if ( country == null || country.length() == 0 )
- {
- String variant = locale.getVariant();
- if ( variant == null || variant.length() == 0 )
- {
- return locale;
- }
- }
- }
- }
- return null;
- }
-}
diff --git a/src/java/main/org/jaxen/function/ext/LowerFunction.java b/src/java/main/org/jaxen/function/ext/LowerFunction.java
deleted file mode 100644
index 123e15c..0000000
--- a/src/java/main/org/jaxen/function/ext/LowerFunction.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/ext/LowerFunction.java,v 1.11 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LowerFunction.java,v 1.11 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.function.ext;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.jaxen.Context;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.function.StringFunction;
-
-/**
- * <p><code><i>string</i> lower-case(<i>string</i>)</code>
- *
- * This function can take a second parameter of the
- * <code>Locale</code> to use for the String conversion.
- * </p>
- *
- * <p>
- * For example
- *
- * <code>lower-case( /foo/bar )</code>
- * <code>lower-case( /foo/@name, $myLocale )</code>
- * </p>
- *
- * @author mark wilson (markw at wilsoncom.de)
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public class LowerFunction extends LocaleFunctionSupport
-{
-
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- Navigator navigator = context.getNavigator();
- int size = args.size();
- if (size > 0)
- {
- Object text = args.get(0);
- Locale locale = null;
- if (size > 1)
- {
- locale = getLocale( args.get(1), navigator );
- }
- return evaluate( text, locale, navigator );
- }
- throw new FunctionCallException( "lower-case() requires at least one argument." );
- }
-
- /**
- * Converts the given string value to lower case using an optional Locale
- *
- * @param strArg the value which gets converted to a String
- * @param locale the Locale to use for the conversion or null
- * English should be used
- * @param nav the Navigator to use
- */
- public static String evaluate(Object strArg,
- Locale locale,
- Navigator nav)
- {
-
- String str = StringFunction.evaluate( strArg,
- nav );
- // it might be possible to use the xml:lang attribute to
- // pick a default locale
- if (locale == null) locale = Locale.ENGLISH;
- return str.toLowerCase(locale);
-
- }
-}
diff --git a/src/java/main/org/jaxen/function/ext/UpperFunction.java b/src/java/main/org/jaxen/function/ext/UpperFunction.java
deleted file mode 100644
index b69032c..0000000
--- a/src/java/main/org/jaxen/function/ext/UpperFunction.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/ext/UpperFunction.java,v 1.11 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: UpperFunction.java,v 1.11 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.function.ext;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.jaxen.Context;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.function.StringFunction;
-
-/**
- * <p><code><i>string</i> upper-case(<i>string</i>)</code>
- *
- * This function can take a second parameter of the
- * <code>Locale</code> to use for the String conversion.
- * </p>
- *
- * <p>
- * For example
- *
- * <code>upper-case( /foo/bar )</code>
- * <code>upper-case( /foo/@name, $myLocale )</code>
- * </p>
- *
- * @author mark wilson (markw at wilsoncom.de)
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public class UpperFunction extends LocaleFunctionSupport
-{
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- Navigator navigator = context.getNavigator();
- int size = args.size();
- if (size > 0)
- {
- Object text = args.get(0);
- Locale locale = null;
- if (size > 1)
- {
- locale = getLocale( args.get(1), navigator );
- }
- return evaluate( text, locale, navigator );
- }
- throw new FunctionCallException( "upper-case() requires at least one argument." );
- }
-
- /**
- * Converts the given string value to upper case using an optional Locale
- *
- * @param strArg the value which gets converted to a String
- * @param locale the Locale to use for the conversion or null if
- * English should be used
- * @param nav the Navigator to use
- */
- public static String evaluate(Object strArg,
- Locale locale,
- Navigator nav)
- {
-
- String str = StringFunction.evaluate( strArg,
- nav );
- // it might be possible to use the xml:lang attribute to
- // pick a default locale
- if (locale == null) locale = Locale.ENGLISH;
- return str.toUpperCase(locale);
- }
-}
diff --git a/src/java/main/org/jaxen/function/ext/package.html b/src/java/main/org/jaxen/function/ext/package.html
deleted file mode 100644
index 86c2538..0000000
--- a/src/java/main/org/jaxen/function/ext/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.function.ext.*
- </title>
- </head>
-
- <body>
- <p>
- Extension functions to the standard XPath function library.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/function/package.html b/src/java/main/org/jaxen/function/package.html
deleted file mode 100644
index 7f5bf23..0000000
--- a/src/java/main/org/jaxen/function/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.function.*
- </title>
- </head>
-
- <body>
- <p>
- Standard XPath function library.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/function/xslt/DocumentFunction.java b/src/java/main/org/jaxen/function/xslt/DocumentFunction.java
deleted file mode 100644
index 9dab6fa..0000000
--- a/src/java/main/org/jaxen/function/xslt/DocumentFunction.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/function/xslt/DocumentFunction.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DocumentFunction.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-package org.jaxen.function.xslt;
-
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.Function;
-import org.jaxen.FunctionCallException;
-import org.jaxen.Navigator;
-import org.jaxen.function.StringFunction;
-
-/**
- * Implements the XSLT document() function
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public class DocumentFunction implements Function
-{
-
- public Object call(Context context,
- List args) throws FunctionCallException
- {
- if (args.size() == 1)
- {
- Navigator nav = context.getNavigator();
-
- String url = StringFunction.evaluate( args.get( 0 ),
- nav );
-
- return evaluate( url,
- nav );
- }
-
- throw new FunctionCallException( "document() requires one argument." );
- }
-
- public static Object evaluate(String url,
- Navigator nav) throws FunctionCallException
- {
- return nav.getDocument( url );
- }
-}
diff --git a/src/java/main/org/jaxen/function/xslt/package.html b/src/java/main/org/jaxen/function/xslt/package.html
deleted file mode 100644
index e276b63..0000000
--- a/src/java/main/org/jaxen/function/xslt/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.function.xslt.*
- </title>
- </head>
-
- <body>
- <p>
- XPath functions which are defined in XSLT.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/javabean/DocumentNavigator.java b/src/java/main/org/jaxen/javabean/DocumentNavigator.java
deleted file mode 100644
index 5cda34e..0000000
--- a/src/java/main/org/jaxen/javabean/DocumentNavigator.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- $Id: DocumentNavigator.java,v 1.8 2006/06/03 20:35:31 elharo Exp $
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.javabean;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Iterator;
-import java.util.Collection;
-
-import org.jaxen.DefaultNavigator;
-import org.jaxen.FunctionCallException;
-import org.jaxen.NamedAccessNavigator;
-import org.jaxen.Navigator;
-import org.jaxen.XPath;
-import org.jaxen.JaxenConstants;
-import org.jaxen.util.SingleObjectIterator;
-
-/**
- * Interface for navigating around a JavaBean object model.
- *
- * <p>
- * This class is not intended for direct usage, but is
- * used by the Jaxen engine during evaluation.
- * </p>
- *
- * @see XPath
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- */
-public class DocumentNavigator
- extends DefaultNavigator
- implements NamedAccessNavigator
-{
-
- /**
- *
- */
- private static final long serialVersionUID = -1768605107626726499L;
-
- /** Empty Class array. */
- private static final Class[] EMPTY_CLASS_ARRAY = new Class[0];
-
- /** Empty Object array. */
- private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
-
- /** Singleton implementation.
- */
- private static final DocumentNavigator instance = new DocumentNavigator();
-
- /** Retrieve the singleton instance of this <code>DocumentNavigator</code>.
- */
- public static Navigator getInstance()
- {
- return instance;
- }
-
- public boolean isElement(Object obj)
- {
- return (obj instanceof Element);
- }
-
- public boolean isComment(Object obj)
- {
- return false;
- }
-
- public boolean isText(Object obj)
- {
- return ( obj instanceof String );
- }
-
- public boolean isAttribute(Object obj)
- {
- return false;
- }
-
- public boolean isProcessingInstruction(Object obj)
- {
- return false;
- }
-
- public boolean isDocument(Object obj)
- {
- return false;
- }
-
- public boolean isNamespace(Object obj)
- {
- return false;
- }
-
- public String getElementName(Object obj)
- {
- return ((Element)obj).getName();
- }
-
- public String getElementNamespaceUri(Object obj)
- {
- return "";
- }
-
- public String getElementQName(Object obj)
- {
- return "";
- }
-
- public String getAttributeName(Object obj)
- {
- return "";
- }
-
- public String getAttributeNamespaceUri(Object obj)
- {
- return "";
- }
-
- public String getAttributeQName(Object obj)
- {
- return "";
- }
-
- public Iterator getChildAxisIterator(Object contextNode)
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- /**
- * Retrieves an <code>Iterator</code> over the child elements that
- * match the supplied name.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the children to return, always present
- * @param namespacePrefix the prefix of the namespace of the children to return
- * @param namespaceURI the namespace URI of the children to return
- * @return an Iterator that traverses the named children, or null if none
- */
- public Iterator getChildAxisIterator(Object contextNode,
- String localName,
- String namespacePrefix,
- String namespaceURI)
- {
- Class cls = ((Element)contextNode).getObject().getClass();
-
- String methodName = javacase( localName );
-
- Method method = null;
-
- try
- {
- method = cls.getMethod( "get" + methodName, EMPTY_CLASS_ARRAY );
- }
- catch (NoSuchMethodException e)
- {
- try
- {
- method = cls.getMethod( "get" + methodName + "s", EMPTY_CLASS_ARRAY );
- }
- catch (NoSuchMethodException ee)
- {
- try
- {
- method = cls.getMethod( localName, EMPTY_CLASS_ARRAY );
- }
- catch (NoSuchMethodException eee)
- {
- method = null;
- }
- }
- }
-
- if ( method == null )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- try
- {
- Object result = method.invoke( ((Element)contextNode).getObject(), EMPTY_OBJECT_ARRAY );
-
- if ( result == null )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- if ( result instanceof Collection )
- {
- return new ElementIterator( (Element) contextNode, localName, ((Collection)result).iterator() );
- }
-
- if ( result.getClass().isArray() )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- return new SingleObjectIterator( new Element( (Element) contextNode, localName, result ) );
- }
- catch (IllegalAccessException e)
- {
- // swallow
- }
- catch (InvocationTargetException e)
- {
- // swallow
- }
-
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getParentAxisIterator(Object contextNode)
- {
- if ( contextNode instanceof Element )
- {
- return new SingleObjectIterator( ((Element)contextNode).getParent() );
- }
-
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getAttributeAxisIterator(Object contextNode)
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- /**
- * Retrieves an <code>Iterator</code> over the attribute elements that
- * match the supplied name.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the attributes to return, always present
- * @param namespacePrefix the prefix of the namespace of the attributes to return
- * @param namespaceURI the namespace URI of the attributes to return
- * @return an Iterator that traverses the named attributes, not null
- */
- public Iterator getAttributeAxisIterator(Object contextNode,
- String localName,
- String namespacePrefix,
- String namespaceURI) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getNamespaceAxisIterator(Object contextNode)
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Object getDocumentNode(Object contextNode)
- {
- return null;
- }
-
- public Object getParentNode(Object contextNode)
- {
- if ( contextNode instanceof Element )
- {
- return ((Element)contextNode).getParent();
- }
-
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public String getTextStringValue(Object obj)
- {
- if ( obj instanceof Element )
- {
- return ((Element)obj).getObject().toString();
- }
- return obj.toString();
- }
-
- public String getElementStringValue(Object obj)
- {
- if ( obj instanceof Element )
- {
- return ((Element)obj).getObject().toString();
- }
- return obj.toString();
- }
-
- public String getAttributeStringValue(Object obj)
- {
- return obj.toString();
- }
-
- public String getNamespaceStringValue(Object obj)
- {
- return obj.toString();
- }
-
- public String getNamespacePrefix(Object obj)
- {
- return null;
- }
-
- public String getCommentStringValue(Object obj)
- {
- return null;
- }
-
- public String translateNamespacePrefixToUri(String prefix, Object context)
- {
- return null;
- }
-
- public short getNodeType(Object node)
- {
- return 0;
- }
-
- public Object getDocument(String uri) throws FunctionCallException
- {
- return null;
- }
-
- public String getProcessingInstructionTarget(Object obj)
- {
- return null;
- }
-
- public String getProcessingInstructionData(Object obj)
- {
- return null;
- }
-
- public XPath parseXPath(String xpath)
- throws org.jaxen.saxpath.SAXPathException
- {
- return new JavaBeanXPath( xpath );
- }
-
- protected String javacase(String name)
- {
- if ( name.length() == 0 )
- {
- return name;
- }
- else if ( name.length() == 1 )
- {
- return name.toUpperCase();
- }
-
- return name.substring( 0, 1 ).toUpperCase() + name.substring( 1 );
- }
-}
diff --git a/src/java/main/org/jaxen/javabean/Element.java b/src/java/main/org/jaxen/javabean/Element.java
deleted file mode 100644
index 5df348d..0000000
--- a/src/java/main/org/jaxen/javabean/Element.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.jaxen.javabean;
-
-public class Element
-{
- private Element parent;
- private String name;
- private Object object;
-
- public Element(Element parent,
- String name,
- Object object)
- {
- this.parent = parent;
- this.name = name;
- this.object = object;
- }
-
- public Element getParent()
- {
- return this.parent;
- }
-
- public String getName()
- {
- return this.name;
- }
-
- public Object getObject()
- {
- return this.object;
- }
-}
diff --git a/src/java/main/org/jaxen/javabean/ElementIterator.java b/src/java/main/org/jaxen/javabean/ElementIterator.java
deleted file mode 100644
index c31a60f..0000000
--- a/src/java/main/org/jaxen/javabean/ElementIterator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.jaxen.javabean;
-
-import java.util.Iterator;
-
-public class ElementIterator
- implements Iterator
-{
- private Element parent;
- private String name;
- private Iterator iterator;
-
- public ElementIterator(Element parent,
- String name,
- Iterator iterator)
- {
- this.parent = parent;
- this.name = name;
- this.iterator = iterator;
- }
-
- public boolean hasNext()
- {
- return this.iterator.hasNext();
- }
-
- public Object next()
- {
- return new Element( parent,
- this.name,
- this.iterator.next() );
- }
-
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
-}
diff --git a/src/java/main/org/jaxen/javabean/JavaBeanXPath.java b/src/java/main/org/jaxen/javabean/JavaBeanXPath.java
deleted file mode 100644
index cfac8ae..0000000
--- a/src/java/main/org/jaxen/javabean/JavaBeanXPath.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/javabean/JavaBeanXPath.java,v 1.6 2006/06/03 20:36:00 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/06/03 20:36:00 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: JavaBeanXPath.java,v 1.6 2006/06/03 20:36:00 elharo Exp $
- */
-
-package org.jaxen.javabean;
-
-import org.jaxen.Context;
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenException;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-/** An XPath implementation for JavaBeans.
- *
- * <p>This is the main entry point for matching an XPath against a JavaBean
- * tree. You create a compiled XPath object, then match it against
- * one or more context nodes using the {@link #selectNodes(Object)}
- * method, as in the following example:</p>
- *
- * <pre>
- * Node node = ...;
- * XPath path = new JavaBeanXPath("a/b/c");
- * List results = path.selectNodes(node);
- * </pre>
- *
- * @see BaseXPath
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- *
- * @version $Revision: 1.6 $
- */
-public class JavaBeanXPath extends BaseXPath
-{
- /**
- *
- */
- private static final long serialVersionUID = -1567521943360266313L;
-
- /** Construct given an XPath expression string.
- *
- * @param xpathExpr The XPath expression.
- *
- * @throws JaxenException if there is a syntax error while
- * parsing the expression
- */
- public JavaBeanXPath(String xpathExpr) throws JaxenException
- {
- super( xpathExpr, DocumentNavigator.getInstance() );
- }
-
- protected Context getContext(Object node)
- {
- if ( node instanceof Context )
- {
- return (Context) node;
- }
-
- if ( node instanceof Element )
- {
- return super.getContext( node );
- }
-
- if ( node instanceof List )
- {
- List newList = new ArrayList();
-
- for ( Iterator listIter = ((List)node).iterator();
- listIter.hasNext(); )
- {
- newList.add( new Element( null, "root", listIter.next() ) );
- }
-
- return super.getContext( newList );
- }
-
- return super.getContext( new Element( null, "root", node ) );
- }
-
- public Object evaluate(Object node)
- throws JaxenException
- {
- Object result = super.evaluate( node );
-
- if ( result instanceof Element )
- {
- return ((Element)result).getObject();
- }
- else if ( result instanceof Collection )
- {
- List newList = new ArrayList();
-
- for ( Iterator listIter = ((Collection)result).iterator();
- listIter.hasNext(); )
- {
- Object member = listIter.next();
-
- if ( member instanceof Element )
- {
- newList.add( ((Element)member).getObject() );
- }
- else
- {
- newList.add( member );
- }
- }
-
- return newList;
- }
-
- return result;
- }
-}
diff --git a/src/java/main/org/jaxen/javabean/package.html b/src/java/main/org/jaxen/javabean/package.html
deleted file mode 100644
index e7db732..0000000
--- a/src/java/main/org/jaxen/javabean/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.javabean.*
- </title>
- </head>
-
- <body>
- <p>
- Navigation for JavaBeans.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/jdom/DocumentNavigator.java b/src/java/main/org/jaxen/jdom/DocumentNavigator.java
deleted file mode 100644
index c6f30fb..0000000
--- a/src/java/main/org/jaxen/jdom/DocumentNavigator.java
+++ /dev/null
@@ -1,583 +0,0 @@
-package org.jaxen.jdom;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/jdom/DocumentNavigator.java,v 1.36 2006/09/21 11:48:05 elharo Exp $
- * $Revision: 1.36 $
- * $Date: 2006/09/21 11:48:05 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DocumentNavigator.java,v 1.36 2006/09/21 11:48:05 elharo Exp $
-*/
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.jaxen.DefaultNavigator;
-import org.jaxen.FunctionCallException;
-import org.jaxen.NamedAccessNavigator;
-import org.jaxen.Navigator;
-import org.jaxen.XPath;
-import org.jaxen.JaxenConstants;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.util.SingleObjectIterator;
-import org.jdom.Attribute;
-import org.jdom.CDATA;
-import org.jdom.Comment;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.Namespace;
-import org.jdom.ProcessingInstruction;
-import org.jdom.Text;
-import org.jdom.input.SAXBuilder;
-
-/**
- * Interface for navigating around the JDOM object model.
- *
- * <p>
- * This class is not intended for direct usage, but is
- * used by the Jaxen engine during evaluation.
- * </p>
- *
- * @see XPath
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author Stephen Colebourne
- */
-public class DocumentNavigator extends DefaultNavigator implements NamedAccessNavigator
-{
- /**
- *
- */
- private static final long serialVersionUID = -1636727587303584165L;
-
- /** Singleton implementation.
- */
- private static class Singleton
- {
- /** Singleton instance.
- */
- private static DocumentNavigator instance = new DocumentNavigator();
- }
-
- public static Navigator getInstance()
- {
- return Singleton.instance;
- }
-
- public boolean isElement(Object obj)
- {
- return obj instanceof Element;
- }
-
- public boolean isComment(Object obj)
- {
- return obj instanceof Comment;
- }
-
- public boolean isText(Object obj)
- {
- return ( obj instanceof Text
- ||
- obj instanceof CDATA );
- }
-
- public boolean isAttribute(Object obj)
- {
- return obj instanceof Attribute;
- }
-
- public boolean isProcessingInstruction(Object obj)
- {
- return obj instanceof ProcessingInstruction;
- }
-
- public boolean isDocument(Object obj)
- {
- return obj instanceof Document;
- }
-
- public boolean isNamespace(Object obj)
- {
- return obj instanceof Namespace || obj instanceof XPathNamespace;
- }
-
- public String getElementName(Object obj)
- {
- Element elem = (Element) obj;
-
- return elem.getName();
- }
-
- public String getElementNamespaceUri(Object obj)
- {
- Element elem = (Element) obj;
-
- String uri = elem.getNamespaceURI();
- if ( uri != null && uri.length() == 0 )
- return null;
- else
- return uri;
- }
-
- public String getAttributeName(Object obj)
- {
- Attribute attr = (Attribute) obj;
-
- return attr.getName();
- }
-
- public String getAttributeNamespaceUri(Object obj)
- {
- Attribute attr = (Attribute) obj;
-
- String uri = attr.getNamespaceURI();
- if ( uri != null && uri.length() == 0 )
- return null;
- else
- return uri;
- }
-
- public Iterator getChildAxisIterator(Object contextNode)
- {
- if ( contextNode instanceof Element )
- {
- return ((Element)contextNode).getContent().iterator();
- }
- else if ( contextNode instanceof Document )
- {
- return ((Document)contextNode).getContent().iterator();
- }
-
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- /**
- * Retrieves an <code>Iterator</code> over the child elements that
- * match the supplied local name and namespace URI.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the children to return, always present
- * @param namespacePrefix ignored; prefixes are not used when matching in XPath
- * @param namespaceURI the URI of the namespace of the children to return
- * @return an Iterator that traverses the named children, or null if none
- */
- public Iterator getChildAxisIterator(
- Object contextNode, String localName, String namespacePrefix, String namespaceURI) {
-
- if ( contextNode instanceof Element ) {
- Element node = (Element) contextNode;
- if (namespaceURI == null) {
- return node.getChildren(localName).iterator();
- }
- return node.getChildren(localName, Namespace.getNamespace(namespacePrefix, namespaceURI)).iterator();
- }
- if ( contextNode instanceof Document ) {
- Document node = (Document) contextNode;
-
- Element el = node.getRootElement();
- if (el.getName().equals(localName) == false) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- if (namespaceURI != null) {
- // JDOM's equals method does not consider the prefix when comparing namespace objects
- if (!Namespace.getNamespace(namespacePrefix, namespaceURI).equals(el.getNamespace())) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- }
- else if(el.getNamespace() != Namespace.NO_NAMESPACE) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- return new SingleObjectIterator(el);
- }
-
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getNamespaceAxisIterator(Object contextNode)
- {
- if ( ! ( contextNode instanceof Element ) )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- Element elem = (Element) contextNode;
-
- Map nsMap = new HashMap();
-
- Element current = elem;
-
- while ( current != null ) {
-
- Namespace ns = current.getNamespace();
-
- if ( ns != Namespace.NO_NAMESPACE ) {
- if ( !nsMap.containsKey(ns.getPrefix()) )
- nsMap.put( ns.getPrefix(), new XPathNamespace(elem, ns) );
- }
-
- Iterator additional = current.getAdditionalNamespaces().iterator();
-
- while ( additional.hasNext() ) {
-
- ns = (Namespace)additional.next();
- if ( !nsMap.containsKey(ns.getPrefix()) )
- nsMap.put( ns.getPrefix(), new XPathNamespace(elem, ns) );
- }
-
- Iterator attributes = current.getAttributes().iterator();
-
- while ( attributes.hasNext() ) {
-
- Attribute attribute = (Attribute)attributes.next();
-
- Namespace attrNS = attribute.getNamespace();
-
- if ( attrNS != Namespace.NO_NAMESPACE ) {
- if ( !nsMap.containsKey(attrNS.getPrefix()) )
- nsMap.put( attrNS.getPrefix(), new XPathNamespace(elem, attrNS) );
- }
- }
-
- if (current.getParent() instanceof Element) {
- current = (Element)current.getParent();
- } else {
- current = null;
- }
- }
-
- nsMap.put( "xml", new XPathNamespace(elem, Namespace.XML_NAMESPACE) );
-
- return nsMap.values().iterator();
- }
-
- public Iterator getParentAxisIterator(Object contextNode)
- {
- Object parent = null;
-
- if ( contextNode instanceof Document )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- else if ( contextNode instanceof Element )
- {
- parent = ((Element)contextNode).getParent();
-
- if ( parent == null )
- {
- if ( ((Element)contextNode).isRootElement() )
- {
- parent = ((Element)contextNode).getDocument();
- }
- }
- }
- else if ( contextNode instanceof Attribute )
- {
- parent = ((Attribute)contextNode).getParent();
- }
- else if ( contextNode instanceof XPathNamespace )
- {
- parent = ((XPathNamespace)contextNode).getJDOMElement();
- }
- else if ( contextNode instanceof ProcessingInstruction )
- {
- parent = ((ProcessingInstruction)contextNode).getParent();
- }
- else if ( contextNode instanceof Comment )
- {
- parent = ((Comment)contextNode).getParent();
- }
- else if ( contextNode instanceof Text )
- {
- parent = ((Text)contextNode).getParent();
- }
-
- if ( parent != null )
- {
- return new SingleObjectIterator( parent );
- }
-
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getAttributeAxisIterator(Object contextNode)
- {
- if ( ! ( contextNode instanceof Element ) )
- {
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- Element elem = (Element) contextNode;
-
- return elem.getAttributes().iterator();
- }
-
- /**
- * Retrieves an <code>Iterator</code> over the attribute elements that
- * match the supplied name.
- *
- * @param contextNode the origin context node
- * @param localName the local name of the attributes to return, always present
- * @param namespacePrefix the prefix of the namespace of the attributes to return
- * @param namespaceURI the URI of the namespace of the attributes to return
- * @return an Iterator that traverses the named attributes, not null
- */
- public Iterator getAttributeAxisIterator(
- Object contextNode, String localName, String namespacePrefix, String namespaceURI) {
-
- if ( contextNode instanceof Element ) {
- Element node = (Element) contextNode;
- Namespace namespace = (namespaceURI == null ? Namespace.NO_NAMESPACE :
- Namespace.getNamespace(namespacePrefix, namespaceURI));
- Attribute attr = node.getAttribute(localName, namespace);
- if (attr != null) {
- return new SingleObjectIterator(attr);
- }
- }
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- /** Returns a parsed form of the given XPath string, which will be suitable
- * for queries on JDOM documents.
- */
- public XPath parseXPath (String xpath) throws SAXPathException
- {
- return new JDOMXPath(xpath);
- }
-
- public Object getDocumentNode(Object contextNode)
- {
- if ( contextNode instanceof Document )
- {
- return contextNode;
- }
-
- Element elem = (Element) contextNode;
-
- return elem.getDocument();
- }
-
- public String getElementQName(Object obj)
- {
- Element elem = (Element) obj;
-
- String prefix = elem.getNamespacePrefix();
-
- if ( prefix == null || prefix.length() == 0 )
- {
- return elem.getName();
- }
-
- return prefix + ":" + elem.getName();
- }
-
- public String getAttributeQName(Object obj)
- {
- Attribute attr = (Attribute) obj;
-
- String prefix = attr.getNamespacePrefix();
-
- if ( prefix == null || "".equals( prefix ) )
- {
- return attr.getName();
- }
-
- return prefix + ":" + attr.getName();
- }
-
- public String getNamespaceStringValue(Object obj)
- {
- if (obj instanceof Namespace) {
-
- Namespace ns = (Namespace) obj;
- return ns.getURI();
- } else {
-
- XPathNamespace ns = (XPathNamespace) obj;
- return ns.getJDOMNamespace().getURI();
- }
-
- }
-
- public String getNamespacePrefix(Object obj)
- {
- if (obj instanceof Namespace) {
-
- Namespace ns = (Namespace) obj;
- return ns.getPrefix();
- } else {
-
- XPathNamespace ns = (XPathNamespace) obj;
- return ns.getJDOMNamespace().getPrefix();
- }
- }
-
- public String getTextStringValue(Object obj)
- {
- if ( obj instanceof Text )
- {
- return ((Text)obj).getText();
- }
-
- if ( obj instanceof CDATA )
- {
- return ((CDATA)obj).getText();
- }
-
- return "";
- }
-
- public String getAttributeStringValue(Object obj)
- {
- Attribute attr = (Attribute) obj;
-
- return attr.getValue();
- }
-
- public String getElementStringValue(Object obj)
- {
- Element elem = (Element) obj;
-
- StringBuffer buf = new StringBuffer();
-
- List content = elem.getContent();
- Iterator contentIter = content.iterator();
- Object each = null;
-
- while ( contentIter.hasNext() )
- {
- each = contentIter.next();
-
- if ( each instanceof Text )
- {
- buf.append( ((Text)each).getText() );
- }
- else if ( each instanceof CDATA )
- {
- buf.append( ((CDATA)each).getText() );
- }
- else if ( each instanceof Element )
- {
- buf.append( getElementStringValue( each ) );
- }
- }
-
- return buf.toString();
- }
-
- public String getProcessingInstructionTarget(Object obj)
- {
- ProcessingInstruction pi = (ProcessingInstruction) obj;
-
- return pi.getTarget();
- }
-
- public String getProcessingInstructionData(Object obj)
- {
- ProcessingInstruction pi = (ProcessingInstruction) obj;
-
- return pi.getData();
- }
-
- public String getCommentStringValue(Object obj)
- {
- Comment cmt = (Comment) obj;
-
- return cmt.getText();
- }
-
- public String translateNamespacePrefixToUri(String prefix, Object context)
- {
- Element element = null;
- if ( context instanceof Element )
- {
- element = (Element) context;
- }
- else if ( context instanceof Text )
- {
- element = (Element)((Text)context).getParent();
- }
- else if ( context instanceof Attribute )
- {
- element = ((Attribute)context).getParent();
- }
- else if ( context instanceof XPathNamespace )
- {
- element = ((XPathNamespace)context).getJDOMElement();
- }
- else if ( context instanceof Comment )
- {
- element = (Element)((Comment)context).getParent();
- }
- else if ( context instanceof ProcessingInstruction )
- {
- element = (Element)((ProcessingInstruction)context).getParent();
- }
-
- if ( element != null )
- {
- Namespace namespace = element.getNamespace( prefix );
-
- if ( namespace != null )
- {
- return namespace.getURI();
- }
- }
- return null;
- }
-
- public Object getDocument(String url) throws FunctionCallException
- {
- try
- {
- SAXBuilder builder = new SAXBuilder();
-
- return builder.build( url );
- }
- catch (Exception e)
- {
- throw new FunctionCallException( e.getMessage() );
- }
- }
-}
diff --git a/src/java/main/org/jaxen/jdom/JDOMXPath.java b/src/java/main/org/jaxen/jdom/JDOMXPath.java
deleted file mode 100644
index d6fd511..0000000
--- a/src/java/main/org/jaxen/jdom/JDOMXPath.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/jdom/JDOMXPath.java,v 1.8 2006/06/03 20:30:27 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/06/03 20:30:27 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: JDOMXPath.java,v 1.8 2006/06/03 20:30:27 elharo Exp $
- */
-
-
-package org.jaxen.jdom;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenException;
-
-/** An XPath implementation for the JDOM model
- *
- * <p>This is the main entry point for matching an XPath against a DOM
- * tree. You create a compiled XPath object, then match it against
- * one or more context nodes using the {@link #selectNodes(Object)}
- * method, as in the following example:</p>
- *
- * <pre>
- * Object jdomNode = ...; // Document, Element etc.
- * XPath path = new JDOMXPath("a/b/c");
- * List results = path.selectNodes(jdomNode);
- * </pre>
- *
- * @see BaseXPath
- * @see <a href="http://jdom.org/">The JDOM website</a>
- *
- * @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author <a href="mailto:jstachan at apache.org">James Strachan</a>
- *
- * @version $Revision: 1.8 $
- */
-public class JDOMXPath extends BaseXPath
-{
- /**
- *
- */
- private static final long serialVersionUID = 6426091824802286928L;
-
- /** Construct given an XPath expression string.
- *
- * @param xpathExpr the XPath expression.
- *
- * @throws JaxenException if there is a syntax error while
- * parsing the expression
- */
- public JDOMXPath(String xpathExpr) throws JaxenException
- {
- super( xpathExpr, DocumentNavigator.getInstance() );
- }
-}
diff --git a/src/java/main/org/jaxen/jdom/XPathNamespace.java b/src/java/main/org/jaxen/jdom/XPathNamespace.java
deleted file mode 100644
index 4601931..0000000
--- a/src/java/main/org/jaxen/jdom/XPathNamespace.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/jdom/XPathNamespace.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathNamespace.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-package org.jaxen.jdom;
-
-import org.jdom.Element;
-import org.jdom.Namespace;
-
-/** Wrapper for JDOM namespace nodes to give them a parent, as required
- * by the XPath data model.
- *
- * @author Erwin Bolwidt
- */
-public class XPathNamespace
-{
- private Element jdomElement;
-
- private Namespace jdomNamespace;
-
- /** Creates a namespace-node wrapper for a namespace node that hasn't been
- * assigned to an element yet.
- */
- public XPathNamespace( Namespace jdomNamespace )
- {
- this.jdomNamespace = jdomNamespace;
- }
-
- /** Creates a namespace-node wrapper for a namespace node that is assigned
- * to the given JDOM element.
- */
- public XPathNamespace( Element jdomElement, Namespace jdomNamespace )
- {
- this.jdomElement = jdomElement;
- this.jdomNamespace = jdomNamespace;
- }
-
- /** Returns the JDOM element from which this namespace node has been
- * retrieved. The result may be null when the namespace node has not yet
- * been assigned to an element.
- */
- public Element getJDOMElement()
- {
- return jdomElement;
- }
-
- /** Sets or changes the element to which this namespace node is assigned.
- */
- public void setJDOMElement( Element jdomElement )
- {
- this.jdomElement = jdomElement;
- }
-
- /** Returns the JDOM namespace object of this namespace node; the JDOM
- * namespace object contains the prefix and URI of the namespace.
- */
- public Namespace getJDOMNamespace()
- {
- return jdomNamespace;
- }
-
- public String toString()
- {
- return ( "[xmlns:" + jdomNamespace.getPrefix() + "=\"" +
- jdomNamespace.getURI() + "\", element=" +
- jdomElement.getName() + "]" );
- }
-}
diff --git a/src/java/main/org/jaxen/jdom/package.html b/src/java/main/org/jaxen/jdom/package.html
deleted file mode 100644
index bb8aed6..0000000
--- a/src/java/main/org/jaxen/jdom/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.jdom.*
- </title>
- </head>
-
- <body>
- <p>
- Navigation for <a href="http://jdom.org">JDOM</a> trees.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/overview.html b/src/java/main/org/jaxen/overview.html
deleted file mode 100644
index b18f3eb..0000000
--- a/src/java/main/org/jaxen/overview.html
+++ /dev/null
@@ -1,74 +0,0 @@
-
-<html>
- <head>
- <title>
- Jaxen: Java XPath Engine
- </title>
- </head>
-
- <body bgcolor="white">
-
- <p>Jaxen is a fast Java engine for <a href="http://www.w3.org/TR/xpath">XPath 1.0</a>
- that works on all XML object models.
- </p>
-
- <p>
- Jaxen currently works with the following XML models:
- <a href="http://dom4j.org/">dom4j</a>,
- <a href="http://jdom.org/">JDOM</a>,
- <a href="http://www.w3.org/">W3C DOM</a>
- and
- <a href="http://www.xom.nu/">XOM</a>.
-
- </p>
-
- <p>
- An <code>XPath</code> implementation is typically all that's required
- to get started with Jaxen.
- </p>
-
- <table>
- <tr>
- <td>
- <b>Object Model</b>
- </td>
- <td>
- <b>Class</b>
- </td>
- </tr>
- <tr>
- <td>
- dom4j
- </td>
- <td>
- {@link org.jaxen.dom4j.Dom4jXPath org.jaxen.dom4j.Dom4jXPath}
- </td>
- </tr>
- <tr>
- <td>
- JDOM
- </td>
- <td>
- {@link org.jaxen.jdom.JDOMXPath org.jaxen.jdom.JDOMXPath}
- </td>
- </tr>
- <tr>
- <td>
- W3C DOM
- </td>
- <td>
- {@link org.jaxen.dom.DOMXPath org.jaxen.dom.DOMXPath}
- </td>
- </tr>
- <tr>
- <td>
- XOM
- </td>
- <td>
- {@link org.jaxen.xom.XOMXPath org.jaxen.xom.XOMXPath}
- </td>
- </tr>
- </table>
- </body>
-</html>
-
diff --git a/src/java/main/org/jaxen/package.html b/src/java/main/org/jaxen/package.html
deleted file mode 100644
index 4c00b3b..0000000
--- a/src/java/main/org/jaxen/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.*
- </title>
- </head>
-
- <body>
- <p>
- This package defines the core Jaxen API to the XPath engine.
- Using this API you can work with XPath on any object model.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/pattern/AnyChildNodeTest.java b/src/java/main/org/jaxen/pattern/AnyChildNodeTest.java
deleted file mode 100644
index a6e2121..0000000
--- a/src/java/main/org/jaxen/pattern/AnyChildNodeTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/AnyChildNodeTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: AnyChildNodeTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-
-/** <p><code>AnyChildNodeTest</code> matches any child node.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class AnyChildNodeTest extends NodeTest {
-
- private static AnyChildNodeTest instance = new AnyChildNodeTest();
-
- public static AnyChildNodeTest getInstance()
- {
- return instance;
- }
-
- public AnyChildNodeTest()
- {
- }
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context )
- {
- short type = context.getNavigator().getNodeType( node );
- return type == ELEMENT_NODE || type == TEXT_NODE
- || type == COMMENT_NODE || type == PROCESSING_INSTRUCTION_NODE;
- }
-
- public double getPriority()
- {
- return -0.5;
- }
-
- public short getMatchType()
- {
- return ANY_NODE;
- }
-
- public String getText()
- {
- return "*";
- }
-
-}
diff --git a/src/java/main/org/jaxen/pattern/AnyNodeTest.java b/src/java/main/org/jaxen/pattern/AnyNodeTest.java
deleted file mode 100644
index a8a35f0..0000000
--- a/src/java/main/org/jaxen/pattern/AnyNodeTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/AnyNodeTest.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: AnyNodeTest.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-
-/** <p><code>AnyNodeTest</code> matches any node.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class AnyNodeTest extends NodeTest {
-
- private static AnyNodeTest instance = new AnyNodeTest();
-
- public static AnyNodeTest getInstance()
- {
- return instance;
- }
-
- private AnyNodeTest() {}
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context )
- {
- return true;
- }
-
- public double getPriority()
- {
- return -0.5;
- }
-
- public short getMatchType()
- {
- return ANY_NODE;
- }
-
- public String getText()
- {
- return "*";
- }
-}
diff --git a/src/java/main/org/jaxen/pattern/LocationPathPattern.java b/src/java/main/org/jaxen/pattern/LocationPathPattern.java
deleted file mode 100644
index aa401e3..0000000
--- a/src/java/main/org/jaxen/pattern/LocationPathPattern.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/LocationPathPattern.java,v 1.15 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.15 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LocationPathPattern.java,v 1.15 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.expr.FilterExpr;
-import org.jaxen.util.SingletonList;
-
-/** <p><code>LocationPathPattern</code> matches any node using a
- * location path such as A/B/C.
- * The parentPattern and ancestorPattern properties are used to
- * chain location path patterns together</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.15 $
- */
-public class LocationPathPattern extends Pattern {
-
- /** The node test to perform on this step of the path */
- private NodeTest nodeTest = AnyNodeTest.getInstance();
-
- /** Patterns matching my parent node */
- private Pattern parentPattern;
-
- /** Patterns matching one of my ancestors */
- private Pattern ancestorPattern;
-
- /** The filters to match against */
- private List filters;
-
- /** Whether this lcoation path is absolute or not */
- private boolean absolute;
-
-
- public LocationPathPattern()
- {
- }
-
- public LocationPathPattern(NodeTest nodeTest)
- {
- this.nodeTest = nodeTest;
- }
-
- public Pattern simplify()
- {
- if ( parentPattern != null )
- {
- parentPattern = parentPattern.simplify();
- }
- if ( ancestorPattern != null )
- {
- ancestorPattern = ancestorPattern.simplify();
- }
- if ( filters == null )
- {
- if ( parentPattern == null && ancestorPattern == null )
- {
- return nodeTest;
- }
- if ( parentPattern != null && ancestorPattern == null )
- {
- if ( nodeTest instanceof AnyNodeTest )
- {
- return parentPattern;
- }
- }
- }
- return this;
- }
-
- /** Adds a filter to this pattern
- */
- public void addFilter(FilterExpr filter)
- {
- if ( filters == null )
- {
- filters = new ArrayList();
- }
- filters.add( filter );
- }
-
- /** Adds a pattern for the parent of the current
- * context node used in this pattern.
- */
- public void setParentPattern(Pattern parentPattern)
- {
- this.parentPattern = parentPattern;
- }
-
- /** Adds a pattern for an ancestor of the current
- * context node used in this pattern.
- */
- public void setAncestorPattern(Pattern ancestorPattern)
- {
- this.ancestorPattern = ancestorPattern;
- }
-
- /** Allows the NodeTest to be set
- */
- public void setNodeTest(NodeTest nodeTest) throws JaxenException
- {
- if ( this.nodeTest instanceof AnyNodeTest )
- {
- this.nodeTest = nodeTest;
- }
- else
- {
- throw new JaxenException( "Attempt to overwrite nodeTest: " + this.nodeTest + " with: " + nodeTest );
- }
- }
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context ) throws JaxenException
- {
- Navigator navigator = context.getNavigator();
-
-/*
- if ( isAbsolute() )
- {
- node = navigator.getDocumentNode( node );
- }
-*/
- if (! nodeTest.matches(node, context) )
- {
- return false;
- }
-
- if (parentPattern != null)
- {
- Object parent = navigator.getParentNode( node );
- if ( parent == null )
- {
- return false;
- }
- if ( ! parentPattern.matches( parent, context ) )
- {
- return false;
- }
- }
-
- if (ancestorPattern != null) {
- Object ancestor = navigator.getParentNode( node );
- while (true)
- {
- if ( ancestorPattern.matches( ancestor, context ) )
- {
- break;
- }
- if ( ancestor == null )
- {
- return false;
- }
- if ( navigator.isDocument( ancestor ) )
- {
- return false;
- }
- ancestor = navigator.getParentNode( ancestor );
- }
- }
-
- if (filters != null)
- {
- List list = new SingletonList(node);
-
- context.setNodeSet( list );
-
- // XXXX: filters aren't positional, so should we clone context?
-
- boolean answer = true;
-
- for (Iterator iter = filters.iterator(); iter.hasNext(); )
- {
- FilterExpr filter = (FilterExpr) iter.next();
-
- if ( ! filter.asBoolean( context ) )
- {
- answer = false;
- break;
- }
- }
- // restore context
-
- context.setNodeSet( list );
-
- return answer;
- }
- return true;
- }
-
- public double getPriority()
- {
- if ( filters != null )
- {
- return 0.5;
- }
- return nodeTest.getPriority();
- }
-
-
- public short getMatchType()
- {
- return nodeTest.getMatchType();
- }
-
- public String getText()
- {
- StringBuffer buffer = new StringBuffer();
- if ( absolute )
- {
- buffer.append( "/" );
- }
- if (ancestorPattern != null)
- {
- String text = ancestorPattern.getText();
- if ( text.length() > 0 )
- {
- buffer.append( text );
- buffer.append( "//" );
- }
- }
- if (parentPattern != null)
- {
- String text = parentPattern.getText();
- if ( text.length() > 0 )
- {
- buffer.append( text );
- buffer.append( "/" );
- }
- }
- buffer.append( nodeTest.getText() );
-
- if ( filters != null )
- {
- buffer.append( "[" );
- for (Iterator iter = filters.iterator(); iter.hasNext(); )
- {
- FilterExpr filter = (FilterExpr) iter.next();
- buffer.append( filter.getText() );
- }
- buffer.append( "]" );
- }
- return buffer.toString();
- }
-
- public String toString()
- {
- return super.toString() + "[ absolute: " + absolute + " parent: " + parentPattern + " ancestor: "
- + ancestorPattern + " filters: " + filters + " nodeTest: "
- + nodeTest + " ]";
- }
-
- public boolean isAbsolute()
- {
- return absolute;
- }
-
- public void setAbsolute(boolean absolute)
- {
- this.absolute = absolute;
- }
-
- public boolean hasAnyNodeTest()
- {
- return nodeTest instanceof AnyNodeTest;
- }
-
-}
diff --git a/src/java/main/org/jaxen/pattern/NameTest.java b/src/java/main/org/jaxen/pattern/NameTest.java
deleted file mode 100644
index b8a4ce3..0000000
--- a/src/java/main/org/jaxen/pattern/NameTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/NameTest.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NameTest.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-import org.jaxen.Navigator;
-
-/** <p><code>NameTest</code> tests for a node name.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class NameTest extends NodeTest {
-
- /** The name to match against */
- private String name;
-
- /** The type of node to match - either attribute or element */
- private short nodeType;
-
- public NameTest(String name, short nodeType)
- {
- this.name = name;
- this.nodeType = nodeType;
- }
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context )
- {
- Navigator navigator = context.getNavigator();
- if ( nodeType == Pattern.ELEMENT_NODE )
- {
- return navigator.isElement( node )
- && name.equals( navigator.getElementName( node ) );
- }
- else if ( nodeType == Pattern.ATTRIBUTE_NODE )
- {
- return navigator.isAttribute( node )
- && name.equals( navigator.getAttributeName( node ) );
- }
- else
- {
- if ( navigator.isElement( node ) )
- {
- return name.equals( navigator.getElementName( node ) );
- }
- else
- if ( navigator.isAttribute( node ) )
- {
- return name.equals( navigator.getAttributeName( node ) );
- }
- }
- return false;
- }
-
- public double getPriority()
- {
- return 0.0;
- }
-
-
- public short getMatchType()
- {
- return nodeType;
- }
-
- public String getText()
- {
- if ( nodeType == Pattern.ATTRIBUTE_NODE )
- {
- return "@" + name;
- }
- else
- {
- return name;
- }
- }
-
- public String toString()
- {
- return super.toString() + "[ name: " + name + " type: " + nodeType + " ]";
- }
-}
diff --git a/src/java/main/org/jaxen/pattern/NamespaceTest.java b/src/java/main/org/jaxen/pattern/NamespaceTest.java
deleted file mode 100644
index 9c84d1e..0000000
--- a/src/java/main/org/jaxen/pattern/NamespaceTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/NamespaceTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NamespaceTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-import org.jaxen.Navigator;
-
-/** <p><code>NamespaceTest</code> tests for a given namespace URI.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class NamespaceTest extends NodeTest {
-
- /** The prefix to match against */
- private String prefix;
-
- /** The type of node to match - either attribute or element */
- private short nodeType;
-
- public NamespaceTest(String prefix, short nodeType)
- {
- if ( prefix == null )
- {
- prefix = "";
- }
- this.prefix = prefix;
- this.nodeType = nodeType;
- }
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context )
- {
- Navigator navigator = context.getNavigator();
- String uri = getURI( node, context );
-
- if ( nodeType == Pattern.ELEMENT_NODE )
- {
- return navigator.isElement( node )
- && uri.equals( navigator.getElementNamespaceUri( node ) );
- }
- else if ( nodeType == Pattern.ATTRIBUTE_NODE )
- {
- return navigator.isAttribute( node )
- && uri.equals( navigator.getAttributeNamespaceUri( node ) );
- }
- return false;
- }
-
- public double getPriority()
- {
- return -0.25;
- }
-
-
- public short getMatchType()
- {
- return nodeType;
- }
-
- public String getText()
- {
- return prefix + ":";
- }
-
- public String toString()
- {
- return super.toString() + "[ prefix: " + prefix + " type: " + nodeType + " ]";
- }
-
- /** Returns the URI of the current prefix or "" if no URI can be found
- */
- protected String getURI(Object node, Context context)
- {
- String uri = context.getNavigator().translateNamespacePrefixToUri( prefix, node );
- if ( uri == null )
- {
- uri = context.getContextSupport().translateNamespacePrefixToUri( prefix );
- }
- if ( uri == null )
- {
- uri = "";
- }
- return uri;
- }
-}
diff --git a/src/java/main/org/jaxen/pattern/NoNodeTest.java b/src/java/main/org/jaxen/pattern/NoNodeTest.java
deleted file mode 100644
index 94dad69..0000000
--- a/src/java/main/org/jaxen/pattern/NoNodeTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/NoNodeTest.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NoNodeTest.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-
-/** <p><code>NoNodeTest</code> matches no nodes.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.7 $
- */
-public class NoNodeTest extends NodeTest {
-
- private static NoNodeTest instance = new NoNodeTest();
-
- public static NoNodeTest getInstance()
- {
- return instance;
- }
-
- public NoNodeTest()
- {
- }
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context )
- {
- return false;
- }
-
- public double getPriority()
- {
- return -0.5;
- }
-
- public short getMatchType()
- {
- return NO_NODE;
- }
-
- public String getText()
- {
- return "";
- }
-}
diff --git a/src/java/main/org/jaxen/pattern/NodeTest.java b/src/java/main/org/jaxen/pattern/NodeTest.java
deleted file mode 100644
index 4210bad..0000000
--- a/src/java/main/org/jaxen/pattern/NodeTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/NodeTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NodeTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-
-
-/** <p><code>NodeTest</code> is a simple test on a node.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public abstract class NodeTest extends Pattern {
-
-}
diff --git a/src/java/main/org/jaxen/pattern/NodeTypeTest.java b/src/java/main/org/jaxen/pattern/NodeTypeTest.java
deleted file mode 100644
index 9d74b91..0000000
--- a/src/java/main/org/jaxen/pattern/NodeTypeTest.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/NodeTypeTest.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: NodeTypeTest.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-
-/** <p><code>NodeTypeTest</code> matches if the node is of a certain type
- * such as element, attribute, comment, text, processing instruction and so forth.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class NodeTypeTest extends NodeTest {
-
- public static final NodeTypeTest DOCUMENT_TEST
- = new NodeTypeTest( DOCUMENT_NODE );
-
- public static final NodeTypeTest ELEMENT_TEST
- = new NodeTypeTest( ELEMENT_NODE );
-
- public static final NodeTypeTest ATTRIBUTE_TEST
- = new NodeTypeTest( ATTRIBUTE_NODE );
-
- public static final NodeTypeTest COMMENT_TEST
- = new NodeTypeTest( COMMENT_NODE );
-
- public static final NodeTypeTest TEXT_TEST
- = new NodeTypeTest( TEXT_NODE );
-
- public static final NodeTypeTest PROCESSING_INSTRUCTION_TEST
- = new NodeTypeTest( PROCESSING_INSTRUCTION_NODE );
-
- public static final NodeTypeTest NAMESPACE_TEST
- = new NodeTypeTest( NAMESPACE_NODE );
-
-
- private short nodeType;
-
- public NodeTypeTest(short nodeType)
- {
- this.nodeType = nodeType;
- }
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context )
- {
- return nodeType == context.getNavigator().getNodeType( node );
- }
-
- public double getPriority()
- {
- return -0.5;
- }
-
-
- public short getMatchType()
- {
- return nodeType;
- }
-
- public String getText()
- {
- switch (nodeType)
- {
- case ELEMENT_NODE:
- return "child()";
- case ATTRIBUTE_NODE:
- return "@*";
- case NAMESPACE_NODE:
- return "namespace()";
- case DOCUMENT_NODE:
- return "/";
- case COMMENT_NODE:
- return "comment()";
- case TEXT_NODE:
- return "text()";
- case PROCESSING_INSTRUCTION_NODE:
- return "processing-instruction()";
- }
- return "";
- }
-
- public String toString()
- {
- return super.toString() + "[ type: " + nodeType + " ]";
- }
-}
diff --git a/src/java/main/org/jaxen/pattern/Pattern.java b/src/java/main/org/jaxen/pattern/Pattern.java
deleted file mode 100644
index c315754..0000000
--- a/src/java/main/org/jaxen/pattern/Pattern.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/Pattern.java,v 1.13 2006/04/07 17:11:52 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/04/07 17:11:52 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Pattern.java,v 1.13 2006/04/07 17:11:52 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-/** <p><code>Pattern</code> defines the behaviour for pattern in
- * the XSLT processing model.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.13 $
- */
-public abstract class Pattern {
-
- // These node numbers are compatible with both DOM and dom4j's node types
- /** Matches Element nodes */
- public static final short ELEMENT_NODE = 1;
- /** Matches attribute nodes */
- public static final short ATTRIBUTE_NODE = 2;
- /** Matches text nodes */
- public static final short TEXT_NODE = 3;
- /** Matches CDATA section nodes */
- public static final short CDATA_SECTION_NODE = 4;
- /** Matches entity reference nodes */
- public static final short ENTITY_REFERENCE_NODE = 5;
- /** Matches entity nodes */
- //public static final short ENTITY_NODE = 6;
- /** Matches ProcessingInstruction */
- public static final short PROCESSING_INSTRUCTION_NODE = 7;
- /** Matches comment nodes */
- public static final short COMMENT_NODE = 8;
- /** Matches document nodes */
- public static final short DOCUMENT_NODE = 9;
- /** Matches DocumentType nodes */
- public static final short DOCUMENT_TYPE_NODE = 10;
- //public static final short DOCUMENT_FRAGMENT_NODE = 11;
- //public static final short NOTATION_NODE = 12;
-
- /** Matches a Namespace Node */
- // This has the same value as the DOM Level 3 XPathNamespace type
- public static final short NAMESPACE_NODE = 13;
-
- /** Does not match any valid node */
- public static final short UNKNOWN_NODE = 14;
-
- /** The maximum number of node types for sizing purposes */
- public static final short MAX_NODE_TYPE = 14;
-
- /** Matches any node */
- public static final short ANY_NODE = 0;
-
- /** Matches no nodes */
- public static final short NO_NODE = 14;
-
-
- /**
- *
- * @param node ????
- * @param context ????
- * @return true if the pattern matches the given node
- * @throws JaxenException if ????
- */
- public abstract boolean matches( Object node, Context context ) throws JaxenException;
-
- /** Returns the default resolution policy of the pattern according to the
- * <a href="http://www.w3.org/TR/xslt#conflict">
- * XSLT conflict resolution rules</a>.
- *
- * @return 0.5; the default priority defined in XSLT
- *
- * @see <a href="http://www.w3.org/TR/xslt#conflict" target="_top">Section 5.5 of the XSLT specification</a>
- *
- */
- public double getPriority()
- {
- return 0.5;
- }
-
- /** If this pattern is a union pattern then this
- * method should return an array of patterns which
- * describe the union pattern, which should contain more than one pattern.
- * Otherwise this method should return null.
- *
- * @return an array of the patterns which make up this union pattern
- * or null if this pattern is not a union pattern
- */
- public Pattern[] getUnionPatterns()
- {
- return null;
- }
-
-
- /**
- * Returns the type of node the pattern matches.
- *
- * @return <code>ANY_NODE</code> unless overridden
- */
- public short getMatchType()
- {
- return ANY_NODE;
- }
-
-
- /** For patterns which only match an ATTRIBUTE_NODE or an
- * ELEMENT_NODE then this pattern may return the name of the
- * element or attribute it matches. This allows a more efficient
- * rule matching algorithm to be performed, rather than a brute
- * force approach of evaluating every pattern for a given Node.
- *
- * @return the name of the element or attribute this pattern matches
- * or null if this pattern matches any or more than one name
- */
- public String getMatchesNodeName()
- {
- return null;
- }
-
-
- public Pattern simplify()
- {
- return this;
- }
-
- /** Returns a textual representation of this pattern
- *
- * @return the usual string form of this XSLT pattern
- */
- public abstract String getText();
-
-}
diff --git a/src/java/main/org/jaxen/pattern/PatternHandler.java b/src/java/main/org/jaxen/pattern/PatternHandler.java
deleted file mode 100644
index f2a3ab5..0000000
--- a/src/java/main/org/jaxen/pattern/PatternHandler.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/PatternHandler.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: PatternHandler.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-package org.jaxen.pattern;
-
-import java.util.LinkedList;
-
-import org.jaxen.JaxenException;
-import org.jaxen.JaxenHandler;
-import org.jaxen.expr.Expr;
-import org.jaxen.expr.FilterExpr;
-import org.jaxen.saxpath.Axis;
-
-/** SAXPath <code>XPathHandler</code> implementation capable
- * of building Jaxen expression trees which can walk various
- * different object models.
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public class PatternHandler extends JaxenHandler
-{
- private Pattern pattern;
-
- public PatternHandler()
- {
- }
-
- /** Retrieve the simplified Jaxen Pattern expression tree.
- *
- * <p>
- * This method is only valid once <code>XPathReader.parse(...)</code>
- * successfully returned.
- * </p>
- *
- * @return The Pattern expression tree.
- */
- public Pattern getPattern()
- {
- return getPattern( true );
- }
-
- /** Retrieve the Jaxen Pattern expression tree, optionally
- * simplified.
- *
- * <p>
- * This method is only valid once <code>XPathReader.parse(...)</code>
- * successfully returned.
- * </p>
- *
- * @param shouldSimplify ????
- *
- * @return The Pattern expression tree.
- */
- public Pattern getPattern(boolean shouldSimplify)
- {
- if ( shouldSimplify && ! this.simplified )
- {
- //System.err.println("simplifying....");
- this.pattern.simplify();
- this.simplified = true;
- }
-
- return this.pattern;
- }
-
-
-
-
- public void endXPath()
- {
- this.pattern = (Pattern) pop();
-
- System.out.println( "stack is: " + stack );
-
- popFrame();
- }
-
- public void endPathExpr()
- {
- //System.err.println("endPathExpr()");
-
- // PathExpr ::= LocationPath
- // | FilterExpr
- // | FilterExpr / RelativeLocationPath
- // | FilterExpr // RelativeLocationPath
- //
- // If the current stack-frame has two items, it's a
- // FilterExpr and a LocationPath (of some flavor).
- //
- // If the current stack-frame has one item, it's simply
- // a FilterExpr, and more than like boils down to a
- // primary expr of some flavor. But that's for another
- // method...
-
- LinkedList frame = popFrame();
-
- System.out.println( "endPathExpr(): " + frame );
-
- push( frame.removeFirst() );
-/*
- LocationPathPattern locationPath = new LocationPathPattern();
- push( locationPath );
- while (! frame.isEmpty() )
- {
- Object filter = frame.removeLast();
- if ( filter instanceof NodeTest )
- {
- locationPath.setNodeTest( (NodeTest) filter );
- }
- else if ( filter instanceof FilterExpr )
- {
- locationPath.addFilter( (FilterExpr) filter );
- }
- else if ( filter instanceof LocationPathPattern )
- {
- LocationPathPattern parent = (LocationPathPattern) filter;
- locationPath.setParentPattern( parent );
- locationPath = parent;
- }
- else if ( filter != null )
- {
- throw new JaxenException( "Unknown filter: " + filter );
- }
- }
-*/
- }
-
- public void startAbsoluteLocationPath()
- {
- //System.err.println("startAbsoluteLocationPath()");
- pushFrame();
-
- push( createAbsoluteLocationPath() );
- }
-
- public void endAbsoluteLocationPath() throws JaxenException
- {
- //System.err.println("endAbsoluteLocationPath()");
- endLocationPath();
- }
-
- public void startRelativeLocationPath()
- {
- //System.err.println("startRelativeLocationPath()");
- pushFrame();
-
- push( createRelativeLocationPath() );
- }
-
- public void endRelativeLocationPath() throws JaxenException
- {
- //System.err.println("endRelativeLocationPath()");
- endLocationPath();
- }
-
- protected void endLocationPath() throws JaxenException
- {
- // start at the back, its the main pattern then add everything else as
- LinkedList list = popFrame();
-
- System.out.println( "endLocationPath: " + list );
-
- LocationPathPattern locationPath = (LocationPathPattern) list.removeFirst();
- push( locationPath );
- boolean doneNodeTest = false;
- while ( ! list.isEmpty() )
- {
- Object filter = list.removeFirst();
- if ( filter instanceof NodeTest )
- {
- if ( doneNodeTest )
- {
- LocationPathPattern parent = new LocationPathPattern( (NodeTest) filter );
- locationPath.setParentPattern( parent );
- locationPath = parent;
- doneNodeTest = false;
- }
- else
- {
- locationPath.setNodeTest( (NodeTest) filter );
- }
- }
- else if ( filter instanceof FilterExpr )
- {
- locationPath.addFilter( (FilterExpr) filter );
- }
- else if ( filter instanceof LocationPathPattern )
- {
- LocationPathPattern parent = (LocationPathPattern) filter;
- locationPath.setParentPattern( parent );
- locationPath = parent;
- doneNodeTest = false;
- }
- }
- }
-
-
- public void startNameStep(int axis,
- String prefix,
- String localName)
- {
- //System.err.println("startNameStep(" + axis + ", " + prefix + ", " + localName + ")");
- pushFrame();
-
- short nodeType = Pattern.ELEMENT_NODE;
- switch ( axis )
- {
- case Axis.ATTRIBUTE:
- nodeType = Pattern.ATTRIBUTE_NODE;
- break;
- case Axis.NAMESPACE:
- nodeType = Pattern.NAMESPACE_NODE;
- break;
- }
-
- if ( prefix != null && prefix.length() > 0 && ! prefix.equals( "*" ) )
- {
- push( new NamespaceTest( prefix, nodeType ) );
- }
- if ( localName != null && localName.length() > 0 && ! localName.equals( "*" ) )
- {
- push( new NameTest( localName, nodeType ) );
- }
- }
-
- public void startTextNodeStep(int axis)
- {
- //System.err.println("startTextNodeStep()");
- pushFrame();
-
- push( new NodeTypeTest( Pattern.TEXT_NODE ) );
- }
-
- public void startCommentNodeStep(int axis)
- {
- //System.err.println("startCommentNodeStep()");
- pushFrame();
-
- push( new NodeTypeTest( Pattern.COMMENT_NODE ) );
- }
-
- public void startAllNodeStep(int axis)
- {
- //System.err.println("startAllNodeStep()");
- pushFrame();
-
- push( AnyNodeTest.getInstance() );
- }
-
- public void startProcessingInstructionNodeStep(int axis,
- String name)
- {
- //System.err.println("startProcessingInstructionStep()");
- pushFrame();
-
- // XXXX: should we throw an exception if name is present?
- push( new NodeTypeTest( Pattern.PROCESSING_INSTRUCTION_NODE ) );
- }
-
- protected void endStep()
- {
- LinkedList list = popFrame();
- if ( ! list.isEmpty() )
- {
- push( list.removeFirst() );
-
- if ( ! list.isEmpty() )
- {
- System.out.println( "List should now be empty!" + list );
- }
- }
- }
-
-
- public void startUnionExpr()
- {
- //System.err.println("startUnionExpr()");
- }
-
- public void endUnionExpr(boolean create) throws JaxenException
- {
- //System.err.println("endUnionExpr()");
-
- if ( create )
- {
- //System.err.println("makeUnionExpr");
-
- Expr rhs = (Expr) pop();
- Expr lhs = (Expr) pop();
-
- push( getXPathFactory().createUnionExpr( lhs,
- rhs ) );
- }
- }
-
- protected Pattern createAbsoluteLocationPath()
- {
- return new LocationPathPattern( NodeTypeTest.DOCUMENT_TEST );
- }
-
- protected Pattern createRelativeLocationPath()
- {
- return new LocationPathPattern();
- }
-
-}
diff --git a/src/java/main/org/jaxen/pattern/PatternParser.java b/src/java/main/org/jaxen/pattern/PatternParser.java
deleted file mode 100644
index 14d5493..0000000
--- a/src/java/main/org/jaxen/pattern/PatternParser.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/PatternParser.java,v 1.18 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.18 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: PatternParser.java,v 1.18 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-package org.jaxen.pattern;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.jaxen.JaxenException;
-import org.jaxen.JaxenHandler;
-import org.jaxen.expr.DefaultAllNodeStep;
-import org.jaxen.expr.DefaultCommentNodeStep;
-import org.jaxen.expr.DefaultFilterExpr;
-import org.jaxen.expr.DefaultNameStep;
-import org.jaxen.expr.DefaultProcessingInstructionNodeStep;
-import org.jaxen.expr.DefaultStep;
-import org.jaxen.expr.DefaultTextNodeStep;
-import org.jaxen.expr.DefaultXPathFactory;
-import org.jaxen.expr.Expr;
-import org.jaxen.expr.FilterExpr;
-import org.jaxen.expr.LocationPath;
-import org.jaxen.expr.Predicate;
-import org.jaxen.expr.PredicateSet;
-import org.jaxen.expr.Step;
-import org.jaxen.expr.UnionExpr;
-import org.jaxen.saxpath.Axis;
-import org.jaxen.saxpath.XPathReader;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-
-
-/** <code>PatternParser</code> is a helper class for parsing
- * XSLT patterns
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- */
-public class PatternParser
-{
- private static final boolean TRACE = false;
- private static final boolean USE_HANDLER = false;
- public static Pattern parse(String text) throws JaxenException, org.jaxen.saxpath.SAXPathException
- {
- if ( USE_HANDLER )
- {
- XPathReader reader = XPathReaderFactory.createReader();
- PatternHandler handler = new PatternHandler();
-
- handler.setXPathFactory( new DefaultXPathFactory() );
- reader.setXPathHandler( handler );
- reader.parse( text );
-
- return handler.getPattern();
- }
- else
- {
- XPathReader reader = XPathReaderFactory.createReader();
- JaxenHandler handler = new JaxenHandler();
-
- handler.setXPathFactory( new DefaultXPathFactory() );
- reader.setXPathHandler( handler );
- reader.parse( text );
-
- Pattern pattern = convertExpr( handler.getXPathExpr().getRootExpr() );
- return pattern.simplify();
- }
- }
-
- protected static Pattern convertExpr(Expr expr) throws JaxenException
- {
- if ( TRACE )
- {
- System.out.println( "Converting: " + expr + " into a pattern." );
- }
-
- if ( expr instanceof LocationPath )
- {
- return convertExpr( (LocationPath) expr );
- }
- else if ( expr instanceof FilterExpr )
- {
- LocationPathPattern answer = new LocationPathPattern();
- answer.addFilter( (FilterExpr) expr );
- return answer;
- }
- else if ( expr instanceof UnionExpr )
- {
- UnionExpr unionExpr = (UnionExpr) expr;
- Pattern lhs = convertExpr( unionExpr.getLHS() );
- Pattern rhs = convertExpr( unionExpr.getRHS() );
- return new UnionPattern( lhs, rhs );
- }
- else
- {
- LocationPathPattern answer = new LocationPathPattern();
- answer.addFilter( new DefaultFilterExpr( expr,
- new PredicateSet()) );
- return answer;
- }
- }
-
- protected static LocationPathPattern convertExpr(LocationPath locationPath) throws JaxenException
- {
- LocationPathPattern answer = new LocationPathPattern();
- //answer.setAbsolute( locationPath.isAbsolute() );
- List steps = locationPath.getSteps();
-
- // go through steps backwards
- LocationPathPattern path = answer;
- boolean first = true;
- for ( ListIterator iter = steps.listIterator( steps.size() ); iter.hasPrevious(); )
- {
- Step step = (Step) iter.previous();
- if ( first )
- {
- first = false;
- path = convertStep( path, step );
- }
- else
- {
- if ( navigationStep( step ) )
- {
- LocationPathPattern parent = new LocationPathPattern();
- int axis = step.getAxis();
- if ( axis == Axis.DESCENDANT || axis == Axis.DESCENDANT_OR_SELF )
- {
- path.setAncestorPattern( parent );
- }
- else
- {
- path.setParentPattern( parent );
- }
- path = parent;
- }
- path = convertStep( path, step );
- }
- }
- if ( locationPath.isAbsolute() )
- {
- LocationPathPattern parent = new LocationPathPattern( NodeTypeTest.DOCUMENT_TEST );
- path.setParentPattern( parent );
- }
- return answer;
- }
-
- protected static LocationPathPattern convertStep(LocationPathPattern path, Step step) throws JaxenException
- {
- if ( step instanceof DefaultAllNodeStep )
- {
- int axis = step.getAxis();
- if ( axis == Axis.ATTRIBUTE )
- {
- path.setNodeTest( NodeTypeTest.ATTRIBUTE_TEST );
- }
- else
- {
- path.setNodeTest( NodeTypeTest.ELEMENT_TEST );
- }
- }
- else if ( step instanceof DefaultCommentNodeStep )
- {
- path.setNodeTest( NodeTypeTest.COMMENT_TEST );
- }
- else if ( step instanceof DefaultProcessingInstructionNodeStep )
- {
- path.setNodeTest( NodeTypeTest.PROCESSING_INSTRUCTION_TEST );
- }
- else if ( step instanceof DefaultTextNodeStep )
- {
- path.setNodeTest( TextNodeTest.SINGLETON );
- }
- else if ( step instanceof DefaultCommentNodeStep )
- {
- path.setNodeTest( NodeTypeTest.COMMENT_TEST );
- }
- else if ( step instanceof DefaultNameStep )
- {
- DefaultNameStep nameStep = (DefaultNameStep) step;
- String localName = nameStep.getLocalName();
- String prefix = nameStep.getPrefix();
- int axis = nameStep.getAxis();
- short nodeType = Pattern.ELEMENT_NODE;
- if ( axis == Axis.ATTRIBUTE )
- {
- nodeType = Pattern.ATTRIBUTE_NODE;
- }
- if ( nameStep.isMatchesAnyName() )
- {
- if ( prefix.length() == 0 || prefix.equals( "*" ) )
- {
- if ( axis == Axis.ATTRIBUTE )
- {
- path.setNodeTest( NodeTypeTest.ATTRIBUTE_TEST );
- }
- else
- {
- path.setNodeTest( NodeTypeTest.ELEMENT_TEST );
- }
- }
- else
- {
- path.setNodeTest( new NamespaceTest( prefix, nodeType ) );
- }
- }
- else
- {
- path.setNodeTest( new NameTest( localName, nodeType ) );
- // XXXX: should support namespace in the test too
- }
- return convertDefaultStep(path, nameStep);
- }
- else if ( step instanceof DefaultStep )
- {
- return convertDefaultStep(path, (DefaultStep) step);
- }
- else
- {
- throw new JaxenException( "Cannot convert: " + step + " to a Pattern" );
- }
- return path;
- }
-
- protected static LocationPathPattern convertDefaultStep(LocationPathPattern path, DefaultStep step) throws JaxenException
- {
- List predicates = step.getPredicates();
- if ( ! predicates.isEmpty() )
- {
- FilterExpr filter = new DefaultFilterExpr(new PredicateSet());
- for ( Iterator iter = predicates.iterator(); iter.hasNext(); )
- {
- filter.addPredicate( (Predicate) iter.next() );
- }
- path.addFilter( filter );
- }
- return path;
- }
-
- protected static boolean navigationStep( Step step )
- {
- if ( step instanceof DefaultNameStep )
- {
- return true;
- }
- else
- if ( step.getClass().equals( DefaultStep.class ) )
- {
- return ! step.getPredicates().isEmpty();
- }
- else
- {
- return true;
- }
- }
-
-}
-
diff --git a/src/java/main/org/jaxen/pattern/TextNodeTest.java b/src/java/main/org/jaxen/pattern/TextNodeTest.java
deleted file mode 100644
index 047623d..0000000
--- a/src/java/main/org/jaxen/pattern/TextNodeTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/TextNodeTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: TextNodeTest.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-
-/** <p><code>TextNodeTest</code> matches any text node.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.6 $
- */
-public class TextNodeTest extends NodeTest {
-
- public static final TextNodeTest SINGLETON = new TextNodeTest();
-
- public TextNodeTest()
- {
- }
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context )
- {
- return context.getNavigator().isText( node );
- }
-
- public double getPriority()
- {
- return -0.5;
- }
-
- public short getMatchType()
- {
- return Pattern.TEXT_NODE;
- }
-
- public String getText()
- {
- return "text()";
- }
-}
diff --git a/src/java/main/org/jaxen/pattern/UnionPattern.java b/src/java/main/org/jaxen/pattern/UnionPattern.java
deleted file mode 100644
index be06365..0000000
--- a/src/java/main/org/jaxen/pattern/UnionPattern.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/pattern/UnionPattern.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: UnionPattern.java,v 1.8 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.pattern;
-
-import org.jaxen.Context;
-import org.jaxen.JaxenException;
-
-/** <p><code>UnionPattern</code> represents a union pattern.</p>
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision: 1.8 $
- */
-public class UnionPattern extends Pattern {
-
- private Pattern lhs;
- private Pattern rhs;
- private short nodeType = ANY_NODE;
- private String matchesNodeName = null;
-
-
- public UnionPattern()
- {
- }
-
- public UnionPattern(Pattern lhs, Pattern rhs)
- {
- this.lhs = lhs;
- this.rhs = rhs;
- init();
- }
-
-
- public Pattern getLHS()
- {
- return lhs;
- }
-
- public void setLHS(Pattern lhs)
- {
- this.lhs = lhs;
- init();
- }
-
- public Pattern getRHS()
- {
- return rhs;
- }
-
- public void setRHS(Pattern rhs)
- {
- this.rhs = rhs;
- init();
- }
-
-
- // Pattern interface
- //-------------------------------------------------------------------------
-
- /** @return true if the pattern matches the given node
- */
- public boolean matches( Object node, Context context ) throws JaxenException
- {
- return lhs.matches( node, context ) || rhs.matches( node, context );
- }
-
- public Pattern[] getUnionPatterns()
- {
- return new Pattern[] { lhs, rhs };
- }
-
-
- public short getMatchType()
- {
- return nodeType;
- }
-
-
- public String getMatchesNodeName()
- {
- return matchesNodeName;
- }
-
-
- public Pattern simplify()
- {
- this.lhs = lhs.simplify();
- this.rhs = rhs.simplify();
- init();
- return this;
- }
-
- public String getText()
- {
- return lhs.getText() + " | " + rhs.getText();
- }
-
- public String toString()
- {
- return super.toString() + "[ lhs: " + lhs + " rhs: " + rhs + " ]";
- }
-
- // Implementation methods
- //-------------------------------------------------------------------------
- private void init()
- {
- short type1 = lhs.getMatchType();
- short type2 = rhs.getMatchType();
- this.nodeType = ( type1 == type2 ) ? type1 : ANY_NODE;
-
- String name1 = lhs.getMatchesNodeName();
- String name2 = rhs.getMatchesNodeName();
-
- this.matchesNodeName = null;
- if ( name1 != null && name2 != null && name1.equals( name2 ) )
- {
- this.matchesNodeName = name1;
- }
- }
-}
diff --git a/src/java/main/org/jaxen/pattern/package.html b/src/java/main/org/jaxen/pattern/package.html
deleted file mode 100644
index c47b9d9..0000000
--- a/src/java/main/org/jaxen/pattern/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-</head>
-<body>
-
- <p>Defines XSLT Pattern objects. The design of this library is greatly influenced by Michael Kay's SAXON implementation.</p>
-
-</body>
-</html>
diff --git a/src/java/main/org/jaxen/saxpath/Axis.java b/src/java/main/org/jaxen/saxpath/Axis.java
deleted file mode 100644
index 90b9a83..0000000
--- a/src/java/main/org/jaxen/saxpath/Axis.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/Axis.java,v 1.8 2006/03/30 13:56:36 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/03/30 13:56:36 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Axis.java,v 1.8 2006/03/30 13:56:36 elharo Exp $
- */
-
-
-
-package org.jaxen.saxpath;
-
-import org.jaxen.JaxenRuntimeException;
-
-
-
-/**
- *
- * Internal SAXPath class that contains constants representing
- * XPath operators to avoid a lot of string comparisons.
- */
-public class Axis
-{
-
- private Axis() {}
-
- // XXX Ultimately these should use the type-safe enum pattern instead
- /** Marker for an invalid axis */
- public final static int INVALID_AXIS = 0;
-
- /** The <code>child</code> axis */
- public final static int CHILD = 1;
-
- /** The <code>descendant</code> axis */
- public final static int DESCENDANT = 2;
-
- /** The <code>parent</code> axis */
- public final static int PARENT = 3;
-
- /** The <code>ancestor</code> axis */
- public final static int ANCESTOR = 4;
-
- /** The <code>following-sibling</code> axis */
- public final static int FOLLOWING_SIBLING = 5;
-
- /** The <code>preceding-sibling</code> axis */
- public final static int PRECEDING_SIBLING = 6;
-
- /** The <code>following</code> axis */
- public final static int FOLLOWING = 7;
-
- /** The <code>preceding</code> axis */
- public final static int PRECEDING = 8;
-
- /** The <code>attribute</code> axis */
- public final static int ATTRIBUTE = 9;
-
- /** The <code>namespace</code> axis */
- public final static int NAMESPACE = 10;
-
- /** The <code>self</code> axis */
- public final static int SELF = 11;
-
- /** The <code>descendant-or-self</code> axis */
- public final static int DESCENDANT_OR_SELF = 12;
-
- /** The <code>ancestor-or-self</code> axis */
- public final static int ANCESTOR_OR_SELF = 13;
-
- /**
- * <p>
- * Returns the name of the axis.
- * </p>
- *
- * @param axisNum the axis code
- * @return the name of the axis such as might be used in an XPath expression
- * @throws JaxenRuntimeException if the number does not represent one of the 13
- * XPath axes
- */
- public static String lookup(int axisNum)
- {
- switch ( axisNum )
- {
- case CHILD:
- return "child";
-
- case DESCENDANT:
- return "descendant";
-
- case PARENT:
- return "parent";
-
- case ANCESTOR:
- return "ancestor";
-
- case FOLLOWING_SIBLING:
- return "following-sibling";
-
- case PRECEDING_SIBLING:
- return "preceding-sibling";
-
- case FOLLOWING:
- return "following";
-
- case PRECEDING:
- return "preceding";
-
- case ATTRIBUTE:
- return "attribute";
-
- case NAMESPACE:
- return "namespace";
-
- case SELF:
- return "self";
-
- case DESCENDANT_OR_SELF:
- return "descendant-or-self";
-
- case ANCESTOR_OR_SELF:
- return "ancestor-or-self";
- }
-
- throw new JaxenRuntimeException("Illegal Axis Number");
- }
-
- /**
- * <p>
- * Returns the code for an axis given its name.
- * </p>
- *
- * @param axisName the name of the axis: child, parent, descendant, descendant-or-self, etc.
- * @return the axis code
- */
- public static int lookup(String axisName)
- {
-
- // XXX All these equals calls are a small HotSpot;
- // Need to replace this with a static HashMap
- if ( "child".equals( axisName ) )
- {
- return CHILD;
- }
-
- if ( "descendant".equals( axisName ) )
- {
- return DESCENDANT;
- }
-
- if ( "parent".equals( axisName ) )
- {
- return PARENT;
- }
-
- if ( "ancestor".equals( axisName ) )
- {
- return ANCESTOR;
- }
-
- if ( "following-sibling".equals( axisName ) )
- {
- return FOLLOWING_SIBLING;
- }
-
- if ( "preceding-sibling".equals( axisName ) )
- {
- return PRECEDING_SIBLING;
- }
-
- if ( "following".equals( axisName ) )
- {
- return FOLLOWING;
- }
-
- if ( "preceding".equals( axisName ) )
- {
- return PRECEDING;
- }
-
- if ( "attribute".equals( axisName ) )
- {
- return ATTRIBUTE;
- }
-
- if ( "namespace".equals( axisName ) )
- {
- return NAMESPACE;
- }
-
- if ( "self".equals( axisName ) )
- {
- return SELF;
- }
-
- if ( "descendant-or-self".equals( axisName ) )
- {
- return DESCENDANT_OR_SELF;
- }
-
- if ( "ancestor-or-self".equals( axisName ) )
- {
- return ANCESTOR_OR_SELF;
- }
-
- return INVALID_AXIS;
- }
-}
diff --git a/src/java/main/org/jaxen/saxpath/Operator.java b/src/java/main/org/jaxen/saxpath/Operator.java
deleted file mode 100644
index c7bf3a1..0000000
--- a/src/java/main/org/jaxen/saxpath/Operator.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/Operator.java,v 1.5 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.5 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Operator.java,v 1.5 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.saxpath;
-
-/**
- * Constants used to represent XPath operators.
- */
-public interface Operator
-{
- /**
- * Indicates that we're passing through a grammar production without
- * actually activating it. For example in the expression
- * <code>1</code> is matches AdditiveExpr and MultiplicativeExpr in
- * the XPath grammar, even though it has neither a plus,
- * minus, multiplication, or other sign.
- */
- final static int NO_OP = 0;
-
- // Equality
- /**
- * The equal to operator <code>=</code>. This is equivalent to <code>==</code>
- * in Java. This is a comparison operator, not an assignment operator.
- */
- final static int EQUALS = 1;
-
- /**
- * The not equal to operator <code>!=</code>
- */
- final static int NOT_EQUALS = 2;
-
- // Relational
- /**
- * The less-than operator <code><</code>
- */
- final static int LESS_THAN = 3;
-
- /**
- * The less-than-or-equal-to operator <code><=</code>
- */
- final static int LESS_THAN_EQUALS = 4;
-
- /**
- * The greater-than operator <code>></code>
- */
- final static int GREATER_THAN = 5;
-
- /**
- * The greater-than or equals operator <code>>=</code>
- */
- final static int GREATER_THAN_EQUALS = 6;
-
- // Additive
-
- /**
- * The addition operator <code>+</code>
- */
- final static int ADD = 7;
-
- /**
- * The subtraction operator <code>-</code>
- */
- final static int SUBTRACT = 8;
-
- // Multiplicative
-
- /**
- * The multiplication operator <code>*</code>
- */
- final static int MULTIPLY = 9;
-
- /**
- * The remainder operator <code>mod</code>. This is equivalent to
- * <code>%</code> in Java.
- */
- final static int MOD = 10;
-
- /**
- * The floating point division operator <code>div</code>. This is equivalent to
- * <code>/</code> in Java.
- */
- final static int DIV = 11;
-
- // Unary
-
- /**
- * Unary <code>-</code>
- */
- final static int NEGATIVE = 12;
-}
diff --git a/src/java/main/org/jaxen/saxpath/SAXPathEventSource.java b/src/java/main/org/jaxen/saxpath/SAXPathEventSource.java
deleted file mode 100644
index 7f6538a..0000000
--- a/src/java/main/org/jaxen/saxpath/SAXPathEventSource.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/SAXPathEventSource.java,v 1.5 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.5 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SAXPathEventSource.java,v 1.5 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-
-package org.jaxen.saxpath;
-
-
-
-/** Interface for any object capable of generating
- * SAXPath events to an {@link org.jaxen.saxpath.XPathHandler}.
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public interface SAXPathEventSource
-{
- /** Set the {@link org.jaxen.saxpath.XPathHandler} to receive
- * event callbacks during the parse.
- *
- * @param handler the handler to receive callbacks
- */
- void setXPathHandler(XPathHandler handler);
-
- /** Retrieve the current {@link org.jaxen.saxpath.XPathHandler}
- * which receives the event callbacks.
- *
- * @return the currently installed <code>XPathHandler</code>
- */
- XPathHandler getXPathHandler();
-
-}
diff --git a/src/java/main/org/jaxen/saxpath/SAXPathException.java b/src/java/main/org/jaxen/saxpath/SAXPathException.java
deleted file mode 100644
index 25b71da..0000000
--- a/src/java/main/org/jaxen/saxpath/SAXPathException.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/SAXPathException.java,v 1.14 2006/06/03 20:28:45 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/06/03 20:28:45 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SAXPathException.java,v 1.14 2006/06/03 20:28:45 elharo Exp $
- */
-
-package org.jaxen.saxpath;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/** Base of all SAXPath exceptions.
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public class SAXPathException extends Exception
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 4826444568928720706L;
-
- private static double javaVersion = 1.4;
-
- static {
- try {
- String versionString = System.getProperty("java.version");
- versionString = versionString.substring(0, 3);
- javaVersion = Double.valueOf(versionString).doubleValue();
- }
- catch (Exception ex) {
- // The version string format changed so presumably it's
- // 1.4 or later.
- }
- }
-
- /** Create a new SAXPathException with a given message.
- *
- * @param message the error message
- */
- public SAXPathException(String message)
- {
- super( message );
- }
-
- /** Create a new SAXPathException based on another exception
- *
- * @param cause the error source
- */
- public SAXPathException(Throwable cause)
- {
- super ( cause.getMessage() );
- initCause(cause);
- }
-
- /**
- * Create a new SAXPathException with the specified detail message
- * and root cause.
- *
- * @param message the detail message
- * @param cause the cause of this exception
- */
- public SAXPathException(String message, Throwable cause) {
- super( message );
- initCause(cause);
- }
-
-
- private Throwable cause;
- private boolean causeSet = false;
-
- /**
- * Returns the exception that caused this exception.
- * This is necessary to implement Java 1.4 chained exception
- * functionality in a Java 1.3-compatible way.
- *
- * @return the exception that caused this exception
- */
- public Throwable getCause() {
- return cause;
- }
-
-
- /**
- * Sets the exception that caused this exception.
- * This is necessary to implement Java 1.4 chained exception
- * functionality in a Java 1.3-compatible way.
- *
- * @param cause the exception wrapped in this runtime exception
- *
- * @return this exception
- */
- public Throwable initCause(Throwable cause) {
- if (causeSet) throw new IllegalStateException("Cause cannot be reset");
- if (cause == this) throw new IllegalArgumentException("Exception cannot be its own cause");
- causeSet = true;
- this.cause = cause;
- return this;
- }
-
- /** Print this exception's stack trace, followed by the
- * source exception's trace, if any.
- *
- * @param s the stream on which to print the stack trace
- */
- public void printStackTrace ( PrintStream s )
- {
- super.printStackTrace ( s );
- if (javaVersion < 1.4 && getCause() != null) {
- s.print( "Caused by: " );
- getCause().printStackTrace( s );
- }
- }
-
- /** Print this exception's stack trace, followed by the
- * source exception's stack trace, if any.
- *
- * @param s the writer on which to print the stack trace
- */
- public void printStackTrace ( PrintWriter s )
- {
- super.printStackTrace( s );
- if (javaVersion < 1.4 && getCause() != null) {
- s.print( "Caused by: " );
- getCause().printStackTrace( s );
- }
- }
-
-}
diff --git a/src/java/main/org/jaxen/saxpath/XPathHandler.java b/src/java/main/org/jaxen/saxpath/XPathHandler.java
deleted file mode 100644
index 35288a0..0000000
--- a/src/java/main/org/jaxen/saxpath/XPathHandler.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/XPathHandler.java,v 1.9 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathHandler.java,v 1.9 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-
-
-package org.jaxen.saxpath;
-
-
-/** Interface for event-based XPath parsing.
- *
- * <p>
- * A {@link org.jaxen.saxpath.XPathReader} generates callbacks into
- * an <code>XPathHandler</code> to allow for custom
- * handling of the parse.
- * </p>
- *
- * <p>
- * The callbacks very closely match the productions
- * listed in the W3C XPath specification. Gratuitous
- * productions (e.g. Expr/startExpr()/endExpr()) are not
- * included in this API.
- * </p>
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public interface XPathHandler
-{
- /** Receive notification of the start of an XPath expression parse.
- */
- void startXPath() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of an XPath expression parse.
- */
- void endXPath() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a path expression.
- */
- void startPathExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a path expression.
- */
- void endPathExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of an absolute location path expression.
- */
- void startAbsoluteLocationPath() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of an absolute location path expression.
- */
- void endAbsoluteLocationPath() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a relative location path expression.
- */
- void startRelativeLocationPath() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a relative location path expression.
- */
- void endRelativeLocationPath() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a name step.
- *
- * @param axis the axis of this step
- * @param prefix the namespace prefix for the name to test,
- * or the empty string if no prefix is specified
- * @param localName the local part of the name to test
- */
- void startNameStep(int axis,
- String prefix,
- String localName) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a NameStep
- */
- void endNameStep() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a text() step.
- *
- * @param axis the axis of this step
- */
- void startTextNodeStep(int axis) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a text() step.
- */
- void endTextNodeStep() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a comment() step.
- *
- * @param axis the axis of this step
- */
- void startCommentNodeStep(int axis) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a comment() step.
- */
- void endCommentNodeStep() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a node() step.
- *
- * @param axis the axis of this step
- */
- void startAllNodeStep(int axis) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a node() step.
- */
- void endAllNodeStep() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a processing-instruction(...) step.
- *
- * @param axis the axis of this step
- * @param name the name of the processing-instruction, or
- * the empty string if none is specified
- */
- void startProcessingInstructionNodeStep(int axis,
- String name) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a processing-instruction(...) step.
- */
- void endProcessingInstructionNodeStep() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a predicate.
- */
- void startPredicate() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a predicate.
- */
- void endPredicate() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a filter expression.
- */
- void startFilterExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a filter expression.
- */
- void endFilterExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of an 'or' expression.
- */
- void startOrExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of an 'or' expression.
- *
- * @param create flag that indicates if this expression
- * should truly be instantiated, or if it was just
- * a pass-through, based upon the grammar productions
- */
- void endOrExpr(boolean create) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of an 'and' expression.
- */
- void startAndExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of an 'and' expression.
- *
- * @param create flag that indicates if this expression
- * should truly be instantiated, or if it was just
- * a pass-through, based upon the grammar productions
- */
- void endAndExpr(boolean create) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of an equality ('=' or '!=') expression.
- */
- void startEqualityExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of an equality ('=' or '!=') expression.
- *
- * @param equalityOperator the operator specific to this particular
- * equality expression. If null, this expression
- * is only a pass-through, and should not actually
- * be instantiated.
- */
- void endEqualityExpr(int equalityOperator) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a relational ('<', '>', '<=', or '>=') expression.
- */
- void startRelationalExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a relational ('<', '>', '<=', or '>=') expression.
- *
- * @param relationalOperator the operator specific to this particular
- * relational expression. If NO_OP, this expression
- * is only a pass-through, and should not actually
- * be instantiated.
- */
- void endRelationalExpr(int relationalOperator) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of an additive ('+' or '-') expression.
- */
- void startAdditiveExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of an additive ('+' or '-') expression.
- *
- * @param additiveOperator the operator specific to this particular
- * additive expression. If NO_OP, this expression
- * is only a pass-through, and should not actually
- * be instantiated.
- */
- void endAdditiveExpr(int additiveOperator) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a multiplicative ('*', 'div' or 'mod') expression.
- */
- void startMultiplicativeExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a multiplicative ('*', 'div' or 'mod') expression.
- *
- * @param multiplicativeOperator the operator specific to this particular
- * multiplicative expression. If null, this expression
- * is only a pass-through, and should not actually
- * be instantiated.
- */
- void endMultiplicativeExpr(int multiplicativeOperator) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a unary ('+' or '-') expression.
- */
- void startUnaryExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a unary ('+' or '-') expression.
- *
- * @param unaryOperator the operator specific to this particular
- * unary expression. If NO_OP, this expression is only
- * a pass-through, and should not actually be instantiated.
- * If not {@link org.jaxen.saxpath.Operator#NO_OP}, it will
- * always be {@link org.jaxen.saxpath.Operator#NEGATIVE}.
- */
- void endUnaryExpr(int unaryOperator) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the start of a union ('|') expression.
- */
- void startUnionExpr() throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a union ('|') expression.
- *
- * @param create flag that indicates if this expression
- * should truly be instantiated, or if it was just
- * a pass-through, based upon the grammar productions
- */
- void endUnionExpr(boolean create) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of a number expression.
- *
- * @param number the number value
- */
- void number(int number) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of a number expression.
- *
- * @param number the number value
- */
- void number(double number) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of a literal expression.
- *
- * @param literal the string literal value
- */
- void literal(String literal) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of a variable-reference expression.
- *
- * @param prefix the namespace prefix of the variable
- * @param variableName the local name of the variable
- */
- void variableReference(String prefix,
- String variableName) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of a function call.
- *
- * @param prefix the namespace prefix of the function
- * @param functionName the local name of the function
- */
- void startFunction(String prefix,
- String functionName) throws org.jaxen.saxpath.SAXPathException;
-
- /** Receive notification of the end of a function call
- */
- void endFunction() throws org.jaxen.saxpath.SAXPathException;
-}
diff --git a/src/java/main/org/jaxen/saxpath/XPathReader.java b/src/java/main/org/jaxen/saxpath/XPathReader.java
deleted file mode 100644
index 9af58b9..0000000
--- a/src/java/main/org/jaxen/saxpath/XPathReader.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/XPathReader.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathReader.java,v 1.6 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-package org.jaxen.saxpath;
-
-
-/** Interface for readers which can parse textual
- * XPath expressions, and produce callbacks to
- * {@link org.jaxen.saxpath.XPathHandler} objects.
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public interface XPathReader extends SAXPathEventSource
-{
- /** Parse an XPath expression,
- * and send event callbacks to an {@link org.jaxen.saxpath.XPathHandler}.
- *
- * @param xpath the textual XPath expression to parse
- *
- * @throws SAXPathException if the expression is syntactically incorrect
- */
- void parse(String xpath) throws SAXPathException;
-}
diff --git a/src/java/main/org/jaxen/saxpath/XPathSyntaxException.java b/src/java/main/org/jaxen/saxpath/XPathSyntaxException.java
deleted file mode 100644
index a920fba..0000000
--- a/src/java/main/org/jaxen/saxpath/XPathSyntaxException.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/XPathSyntaxException.java,v 1.10 2006/06/03 20:29:30 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/06/03 20:29:30 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathSyntaxException.java,v 1.10 2006/06/03 20:29:30 elharo Exp $
- */
-
-package org.jaxen.saxpath;
-
-
-/**
- * Represents a syntax error in an XPath expression.
- * This is a compile-time error that is detectable irrespective of
- * the context in which the XPath expression is evaluated.
- */
-public class XPathSyntaxException extends SAXPathException
-{
- /**
- *
- */
- private static final long serialVersionUID = 3567675610742422397L;
- private String xpath;
- private int position;
- private final static String lineSeparator = System.getProperty("line.separator");
-
- /**
- * Creates a new XPathSyntaxException.
- *
- * @param xpath the incorrect XPath expression
- * @param position the index of the character at which the syntax error was detected
- * @param message the detail message
- */
- public XPathSyntaxException(String xpath,
- int position,
- String message)
- {
- super( message );
- this.position = position;
- this.xpath = xpath;
- }
-
- /**
- * <p>
- * Returns the index of the character at which the syntax error was detected
- * in the XPath expression.
- * </p>
- *
- * @return the character index in the XPath expression
- * at which the syntax error was detected
- */
- public int getPosition()
- {
- return this.position;
- }
-
- /**
- * <p>
- * Returns the syntactically incorrect XPath expression.
- * </p>
- *
- * @return the syntactically incorrect XPath expression
- */
- public String getXPath()
- {
- return this.xpath;
- }
-
- public String toString()
- {
- return getClass() + ": " + getXPath() + ": " + getPosition() + ": " + getMessage();
- }
-
- /**
- * <p>
- * Returns a string in the form <code>" ^"</code> which, when placed on the line
- * below the XPath expression in a monospaced font, should point to the
- * location of the error.
- * </p>
- *
- * @return the position marker
- */
- private String getPositionMarker()
- {
- int pos = getPosition();
- StringBuffer buf = new StringBuffer(pos+1);
- for ( int i = 0 ; i < pos ; ++i )
- {
- buf.append(" ");
- }
-
- buf.append("^");
-
- return buf.toString();
-
- }
-
- /**
- * <p>
- * Returns a long formatted description of the error,
- * including line breaks.
- * </p>
- *
- * @return a longer description of the error on multiple lines
- */
- public String getMultilineMessage()
- {
- StringBuffer buf = new StringBuffer();
-
- buf.append( getMessage() );
- buf.append( lineSeparator );
- buf.append( getXPath() );
- buf.append( lineSeparator );
-
- buf.append( getPositionMarker() );
-
- return buf.toString();
- }
-
-}
diff --git a/src/java/main/org/jaxen/saxpath/base/Token.java b/src/java/main/org/jaxen/saxpath/base/Token.java
deleted file mode 100644
index 9f09514..0000000
--- a/src/java/main/org/jaxen/saxpath/base/Token.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/base/Token.java,v 1.5 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.5 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Token.java,v 1.5 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-
-
-package org.jaxen.saxpath.base;
-
-class Token
-{
- private int tokenType;
- private String parseText;
- private int tokenBegin;
- private int tokenEnd;
-
- Token(int tokenType,
- String parseText,
- int tokenBegin,
- int tokenEnd)
- {
- setTokenType( tokenType );
- setParseText( parseText );
- setTokenBegin( tokenBegin );
- setTokenEnd( tokenEnd );
- }
-
- private void setTokenType(int tokenType)
- {
- this.tokenType = tokenType;
- }
-
- int getTokenType()
- {
- return this.tokenType;
- }
-
- private void setParseText(String parseText)
- {
- this.parseText = parseText;
- }
-
- String getTokenText()
- {
- return this.parseText.substring( getTokenBegin(),
- getTokenEnd() );
- }
-
- private void setTokenBegin(int tokenBegin)
- {
- this.tokenBegin = tokenBegin;
- }
-
- int getTokenBegin()
- {
- return this.tokenBegin;
- }
-
- private void setTokenEnd(int tokenEnd)
- {
- this.tokenEnd = tokenEnd;
- }
-
- int getTokenEnd()
- {
- return this.tokenEnd;
- }
-
- public String toString()
- {
- return ("[ (" + tokenType + ") (" + getTokenText() + ")");
- }
-}
diff --git a/src/java/main/org/jaxen/saxpath/base/TokenTypes.java b/src/java/main/org/jaxen/saxpath/base/TokenTypes.java
deleted file mode 100644
index 2972b4b..0000000
--- a/src/java/main/org/jaxen/saxpath/base/TokenTypes.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/base/TokenTypes.java,v 1.12 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.12 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2004 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: TokenTypes.java,v 1.12 2006/02/05 21:47:42 elharo Exp $
- */
-
-package org.jaxen.saxpath.base;
-
-
-class TokenTypes
-{
- static final int EOF = -1;
- static final int SKIP = -2;
- static final int ERROR = -3;
-
- static final int EQUALS = 1;
- static final int NOT_EQUALS = 2;
-
- static final int LESS_THAN_SIGN = 3;
- static final int LESS_THAN_OR_EQUALS_SIGN = 4;
- static final int GREATER_THAN_SIGN = 5;
- static final int GREATER_THAN_OR_EQUALS_SIGN = 6;
-
- static final int PLUS = 7;
- static final int MINUS = 8;
- static final int STAR = 9;
- static final int MOD = 10;
- static final int DIV = 11;
-
- static final int SLASH = 12;
- static final int DOUBLE_SLASH = 13;
- static final int DOT = 14;
- static final int DOT_DOT = 15;
-
- static final int IDENTIFIER = 16;
-
- static final int AT = 17;
- static final int PIPE = 18;
- static final int COLON = 19;
- static final int DOUBLE_COLON = 20;
-
- static final int LEFT_BRACKET = 21;
- static final int RIGHT_BRACKET = 22;
- static final int LEFT_PAREN = 23;
- static final int RIGHT_PAREN = 24;
-
- // 25 was NOT but there is no such token in XPath
- static final int DOLLAR = 25;
- static final int LITERAL = 26;
- static final int AND = 27;
- static final int OR = 28;
-
- // No need for an integer token type. All numbers
- // in XPath are doubles.
- static final int DOUBLE = 29;
- static final int COMMA = 30;
-
- static String getTokenText( int tokenType )
- {
- switch( tokenType )
- {
- case ERROR:
- return "(error)";
- case SKIP:
- return "(skip)";
- case EOF:
- return "(eof)";
- case 0:
- return "Unrecognized token type: 0";
- case EQUALS:
- return "=";
- case NOT_EQUALS:
- return "!=";
- case LESS_THAN_SIGN:
- return "<";
- case LESS_THAN_OR_EQUALS_SIGN:
- return "<=";
- case GREATER_THAN_SIGN:
- return ">";
- case GREATER_THAN_OR_EQUALS_SIGN:
- return ">=";
- case PLUS:
- return "+";
- case MINUS:
- return "-";
- case STAR:
- return "*";
- case DIV:
- return "div";
- case MOD:
- return "mod";
- case SLASH:
- return "/";
- case DOUBLE_SLASH:
- return "//";
- case DOT:
- return ".";
- case DOT_DOT:
- return "..";
- case IDENTIFIER:
- return "(identifier)";
- case AT:
- return "@";
- case PIPE:
- return "|";
- case COLON:
- return ":";
- case DOUBLE_COLON:
- return "::";
- case LEFT_BRACKET:
- return "[";
- case RIGHT_BRACKET:
- return "]";
- case LEFT_PAREN:
- return "(";
- case RIGHT_PAREN:
- return ")";
- case DOLLAR:
- return "$";
- case LITERAL:
- return "(literal)";
- case AND:
- return "and";
- case OR:
- return "or";
- case DOUBLE:
- return "(double)";
- case COMMA:
- return ",";
- default:
- // This method is only called from an error handler, and only
- // to provide an exception message. In other words, the string
- // returned by this method is only used in an exception message.
- // Something has already gone wrong, and is being reported.
- // Thus there's no real reason to throw another exception here.
- // Just return a string and this message will be reported in an
- // exception anyway.
- return("Unrecognized token type: " + tokenType);
- }
- }
-}
diff --git a/src/java/main/org/jaxen/saxpath/base/Verifier.java b/src/java/main/org/jaxen/saxpath/base/Verifier.java
deleted file mode 100644
index af6cba9..0000000
--- a/src/java/main/org/jaxen/saxpath/base/Verifier.java
+++ /dev/null
@@ -1,508 +0,0 @@
-/*--
- *
- * $Id$
- *
- * Copyright 2000-2004 Jason Hunter & Brett McLaughlin.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- */
-
-package org.jaxen.saxpath.base;
-
-/**
- * A utility class to handle well-formedness checks on names.
- *
- * @author Brett McLaughlin
- * @author Elliotte Rusty Harold
- * @author Jason Hunter
- * @author Bradley S. Huffman
- */
-final class Verifier {
-
- /**
- * This is a utility function for determining whether a specified
- * character is a name character according to production 4 of the
- * XML 1.0 specification.
- *
- * @param c <code>char</code> to check for XML name compliance.
- * @return <code>boolean</code> true if it's a name character,
- * false otherwise
- */
- static boolean isXMLNCNameCharacter(char c) {
-
- return (isXMLLetter(c) || isXMLDigit(c) || c == '.' || c == '-'
- || c == '_' || isXMLCombiningChar(c)
- || isXMLExtender(c));
- }
-
- /**
- * This is a utility function for determining whether a specified
- * character is a legal name start character according to production 5
- * of the XML 1.0 specification. This production does allow names
- * to begin with colons which the Namespaces in XML Recommendation
- * disallows.
- *
- * @param c <code>char</code> to check for XML name start compliance
- * @return true if it's a name start character, false otherwise
- */
- static boolean isXMLNCNameStartCharacter(char c) {
-
- return (isXMLLetter(c) || c == '_');
-
- }
-
- /**
- * Determine whether a specified character
- * is a letter according to production 84 of the XML 1.0 specification.
- *
- * @param c <code>char</code> to check for XML name compliance
- * @return <code>String</code> true if it's a letter, false otherwise
- */
- static boolean isXMLLetter(char c) {
- // Note that order is very important here. The search proceeds
- // from lowest to highest values, so that no searching occurs
- // above the character's value. BTW, the first line is equivalent to:
- // if (c >= 0x0041 && c <= 0x005A) return true;
-
- if (c < 0x0041) return false; if (c <= 0x005a) return true;
- if (c < 0x0061) return false; if (c <= 0x007A) return true;
- if (c < 0x00C0) return false; if (c <= 0x00D6) return true;
- if (c < 0x00D8) return false; if (c <= 0x00F6) return true;
- if (c < 0x00F8) return false; if (c <= 0x00FF) return true;
- if (c < 0x0100) return false; if (c <= 0x0131) return true;
- if (c < 0x0134) return false; if (c <= 0x013E) return true;
- if (c < 0x0141) return false; if (c <= 0x0148) return true;
- if (c < 0x014A) return false; if (c <= 0x017E) return true;
- if (c < 0x0180) return false; if (c <= 0x01C3) return true;
- if (c < 0x01CD) return false; if (c <= 0x01F0) return true;
- if (c < 0x01F4) return false; if (c <= 0x01F5) return true;
- if (c < 0x01FA) return false; if (c <= 0x0217) return true;
- if (c < 0x0250) return false; if (c <= 0x02A8) return true;
- if (c < 0x02BB) return false; if (c <= 0x02C1) return true;
- if (c == 0x0386) return true;
- if (c < 0x0388) return false; if (c <= 0x038A) return true;
- if (c == 0x038C) return true;
- if (c < 0x038E) return false; if (c <= 0x03A1) return true;
- if (c < 0x03A3) return false; if (c <= 0x03CE) return true;
- if (c < 0x03D0) return false; if (c <= 0x03D6) return true;
- if (c == 0x03DA) return true;
- if (c == 0x03DC) return true;
- if (c == 0x03DE) return true;
- if (c == 0x03E0) return true;
- if (c < 0x03E2) return false; if (c <= 0x03F3) return true;
- if (c < 0x0401) return false; if (c <= 0x040C) return true;
- if (c < 0x040E) return false; if (c <= 0x044F) return true;
- if (c < 0x0451) return false; if (c <= 0x045C) return true;
- if (c < 0x045E) return false; if (c <= 0x0481) return true;
- if (c < 0x0490) return false; if (c <= 0x04C4) return true;
- if (c < 0x04C7) return false; if (c <= 0x04C8) return true;
- if (c < 0x04CB) return false; if (c <= 0x04CC) return true;
- if (c < 0x04D0) return false; if (c <= 0x04EB) return true;
- if (c < 0x04EE) return false; if (c <= 0x04F5) return true;
- if (c < 0x04F8) return false; if (c <= 0x04F9) return true;
- if (c < 0x0531) return false; if (c <= 0x0556) return true;
- if (c == 0x0559) return true;
- if (c < 0x0561) return false; if (c <= 0x0586) return true;
- if (c < 0x05D0) return false; if (c <= 0x05EA) return true;
- if (c < 0x05F0) return false; if (c <= 0x05F2) return true;
- if (c < 0x0621) return false; if (c <= 0x063A) return true;
- if (c < 0x0641) return false; if (c <= 0x064A) return true;
- if (c < 0x0671) return false; if (c <= 0x06B7) return true;
- if (c < 0x06BA) return false; if (c <= 0x06BE) return true;
- if (c < 0x06C0) return false; if (c <= 0x06CE) return true;
- if (c < 0x06D0) return false; if (c <= 0x06D3) return true;
- if (c == 0x06D5) return true;
- if (c < 0x06E5) return false; if (c <= 0x06E6) return true;
- if (c < 0x0905) return false; if (c <= 0x0939) return true;
- if (c == 0x093D) return true;
- if (c < 0x0958) return false; if (c <= 0x0961) return true;
- if (c < 0x0985) return false; if (c <= 0x098C) return true;
- if (c < 0x098F) return false; if (c <= 0x0990) return true;
- if (c < 0x0993) return false; if (c <= 0x09A8) return true;
- if (c < 0x09AA) return false; if (c <= 0x09B0) return true;
- if (c == 0x09B2) return true;
- if (c < 0x09B6) return false; if (c <= 0x09B9) return true;
- if (c < 0x09DC) return false; if (c <= 0x09DD) return true;
- if (c < 0x09DF) return false; if (c <= 0x09E1) return true;
- if (c < 0x09F0) return false; if (c <= 0x09F1) return true;
- if (c < 0x0A05) return false; if (c <= 0x0A0A) return true;
- if (c < 0x0A0F) return false; if (c <= 0x0A10) return true;
- if (c < 0x0A13) return false; if (c <= 0x0A28) return true;
- if (c < 0x0A2A) return false; if (c <= 0x0A30) return true;
- if (c < 0x0A32) return false; if (c <= 0x0A33) return true;
- if (c < 0x0A35) return false; if (c <= 0x0A36) return true;
- if (c < 0x0A38) return false; if (c <= 0x0A39) return true;
- if (c < 0x0A59) return false; if (c <= 0x0A5C) return true;
- if (c == 0x0A5E) return true;
- if (c < 0x0A72) return false; if (c <= 0x0A74) return true;
- if (c < 0x0A85) return false; if (c <= 0x0A8B) return true;
- if (c == 0x0A8D) return true;
- if (c < 0x0A8F) return false; if (c <= 0x0A91) return true;
- if (c < 0x0A93) return false; if (c <= 0x0AA8) return true;
- if (c < 0x0AAA) return false; if (c <= 0x0AB0) return true;
- if (c < 0x0AB2) return false; if (c <= 0x0AB3) return true;
- if (c < 0x0AB5) return false; if (c <= 0x0AB9) return true;
- if (c == 0x0ABD) return true;
- if (c == 0x0AE0) return true;
- if (c < 0x0B05) return false; if (c <= 0x0B0C) return true;
- if (c < 0x0B0F) return false; if (c <= 0x0B10) return true;
- if (c < 0x0B13) return false; if (c <= 0x0B28) return true;
- if (c < 0x0B2A) return false; if (c <= 0x0B30) return true;
- if (c < 0x0B32) return false; if (c <= 0x0B33) return true;
- if (c < 0x0B36) return false; if (c <= 0x0B39) return true;
- if (c == 0x0B3D) return true;
- if (c < 0x0B5C) return false; if (c <= 0x0B5D) return true;
- if (c < 0x0B5F) return false; if (c <= 0x0B61) return true;
- if (c < 0x0B85) return false; if (c <= 0x0B8A) return true;
- if (c < 0x0B8E) return false; if (c <= 0x0B90) return true;
- if (c < 0x0B92) return false; if (c <= 0x0B95) return true;
- if (c < 0x0B99) return false; if (c <= 0x0B9A) return true;
- if (c == 0x0B9C) return true;
- if (c < 0x0B9E) return false; if (c <= 0x0B9F) return true;
- if (c < 0x0BA3) return false; if (c <= 0x0BA4) return true;
- if (c < 0x0BA8) return false; if (c <= 0x0BAA) return true;
- if (c < 0x0BAE) return false; if (c <= 0x0BB5) return true;
- if (c < 0x0BB7) return false; if (c <= 0x0BB9) return true;
- if (c < 0x0C05) return false; if (c <= 0x0C0C) return true;
- if (c < 0x0C0E) return false; if (c <= 0x0C10) return true;
- if (c < 0x0C12) return false; if (c <= 0x0C28) return true;
- if (c < 0x0C2A) return false; if (c <= 0x0C33) return true;
- if (c < 0x0C35) return false; if (c <= 0x0C39) return true;
- if (c < 0x0C60) return false; if (c <= 0x0C61) return true;
- if (c < 0x0C85) return false; if (c <= 0x0C8C) return true;
- if (c < 0x0C8E) return false; if (c <= 0x0C90) return true;
- if (c < 0x0C92) return false; if (c <= 0x0CA8) return true;
- if (c < 0x0CAA) return false; if (c <= 0x0CB3) return true;
- if (c < 0x0CB5) return false; if (c <= 0x0CB9) return true;
- if (c == 0x0CDE) return true;
- if (c < 0x0CE0) return false; if (c <= 0x0CE1) return true;
- if (c < 0x0D05) return false; if (c <= 0x0D0C) return true;
- if (c < 0x0D0E) return false; if (c <= 0x0D10) return true;
- if (c < 0x0D12) return false; if (c <= 0x0D28) return true;
- if (c < 0x0D2A) return false; if (c <= 0x0D39) return true;
- if (c < 0x0D60) return false; if (c <= 0x0D61) return true;
- if (c < 0x0E01) return false; if (c <= 0x0E2E) return true;
- if (c == 0x0E30) return true;
- if (c < 0x0E32) return false; if (c <= 0x0E33) return true;
- if (c < 0x0E40) return false; if (c <= 0x0E45) return true;
- if (c < 0x0E81) return false; if (c <= 0x0E82) return true;
- if (c == 0x0E84) return true;
- if (c < 0x0E87) return false; if (c <= 0x0E88) return true;
- if (c == 0x0E8A) return true;
- if (c == 0x0E8D) return true;
- if (c < 0x0E94) return false; if (c <= 0x0E97) return true;
- if (c < 0x0E99) return false; if (c <= 0x0E9F) return true;
- if (c < 0x0EA1) return false; if (c <= 0x0EA3) return true;
- if (c == 0x0EA5) return true;
- if (c == 0x0EA7) return true;
- if (c < 0x0EAA) return false; if (c <= 0x0EAB) return true;
- if (c < 0x0EAD) return false; if (c <= 0x0EAE) return true;
- if (c == 0x0EB0) return true;
- if (c < 0x0EB2) return false; if (c <= 0x0EB3) return true;
- if (c == 0x0EBD) return true;
- if (c < 0x0EC0) return false; if (c <= 0x0EC4) return true;
- if (c < 0x0F40) return false; if (c <= 0x0F47) return true;
- if (c < 0x0F49) return false; if (c <= 0x0F69) return true;
- if (c < 0x10A0) return false; if (c <= 0x10C5) return true;
- if (c < 0x10D0) return false; if (c <= 0x10F6) return true;
- if (c == 0x1100) return true;
- if (c < 0x1102) return false; if (c <= 0x1103) return true;
- if (c < 0x1105) return false; if (c <= 0x1107) return true;
- if (c == 0x1109) return true;
- if (c < 0x110B) return false; if (c <= 0x110C) return true;
- if (c < 0x110E) return false; if (c <= 0x1112) return true;
- if (c == 0x113C) return true;
- if (c == 0x113E) return true;
- if (c == 0x1140) return true;
- if (c == 0x114C) return true;
- if (c == 0x114E) return true;
- if (c == 0x1150) return true;
- if (c < 0x1154) return false; if (c <= 0x1155) return true;
- if (c == 0x1159) return true;
- if (c < 0x115F) return false; if (c <= 0x1161) return true;
- if (c == 0x1163) return true;
- if (c == 0x1165) return true;
- if (c == 0x1167) return true;
- if (c == 0x1169) return true;
- if (c < 0x116D) return false; if (c <= 0x116E) return true;
- if (c < 0x1172) return false; if (c <= 0x1173) return true;
- if (c == 0x1175) return true;
- if (c == 0x119E) return true;
- if (c == 0x11A8) return true;
- if (c == 0x11AB) return true;
- if (c < 0x11AE) return false; if (c <= 0x11AF) return true;
- if (c < 0x11B7) return false; if (c <= 0x11B8) return true;
- if (c == 0x11BA) return true;
- if (c < 0x11BC) return false; if (c <= 0x11C2) return true;
- if (c == 0x11EB) return true;
- if (c == 0x11F0) return true;
- if (c == 0x11F9) return true;
- if (c < 0x1E00) return false; if (c <= 0x1E9B) return true;
- if (c < 0x1EA0) return false; if (c <= 0x1EF9) return true;
- if (c < 0x1F00) return false; if (c <= 0x1F15) return true;
- if (c < 0x1F18) return false; if (c <= 0x1F1D) return true;
- if (c < 0x1F20) return false; if (c <= 0x1F45) return true;
- if (c < 0x1F48) return false; if (c <= 0x1F4D) return true;
- if (c < 0x1F50) return false; if (c <= 0x1F57) return true;
- if (c == 0x1F59) return true;
- if (c == 0x1F5B) return true;
- if (c == 0x1F5D) return true;
- if (c < 0x1F5F) return false; if (c <= 0x1F7D) return true;
- if (c < 0x1F80) return false; if (c <= 0x1FB4) return true;
- if (c < 0x1FB6) return false; if (c <= 0x1FBC) return true;
- if (c == 0x1FBE) return true;
- if (c < 0x1FC2) return false; if (c <= 0x1FC4) return true;
- if (c < 0x1FC6) return false; if (c <= 0x1FCC) return true;
- if (c < 0x1FD0) return false; if (c <= 0x1FD3) return true;
- if (c < 0x1FD6) return false; if (c <= 0x1FDB) return true;
- if (c < 0x1FE0) return false; if (c <= 0x1FEC) return true;
- if (c < 0x1FF2) return false; if (c <= 0x1FF4) return true;
- if (c < 0x1FF6) return false; if (c <= 0x1FFC) return true;
- if (c == 0x2126) return true;
- if (c < 0x212A) return false; if (c <= 0x212B) return true;
- if (c == 0x212E) return true;
- if (c < 0x2180) return false; if (c <= 0x2182) return true;
- if (c == 0x3007) return true;
- if (c < 0x3021) return false; if (c <= 0x3029) return true;
- if (c < 0x3041) return false; if (c <= 0x3094) return true;
- if (c < 0x30A1) return false; if (c <= 0x30FA) return true;
- if (c < 0x3105) return false; if (c <= 0x312C) return true;
- if (c < 0x4E00) return false; if (c <= 0x9FA5) return true;
- if (c < 0xAC00) return false; if (c <= 0xD7A3) return true;
-
- return false;
-
- }
-
- /**
- * Determine whether a specified character
- * is a combining character according to production 87
- * of the XML 1.0 specification.
- *
- * @param c <code>char</code> to check
- * @return <code>boolean</code> true if it's a combining character,
- * false otherwise
- */
- static boolean isXMLCombiningChar(char c) {
- // CombiningChar
- if (c < 0x0300) return false; if (c <= 0x0345) return true;
- if (c < 0x0360) return false; if (c <= 0x0361) return true;
- if (c < 0x0483) return false; if (c <= 0x0486) return true;
- if (c < 0x0591) return false; if (c <= 0x05A1) return true;
-
- if (c < 0x05A3) return false; if (c <= 0x05B9) return true;
- if (c < 0x05BB) return false; if (c <= 0x05BD) return true;
- if (c == 0x05BF) return true;
- if (c < 0x05C1) return false; if (c <= 0x05C2) return true;
-
- if (c == 0x05C4) return true;
- if (c < 0x064B) return false; if (c <= 0x0652) return true;
- if (c == 0x0670) return true;
- if (c < 0x06D6) return false; if (c <= 0x06DC) return true;
-
- if (c < 0x06DD) return false; if (c <= 0x06DF) return true;
- if (c < 0x06E0) return false; if (c <= 0x06E4) return true;
- if (c < 0x06E7) return false; if (c <= 0x06E8) return true;
-
- if (c < 0x06EA) return false; if (c <= 0x06ED) return true;
- if (c < 0x0901) return false; if (c <= 0x0903) return true;
- if (c == 0x093C) return true;
- if (c < 0x093E) return false; if (c <= 0x094C) return true;
-
- if (c == 0x094D) return true;
- if (c < 0x0951) return false; if (c <= 0x0954) return true;
- if (c < 0x0962) return false; if (c <= 0x0963) return true;
- if (c < 0x0981) return false; if (c <= 0x0983) return true;
-
- if (c == 0x09BC) return true;
- if (c == 0x09BE) return true;
- if (c == 0x09BF) return true;
- if (c < 0x09C0) return false; if (c <= 0x09C4) return true;
- if (c < 0x09C7) return false; if (c <= 0x09C8) return true;
-
- if (c < 0x09CB) return false; if (c <= 0x09CD) return true;
- if (c == 0x09D7) return true;
- if (c < 0x09E2) return false; if (c <= 0x09E3) return true;
- if (c == 0x0A02) return true;
- if (c == 0x0A3C) return true;
-
- if (c == 0x0A3E) return true;
- if (c == 0x0A3F) return true;
- if (c < 0x0A40) return false; if (c <= 0x0A42) return true;
- if (c < 0x0A47) return false; if (c <= 0x0A48) return true;
-
- if (c < 0x0A4B) return false; if (c <= 0x0A4D) return true;
- if (c < 0x0A70) return false; if (c <= 0x0A71) return true;
- if (c < 0x0A81) return false; if (c <= 0x0A83) return true;
- if (c == 0x0ABC) return true;
-
- if (c < 0x0ABE) return false; if (c <= 0x0AC5) return true;
- if (c < 0x0AC7) return false; if (c <= 0x0AC9) return true;
- if (c < 0x0ACB) return false; if (c <= 0x0ACD) return true;
-
- if (c < 0x0B01) return false; if (c <= 0x0B03) return true;
- if (c == 0x0B3C) return true;
- if (c < 0x0B3E) return false; if (c <= 0x0B43) return true;
- if (c < 0x0B47) return false; if (c <= 0x0B48) return true;
-
- if (c < 0x0B4B) return false; if (c <= 0x0B4D) return true;
- if (c < 0x0B56) return false; if (c <= 0x0B57) return true;
- if (c < 0x0B82) return false; if (c <= 0x0B83) return true;
-
- if (c < 0x0BBE) return false; if (c <= 0x0BC2) return true;
- if (c < 0x0BC6) return false; if (c <= 0x0BC8) return true;
- if (c < 0x0BCA) return false; if (c <= 0x0BCD) return true;
- if (c == 0x0BD7) return true;
-
- if (c < 0x0C01) return false; if (c <= 0x0C03) return true;
- if (c < 0x0C3E) return false; if (c <= 0x0C44) return true;
- if (c < 0x0C46) return false; if (c <= 0x0C48) return true;
-
- if (c < 0x0C4A) return false; if (c <= 0x0C4D) return true;
- if (c < 0x0C55) return false; if (c <= 0x0C56) return true;
- if (c < 0x0C82) return false; if (c <= 0x0C83) return true;
-
- if (c < 0x0CBE) return false; if (c <= 0x0CC4) return true;
- if (c < 0x0CC6) return false; if (c <= 0x0CC8) return true;
- if (c < 0x0CCA) return false; if (c <= 0x0CCD) return true;
-
- if (c < 0x0CD5) return false; if (c <= 0x0CD6) return true;
- if (c < 0x0D02) return false; if (c <= 0x0D03) return true;
- if (c < 0x0D3E) return false; if (c <= 0x0D43) return true;
-
- if (c < 0x0D46) return false; if (c <= 0x0D48) return true;
- if (c < 0x0D4A) return false; if (c <= 0x0D4D) return true;
- if (c == 0x0D57) return true;
- if (c == 0x0E31) return true;
-
- if (c < 0x0E34) return false; if (c <= 0x0E3A) return true;
- if (c < 0x0E47) return false; if (c <= 0x0E4E) return true;
- if (c == 0x0EB1) return true;
- if (c < 0x0EB4) return false; if (c <= 0x0EB9) return true;
-
- if (c < 0x0EBB) return false; if (c <= 0x0EBC) return true;
- if (c < 0x0EC8) return false; if (c <= 0x0ECD) return true;
- if (c < 0x0F18) return false; if (c <= 0x0F19) return true;
- if (c == 0x0F35) return true;
-
- if (c == 0x0F37) return true;
- if (c == 0x0F39) return true;
- if (c == 0x0F3E) return true;
- if (c == 0x0F3F) return true;
- if (c < 0x0F71) return false; if (c <= 0x0F84) return true;
-
- if (c < 0x0F86) return false; if (c <= 0x0F8B) return true;
- if (c < 0x0F90) return false; if (c <= 0x0F95) return true;
- if (c == 0x0F97) return true;
- if (c < 0x0F99) return false; if (c <= 0x0FAD) return true;
-
- if (c < 0x0FB1) return false; if (c <= 0x0FB7) return true;
- if (c == 0x0FB9) return true;
- if (c < 0x20D0) return false; if (c <= 0x20DC) return true;
- if (c == 0x20E1) return true;
-
- if (c < 0x302A) return false; if (c <= 0x302F) return true;
- if (c == 0x3099) return true;
- if (c == 0x309A) return true;
-
- return false;
-
- }
-
- /**
- * Determine whether a specified
- * character is an extender according to production 88 of the XML 1.0
- * specification.
- *
- * @param c <code>char</code> to check
- * @return true if it's an extender, false otherwise
- */
- static boolean isXMLExtender(char c) {
-
- if (c < 0x00B6) return false; // quick short circuit
-
- // Extenders
- if (c == 0x00B7) return true;
- if (c == 0x02D0) return true;
- if (c == 0x02D1) return true;
- if (c == 0x0387) return true;
- if (c == 0x0640) return true;
- if (c == 0x0E46) return true;
- if (c == 0x0EC6) return true;
- if (c == 0x3005) return true;
-
- if (c < 0x3031) return false; if (c <= 0x3035) return true;
- if (c < 0x309D) return false; if (c <= 0x309E) return true;
- if (c < 0x30FC) return false; if (c <= 0x30FE) return true;
-
- return false;
-
- }
-
- /**
- * Determine whether a specified Unicode character
- * is a digit according to production 88 of the XML 1.0 specification.
- *
- * @param c <code>char</code> to check for XML digit compliance
- * @return <code>boolean</code> true if it's a digit, false otherwise
- */
- static boolean isXMLDigit(char c) {
-
- if (c < 0x0030) return false; if (c <= 0x0039) return true;
- if (c < 0x0660) return false; if (c <= 0x0669) return true;
- if (c < 0x06F0) return false; if (c <= 0x06F9) return true;
- if (c < 0x0966) return false; if (c <= 0x096F) return true;
-
- if (c < 0x09E6) return false; if (c <= 0x09EF) return true;
- if (c < 0x0A66) return false; if (c <= 0x0A6F) return true;
- if (c < 0x0AE6) return false; if (c <= 0x0AEF) return true;
-
- if (c < 0x0B66) return false; if (c <= 0x0B6F) return true;
- if (c < 0x0BE7) return false; if (c <= 0x0BEF) return true;
- if (c < 0x0C66) return false; if (c <= 0x0C6F) return true;
-
- if (c < 0x0CE6) return false; if (c <= 0x0CEF) return true;
- if (c < 0x0D66) return false; if (c <= 0x0D6F) return true;
- if (c < 0x0E50) return false; if (c <= 0x0E59) return true;
-
- if (c < 0x0ED0) return false; if (c <= 0x0ED9) return true;
- if (c < 0x0F20) return false; if (c <= 0x0F29) return true;
-
- return false;
- }
-
-}
diff --git a/src/java/main/org/jaxen/saxpath/base/XPathLexer.java b/src/java/main/org/jaxen/saxpath/base/XPathLexer.java
deleted file mode 100644
index c410741..0000000
--- a/src/java/main/org/jaxen/saxpath/base/XPathLexer.java
+++ /dev/null
@@ -1,941 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/base/XPathLexer.java,v 1.17 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.17 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathLexer.java,v 1.17 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-
-
-package org.jaxen.saxpath.base;
-
-class XPathLexer
-{
- private String xpath;
- private int currentPosition;
- private int endPosition;
-
- private Token previousToken;
-
- XPathLexer(String xpath)
- {
- setXPath( xpath );
- }
-
- private void setXPath(String xpath)
- {
- this.xpath = xpath;
- this.currentPosition = 0;
- this.endPosition = xpath.length();
- }
-
- String getXPath()
- {
- return this.xpath;
- }
-
- Token nextToken()
- {
- Token token = null;
-
- do
- {
- token = null;
-
- switch ( LA(1) )
- {
- case '$':
- {
- token = dollar();
- break;
- }
-
- case '"':
- case '\'':
- {
- token = literal();
- break;
- }
-
- case '/':
- {
- token = slashes();
- break;
- }
-
- case ',':
- {
- token = comma();
- break;
- }
-
- case '(':
- {
- token = leftParen();
- break;
- }
-
- case ')':
- {
- token = rightParen();
- break;
- }
-
- case '[':
- {
- token = leftBracket();
- break;
- }
-
- case ']':
- {
- token = rightBracket();
- break;
- }
-
- case '+':
- {
- token = plus();
- break;
- }
-
- case '-':
- {
- token = minus();
- break;
- }
-
- case '<':
- case '>':
- {
- token = relationalOperator();
- break;
- }
-
- case '=':
- {
- token = equals();
- break;
- }
-
- case '!':
- {
- if ( LA(2) == '=' )
- {
- token = notEquals();
- }
- break;
- }
-
- case '|':
- {
- token = pipe();
- break;
- }
-
- case '@':
- {
- token = at();
- break;
- }
-
- case ':':
- {
- if ( LA(2) == ':' )
- {
- token = doubleColon();
- }
- else
- {
- token = colon();
- }
- break;
- }
-
- case '*':
- {
- token = star();
- break;
- }
-
- case '.':
- {
- switch ( LA(2) )
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- {
- token = number();
- break;
- }
- default:
- {
- token = dots();
- break;
- }
- }
- break;
- }
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- {
- token = number();
- break;
- }
-
- case ' ':
- case '\t':
- case '\n':
- case '\r':
- {
- token = whitespace();
- break;
- }
-
- default:
- {
- if ( isIdentifierStartChar( LA(1) ) )
- {
- token = identifierOrOperatorName();
- }
- }
- }
-
- if ( token == null )
- {
- if (!hasMoreChars())
- {
- token = new Token( TokenTypes.EOF,
- getXPath(),
- currentPosition(),
- endPosition() );
- }
- else
- {
- token = new Token( TokenTypes.ERROR,
- getXPath(),
- currentPosition(),
- endPosition() );
- }
- }
-
- }
- while ( token.getTokenType() == TokenTypes.SKIP );
-
- setPreviousToken( token );
-
- return token;
- }
-
- private Token identifierOrOperatorName()
- {
- Token token = null;
-
- if ( previousToken != null )
- {
- // For some reason, section 3.7, Lexical structure,
- // doesn't seem to feel like it needs to mention the
- // SLASH, DOUBLE_SLASH, and COLON tokens for the test
- // if an NCName is an operator or not.
- //
- // According to section 3.7, "/foo" should be considered
- // as a SLASH following by an OperatorName being 'foo'.
- // Which is just simply, clearly, wrong, in my mind.
- //
- // -bob
-
- switch ( previousToken.getTokenType() )
- {
- case TokenTypes.AT:
- case TokenTypes.DOUBLE_COLON:
- case TokenTypes.LEFT_PAREN:
- case TokenTypes.LEFT_BRACKET:
- case TokenTypes.AND:
- case TokenTypes.OR:
- case TokenTypes.MOD:
- case TokenTypes.DIV:
- case TokenTypes.COLON:
- case TokenTypes.SLASH:
- case TokenTypes.DOUBLE_SLASH:
- case TokenTypes.PIPE:
- case TokenTypes.DOLLAR:
- case TokenTypes.PLUS:
- case TokenTypes.MINUS:
- case TokenTypes.STAR:
- case TokenTypes.COMMA:
- case TokenTypes.LESS_THAN_SIGN:
- case TokenTypes.GREATER_THAN_SIGN:
- case TokenTypes.LESS_THAN_OR_EQUALS_SIGN:
- case TokenTypes.GREATER_THAN_OR_EQUALS_SIGN:
- case TokenTypes.EQUALS:
- case TokenTypes.NOT_EQUALS:
- {
- token = identifier();
- break;
- }
- default:
- {
- token = operatorName();
- break;
- }
- }
- }
- else
- {
- token = identifier();
- }
-
- return token;
- }
-
- private Token identifier()
- {
- Token token = null;
-
- int start = currentPosition();
-
- while ( hasMoreChars() )
- {
- if ( isIdentifierChar( LA(1) ) )
- {
- consume();
- }
- else
- {
- break;
- }
- }
-
- token = new Token( TokenTypes.IDENTIFIER,
- getXPath(),
- start,
- currentPosition() );
-
- return token;
- }
-
- private Token operatorName()
- {
- Token token = null;
-
- switch ( LA(1) )
- {
- case 'a':
- {
- token = and();
- break;
- }
-
- case 'o':
- {
- token = or();
- break;
- }
-
- case 'm':
- {
- token = mod();
- break;
- }
-
- case 'd':
- {
- token = div();
- break;
- }
- }
-
- return token;
- }
-
- private Token mod()
- {
- Token token = null;
-
- if ( ( LA(1) == 'm' )
- &&
- ( LA(2) == 'o' )
- &&
- ( LA(3) == 'd' )
- )
- {
- token = new Token( TokenTypes.MOD,
- getXPath(),
- currentPosition(),
- currentPosition()+3 );
-
- consume();
- consume();
- consume();
- }
-
- return token;
- }
-
- private Token div()
- {
- Token token = null;
-
- if ( ( LA(1) == 'd' )
- &&
- ( LA(2) == 'i' )
- &&
- ( LA(3) == 'v' )
- )
- {
- token = new Token( TokenTypes.DIV,
- getXPath(),
- currentPosition(),
- currentPosition()+3 );
-
- consume();
- consume();
- consume();
- }
-
- return token;
- }
-
- private Token and()
- {
- Token token = null;
-
- if ( ( LA(1) == 'a' )
- &&
- ( LA(2) == 'n' )
- &&
- ( LA(3) == 'd' )
- )
- {
- token = new Token( TokenTypes.AND,
- getXPath(),
- currentPosition(),
- currentPosition()+3 );
-
- consume();
- consume();
- consume();
- }
-
- return token;
- }
-
- private Token or()
- {
- Token token = null;
-
- if ( ( LA(1) == 'o' )
- &&
- ( LA(2) == 'r' )
- )
- {
- token = new Token( TokenTypes.OR,
- getXPath(),
- currentPosition(),
- currentPosition()+2 );
-
- consume();
- consume();
- }
-
- return token;
- }
-
- private Token number()
- {
- int start = currentPosition();
- boolean periodAllowed = true;
-
- loop:
- while( true )
- {
- switch ( LA(1) )
- {
- case '.':
- if ( periodAllowed )
- {
- periodAllowed = false;
- consume();
- }
- else
- {
- break loop;
- }
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- consume();
- break;
- default:
- break loop;
- }
- }
-
- return new Token( TokenTypes.DOUBLE,
- getXPath(),
- start,
- currentPosition() );
- }
-
- private Token whitespace()
- {
- consume();
-
- loop:
- while( hasMoreChars() )
- {
- switch ( LA(1) )
- {
- case ' ':
- case '\t':
- case '\n':
- case '\r':
- {
- consume();
- break;
- }
-
- default:
- {
- break loop;
- }
- }
- }
-
- return new Token( TokenTypes.SKIP,
- getXPath(),
- 0,
- 0 );
- }
-
- private Token comma()
- {
- Token token = new Token( TokenTypes.COMMA,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token equals()
- {
- Token token = new Token( TokenTypes.EQUALS,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token minus()
- {
- Token token = new Token( TokenTypes.MINUS,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
- consume();
-
- return token;
- }
-
- private Token plus()
- {
- Token token = new Token( TokenTypes.PLUS,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
- consume();
-
- return token;
- }
-
- private Token dollar()
- {
- Token token = new Token( TokenTypes.DOLLAR,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
- consume();
-
- return token;
- }
-
- private Token pipe()
- {
- Token token = new Token( TokenTypes.PIPE,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token at()
- {
- Token token = new Token( TokenTypes.AT,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token colon()
- {
- Token token = new Token( TokenTypes.COLON,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
- consume();
-
- return token;
- }
-
- private Token doubleColon()
- {
- Token token = new Token( TokenTypes.DOUBLE_COLON,
- getXPath(),
- currentPosition(),
- currentPosition()+2 );
-
- consume();
- consume();
-
- return token;
- }
-
- private Token notEquals()
- {
- Token token = new Token( TokenTypes.NOT_EQUALS,
- getXPath(),
- currentPosition(),
- currentPosition() + 2 );
-
- consume();
- consume();
-
- return token;
- }
-
- private Token relationalOperator()
- {
- Token token = null;
-
- switch ( LA(1) )
- {
- case '<':
- {
- if ( LA(2) == '=' )
- {
- token = new Token( TokenTypes.LESS_THAN_OR_EQUALS_SIGN,
- getXPath(),
- currentPosition(),
- currentPosition() + 2 );
- consume();
- }
- else
- {
- token = new Token( TokenTypes.LESS_THAN_SIGN,
- getXPath(),
- currentPosition(),
- currentPosition() + 1);
- }
-
- consume();
- break;
- }
- case '>':
- {
- if ( LA(2) == '=' )
- {
- token = new Token( TokenTypes.GREATER_THAN_OR_EQUALS_SIGN,
- getXPath(),
- currentPosition(),
- currentPosition() + 2 );
- consume();
- }
- else
- {
- token = new Token( TokenTypes.GREATER_THAN_SIGN,
- getXPath(),
- currentPosition(),
- currentPosition() + 1 );
- }
-
- consume();
- break;
- }
- }
-
- return token;
-
- }
-
- private Token star()
- {
- Token token = new Token( TokenTypes.STAR,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token literal()
- {
- Token token = null;
-
- char match = LA(1);
-
- consume();
-
- int start = currentPosition();
-
- while ( ( token == null )
- &&
- hasMoreChars() )
- {
- if ( LA(1) == match )
- {
- token = new Token( TokenTypes.LITERAL,
- getXPath(),
- start,
- currentPosition() );
- }
- consume();
- }
-
- return token;
- }
-
- private Token dots()
- {
- Token token = null;
-
- switch ( LA(2) )
- {
- case '.':
- {
- token = new Token( TokenTypes.DOT_DOT,
- getXPath(),
- currentPosition(),
- currentPosition()+2 ) ;
- consume();
- consume();
- break;
- }
- default:
- {
- token = new Token( TokenTypes.DOT,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
- consume();
- break;
- }
- }
-
- return token;
- }
-
- private Token leftBracket()
- {
- Token token = new Token( TokenTypes.LEFT_BRACKET,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token rightBracket()
- {
- Token token = new Token( TokenTypes.RIGHT_BRACKET,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token leftParen()
- {
- Token token = new Token( TokenTypes.LEFT_PAREN,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token rightParen()
- {
- Token token = new Token( TokenTypes.RIGHT_PAREN,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
-
- consume();
-
- return token;
- }
-
- private Token slashes()
- {
- Token token = null;
-
- switch ( LA(2) )
- {
- case '/':
- {
- token = new Token( TokenTypes.DOUBLE_SLASH,
- getXPath(),
- currentPosition(),
- currentPosition()+2 );
- consume();
- consume();
- break;
- }
- default:
- {
- token = new Token( TokenTypes.SLASH,
- getXPath(),
- currentPosition(),
- currentPosition()+1 );
- consume();
- }
- }
-
- return token;
- }
-
- private char LA(int i)
- {
- if ( currentPosition + ( i - 1 ) >= endPosition() )
- {
- return (char) -1;
- }
-
- return getXPath().charAt( currentPosition() + (i - 1) );
- }
-
- private void consume()
- {
- ++this.currentPosition;
- }
-
- private int currentPosition()
- {
- return this.currentPosition;
- }
-
- private int endPosition()
- {
- return this.endPosition;
- }
-
- private void setPreviousToken(Token previousToken)
- {
- this.previousToken = previousToken;
- }
-
- private boolean hasMoreChars()
- {
- return currentPosition() < endPosition();
- }
-
- private boolean isIdentifierChar(char c)
- {
- return Verifier.isXMLNCNameCharacter( c );
- }
-
- private boolean isIdentifierStartChar(char c)
- {
- return Verifier.isXMLNCNameStartCharacter( c );
- }
-
-}
diff --git a/src/java/main/org/jaxen/saxpath/base/XPathReader.java b/src/java/main/org/jaxen/saxpath/base/XPathReader.java
deleted file mode 100644
index 7d44331..0000000
--- a/src/java/main/org/jaxen/saxpath/base/XPathReader.java
+++ /dev/null
@@ -1,1100 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/base/XPathReader.java,v 1.32 2006/04/07 23:47:37 elharo Exp $
- * $Revision: 1.32 $
- * $Date: 2006/04/07 23:47:37 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathReader.java,v 1.32 2006/04/07 23:47:37 elharo Exp $
- */
-
-
-package org.jaxen.saxpath.base;
-
-import java.util.ArrayList;
-
-import org.jaxen.saxpath.Axis;
-import org.jaxen.saxpath.Operator;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.XPathHandler;
-import org.jaxen.saxpath.XPathSyntaxException;
-import org.jaxen.saxpath.helpers.DefaultXPathHandler;
-
-/** Implementation of SAXPath's <code>XPathReader</code> which
- * generates callbacks to an <code>XPathHandler</code>.
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public class XPathReader implements org.jaxen.saxpath.XPathReader
-{
- private ArrayList tokens;
- private XPathLexer lexer;
-
- private XPathHandler handler;
-
- private static XPathHandler defaultHandler = new DefaultXPathHandler();
-
- /**
- * Create a new <code>XPathReader</code> with a do-nothing
- * <code>XPathHandler</code>.
- */
- public XPathReader()
- {
- setXPathHandler( defaultHandler );
- }
-
- public void setXPathHandler(XPathHandler handler)
- {
- this.handler = handler;
- }
-
- public XPathHandler getXPathHandler()
- {
- return this.handler;
- }
-
- public void parse(String xpath) throws SAXPathException
- {
- setUpParse( xpath );
-
- getXPathHandler().startXPath();
-
- expr();
-
- getXPathHandler().endXPath();
-
- if ( LA(1) != TokenTypes.EOF )
- {
- XPathSyntaxException ex = createSyntaxException( "Unexpected '" + LT(1).getTokenText() + "'" );
- throw ex;
- }
-
- lexer = null;
- tokens = null;
- }
-
- void setUpParse(String xpath)
- {
- this.tokens = new ArrayList();
- this.lexer = new XPathLexer( xpath );
- }
-
- private void pathExpr() throws SAXPathException
- {
- getXPathHandler().startPathExpr();
-
- switch ( LA(1) )
- {
- case TokenTypes.DOUBLE:
- case TokenTypes.LITERAL:
- {
- filterExpr();
-
- if ( LA(1) == TokenTypes.SLASH || LA(1) == TokenTypes.DOUBLE_SLASH )
- {
- XPathSyntaxException ex = createSyntaxException("Node-set expected");
- throw ex;
- }
-
- break;
- }
- case TokenTypes.LEFT_PAREN:
- case TokenTypes.DOLLAR:
- {
- filterExpr();
-
- if ( LA(1) == TokenTypes.SLASH || LA(1) == TokenTypes.DOUBLE_SLASH)
- {
- locationPath( false );
- }
- break;
- }
- case TokenTypes.IDENTIFIER:
- {
-
- if ( ( LA(2) == TokenTypes.LEFT_PAREN
- &&
- ! isNodeTypeName( LT(1) ) )
- ||
- ( LA(2) == TokenTypes.COLON
- &&
- LA(4) == TokenTypes.LEFT_PAREN) )
- {
- filterExpr();
-
- if ( LA(1) == TokenTypes.SLASH || LA(1) == TokenTypes.DOUBLE_SLASH)
- {
- locationPath( false );
- }
- }
- else
- {
- locationPath( false );
- }
- break;
- }
- case TokenTypes.DOT:
- case TokenTypes.DOT_DOT:
- case TokenTypes.STAR:
- case TokenTypes.AT:
- {
- locationPath( false );
- break;
- }
- case TokenTypes.SLASH:
- case TokenTypes.DOUBLE_SLASH:
- {
- locationPath( true );
- break;
- }
- default:
- {
- XPathSyntaxException ex = createSyntaxException( "Unexpected '" + LT(1).getTokenText() + "'" );
- throw ex;
- }
- }
-
- getXPathHandler().endPathExpr();
- }
-
- private void literal() throws SAXPathException
- {
- Token token = match( TokenTypes.LITERAL );
-
- getXPathHandler().literal( token.getTokenText() );
- }
-
- private void functionCall() throws SAXPathException
- {
- String prefix = null;
- String functionName = null;
-
- if ( LA(2) == TokenTypes.COLON )
- {
- prefix = match( TokenTypes.IDENTIFIER ).getTokenText();
- match( TokenTypes.COLON );
- }
- else
- {
- prefix = "";
- }
-
- functionName = match( TokenTypes.IDENTIFIER ).getTokenText();
-
- getXPathHandler().startFunction( prefix,
- functionName );
-
- match ( TokenTypes.LEFT_PAREN );
-
- arguments();
-
- match ( TokenTypes.RIGHT_PAREN );
-
- getXPathHandler().endFunction();
- }
-
- private void arguments() throws SAXPathException
- {
- while ( LA(1) != TokenTypes.RIGHT_PAREN )
- {
- expr();
-
- if ( LA(1) == TokenTypes.COMMA )
- {
- match( TokenTypes.COMMA );
- }
- else
- {
- break;
- }
- }
- }
-
- private void filterExpr() throws SAXPathException
- {
-
- getXPathHandler().startFilterExpr();
-
- switch ( LA(1) )
- {
- case TokenTypes.DOUBLE:
- {
- Token token = match( TokenTypes.DOUBLE );
-
- getXPathHandler().number( Double.parseDouble( token.getTokenText() ) );
- break;
- }
- case TokenTypes.LITERAL:
- {
- literal();
- break;
- }
- case TokenTypes.LEFT_PAREN:
- {
- match( TokenTypes.LEFT_PAREN );
- expr();
- match( TokenTypes.RIGHT_PAREN );
- break;
- }
- case TokenTypes.IDENTIFIER:
- {
- functionCall();
- break;
- }
- case TokenTypes.DOLLAR:
- {
- variableReference();
- break;
- }
- }
-
- predicates();
-
- getXPathHandler().endFilterExpr();
- }
-
- private void variableReference() throws SAXPathException
- {
- match( TokenTypes.DOLLAR );
-
- String prefix = null;
- String variableName = null;
-
- if ( LA(2) == TokenTypes.COLON )
- {
- prefix = match( TokenTypes.IDENTIFIER ).getTokenText();
- match( TokenTypes.COLON );
- }
- else
- {
- prefix = "";
- }
-
- variableName = match( TokenTypes.IDENTIFIER ).getTokenText();
-
- getXPathHandler().variableReference( prefix,
- variableName );
- }
-
- void locationPath(boolean isAbsolute) throws SAXPathException
- {
- switch ( LA(1) )
- {
- case TokenTypes.SLASH:
- case TokenTypes.DOUBLE_SLASH:
- {
- if ( isAbsolute )
- {
- absoluteLocationPath();
- }
- else
- {
- relativeLocationPath();
- }
- break;
- }
- case TokenTypes.AT:
- case TokenTypes.IDENTIFIER:
- case TokenTypes.DOT:
- case TokenTypes.DOT_DOT:
- case TokenTypes.STAR:
- {
- relativeLocationPath();
- break;
- }
- default:
- {
- XPathSyntaxException ex = createSyntaxException( "Unexpected '" + LT(1).getTokenText() + "'" );
- throw ex;
- }
- }
- }
-
- private void absoluteLocationPath() throws SAXPathException
- {
- getXPathHandler().startAbsoluteLocationPath();
-
- switch ( LA(1) )
- {
- case TokenTypes.SLASH:
- {
- match( TokenTypes.SLASH );
-
- switch ( LA(1) )
- {
-
- case TokenTypes.DOT:
- case TokenTypes.DOT_DOT:
- case TokenTypes.AT:
- case TokenTypes.IDENTIFIER:
- case TokenTypes.STAR:
- {
- steps();
- break;
- }
- }
- break;
- }
- case TokenTypes.DOUBLE_SLASH:
- {
- getXPathHandler().startAllNodeStep( Axis.DESCENDANT_OR_SELF );
- getXPathHandler().endAllNodeStep();
-
- match( TokenTypes.DOUBLE_SLASH );
- switch ( LA(1) )
- {
- case TokenTypes.DOT:
- case TokenTypes.DOT_DOT:
- case TokenTypes.AT:
- case TokenTypes.IDENTIFIER:
- case TokenTypes.STAR:
- {
- steps();
- break;
- }
- default:
- XPathSyntaxException ex = this.createSyntaxException("Location path cannot end with //");
- throw ex;
- }
- break;
- }
- }
-
- getXPathHandler().endAbsoluteLocationPath();
- }
-
- private void relativeLocationPath() throws SAXPathException
- {
- getXPathHandler().startRelativeLocationPath();
-
- switch ( LA(1) )
- {
- case TokenTypes.SLASH:
- {
- match( TokenTypes.SLASH );
- break;
- }
- case TokenTypes.DOUBLE_SLASH:
- {
- getXPathHandler().startAllNodeStep( Axis.DESCENDANT_OR_SELF );
- getXPathHandler().endAllNodeStep();
-
- match( TokenTypes.DOUBLE_SLASH );
-
- break;
- }
- }
-
- steps();
-
- getXPathHandler().endRelativeLocationPath();
- }
-
- private void steps() throws SAXPathException
- {
- switch ( LA(1) )
- {
-
- case TokenTypes.DOT:
- case TokenTypes.DOT_DOT:
- case TokenTypes.AT:
- case TokenTypes.IDENTIFIER:
- case TokenTypes.STAR:
- {
- step();
- break;
- }
- case TokenTypes.EOF:
- {
- return;
- }
- default:
- {
- XPathSyntaxException ex = createSyntaxException( "Expected one of '.', '..', '@', '*', <QName>" );
- throw ex;
- }
- }
-
- do
- {
- if ( ( LA(1) == TokenTypes.SLASH)
- ||
- ( LA(1) == TokenTypes.DOUBLE_SLASH ) )
- {
- switch ( LA(1) )
- {
- case TokenTypes.SLASH:
- {
- match( TokenTypes.SLASH );
- break;
- }
- case TokenTypes.DOUBLE_SLASH:
- {
- getXPathHandler().startAllNodeStep( Axis.DESCENDANT_OR_SELF );
- getXPathHandler().endAllNodeStep();
-
- match( TokenTypes.DOUBLE_SLASH );
- break;
- }
- }
- }
- else
- {
- return;
- }
-
- switch ( LA(1) )
- {
- case TokenTypes.DOT:
- case TokenTypes.DOT_DOT:
- case TokenTypes.AT:
- case TokenTypes.IDENTIFIER:
- case TokenTypes.STAR:
- {
- step();
- break;
- }
- default:
- {
- XPathSyntaxException ex = createSyntaxException( "Expected one of '.', '..', '@', '*', <QName>" );
- throw ex;
- }
- }
-
- } while ( true );
- }
-
- void step() throws SAXPathException
- {
- int axis = 0;
-
- switch ( LA(1) )
- {
- case TokenTypes.DOT:
- case TokenTypes.DOT_DOT:
- {
- abbrStep();
- return;
- }
- case TokenTypes.AT:
- {
- axis = axisSpecifier();
- break;
- }
- case TokenTypes.IDENTIFIER:
- {
- if ( LA(2) == TokenTypes.DOUBLE_COLON )
- {
- axis = axisSpecifier();
- }
- else
- {
- axis = Axis.CHILD;
- }
- break;
- }
- case TokenTypes.STAR:
- {
- axis = Axis.CHILD;
- break;
- }
- }
-
- nodeTest( axis );
- }
-
- private int axisSpecifier() throws SAXPathException
- {
- int axis = 0;
-
- switch ( LA(1) )
- {
- case TokenTypes.AT:
- {
- match( TokenTypes.AT );
- axis = Axis.ATTRIBUTE;
- break;
- }
- case TokenTypes.IDENTIFIER:
- {
- Token token = LT( 1 );
-
- axis = Axis.lookup( token.getTokenText() );
-
- if ( axis == Axis.INVALID_AXIS )
- {
- throwInvalidAxis( token.getTokenText() );
- }
-
- match( TokenTypes.IDENTIFIER );
- match( TokenTypes.DOUBLE_COLON );
-
- break;
- }
- }
-
- return axis;
- }
-
- private void nodeTest(int axis) throws SAXPathException
- {
- switch ( LA(1) )
- {
- case TokenTypes.IDENTIFIER:
- {
- switch ( LA(2) )
- {
- case TokenTypes.LEFT_PAREN:
- {
- nodeTypeTest( axis );
- break;
- }
- default:
- {
- nameTest( axis );
- break;
- }
- }
- break;
- }
- case TokenTypes.STAR:
- {
- nameTest( axis );
- break;
- }
- default:
- XPathSyntaxException ex = createSyntaxException("Expected <QName> or *");
- throw ex;
- }
- }
-
- private void nodeTypeTest(int axis) throws SAXPathException
- {
- Token nodeTypeToken = match( TokenTypes.IDENTIFIER );
- String nodeType = nodeTypeToken.getTokenText();
-
- match( TokenTypes.LEFT_PAREN );
-
- if ( "processing-instruction".equals( nodeType ) )
- {
- String piName = "";
-
- if ( LA(1) == TokenTypes.LITERAL )
- {
- piName = match( TokenTypes.LITERAL ).getTokenText();
- }
-
- match( TokenTypes.RIGHT_PAREN );
-
- getXPathHandler().startProcessingInstructionNodeStep( axis,
- piName );
-
- predicates();
-
- getXPathHandler().endProcessingInstructionNodeStep();
- }
- else if ( "node".equals( nodeType ) )
- {
- match( TokenTypes.RIGHT_PAREN );
-
- getXPathHandler().startAllNodeStep( axis );
-
- predicates();
-
- getXPathHandler().endAllNodeStep();
- }
- else if ( "text".equals( nodeType ) )
- {
- match( TokenTypes.RIGHT_PAREN );
-
- getXPathHandler().startTextNodeStep( axis );
-
- predicates();
-
- getXPathHandler().endTextNodeStep();
- }
- else if ( "comment".equals( nodeType ) )
- {
- match( TokenTypes.RIGHT_PAREN );
-
- getXPathHandler().startCommentNodeStep( axis );
-
- predicates();
-
- getXPathHandler().endCommentNodeStep();
- }
- else
- {
- XPathSyntaxException ex = createSyntaxException( "Expected node-type" );
- throw ex;
- }
- }
-
- private void nameTest(int axis) throws SAXPathException
- {
- String prefix = null;
- String localName = null;
-
- switch ( LA(2) )
- {
- case TokenTypes.COLON:
- {
- switch ( LA(1) )
- {
- case TokenTypes.IDENTIFIER:
- {
- prefix = match( TokenTypes.IDENTIFIER ).getTokenText();
- match( TokenTypes.COLON );
- break;
- }
- }
- break;
- }
- }
-
- switch ( LA(1) )
- {
- case TokenTypes.IDENTIFIER:
- {
- localName = match( TokenTypes.IDENTIFIER ).getTokenText();
- break;
- }
- case TokenTypes.STAR:
- {
- match( TokenTypes.STAR );
- localName = "*";
- break;
- }
- }
-
- if ( prefix == null )
- {
- prefix = "";
- }
-
- getXPathHandler().startNameStep( axis,
- prefix,
- localName );
-
- predicates();
-
- getXPathHandler().endNameStep();
- }
-
- private void abbrStep() throws SAXPathException
- {
- switch ( LA(1) )
- {
- case TokenTypes.DOT:
- {
- match( TokenTypes.DOT );
- getXPathHandler().startAllNodeStep( Axis.SELF );
- predicates();
- getXPathHandler().endAllNodeStep();
- break;
- }
- case TokenTypes.DOT_DOT:
- {
- match( TokenTypes.DOT_DOT );
- getXPathHandler().startAllNodeStep( Axis.PARENT );
- predicates();
- getXPathHandler().endAllNodeStep();
- break;
- }
- }
- }
-
- private void predicates() throws SAXPathException
- {
- while (true )
- {
- if ( LA(1) == TokenTypes.LEFT_BRACKET )
- {
- predicate();
- }
- else
- {
- break;
- }
- }
- }
-
- void predicate() throws SAXPathException
- {
- getXPathHandler().startPredicate();
-
- match( TokenTypes.LEFT_BRACKET );
-
- predicateExpr();
-
- match( TokenTypes.RIGHT_BRACKET );
-
- getXPathHandler().endPredicate();
- }
-
- private void predicateExpr() throws SAXPathException
- {
- expr();
- }
-
- private void expr() throws SAXPathException
- {
- orExpr();
- }
-
- private void orExpr() throws SAXPathException
- {
- getXPathHandler().startOrExpr();
-
- andExpr();
-
- boolean create = false;
-
- switch ( LA(1) )
- {
- case TokenTypes.OR:
- {
- create = true;
- match( TokenTypes.OR );
- orExpr();
- break;
- }
- }
-
- getXPathHandler().endOrExpr( create );
- }
-
- private void andExpr() throws SAXPathException
- {
- getXPathHandler().startAndExpr();
-
- equalityExpr();
-
- boolean create = false;
-
- switch ( LA(1) )
- {
- case TokenTypes.AND:
- {
- create = true;
- match( TokenTypes.AND );
- andExpr();
- break;
- }
- }
-
- getXPathHandler().endAndExpr( create );
- }
-
- private void equalityExpr() throws SAXPathException
- {
- relationalExpr();
-
- int la = LA(1);
- while (la == TokenTypes.EQUALS || la == TokenTypes.NOT_EQUALS)
- {
- switch ( la )
- {
- case TokenTypes.EQUALS:
- {
- match( TokenTypes.EQUALS );
- getXPathHandler().startEqualityExpr();
- relationalExpr();
- getXPathHandler().endEqualityExpr( Operator.EQUALS );
- break;
- }
- case TokenTypes.NOT_EQUALS:
- {
- match( TokenTypes.NOT_EQUALS );
- getXPathHandler().startEqualityExpr();
- relationalExpr();
- getXPathHandler().endEqualityExpr( Operator.NOT_EQUALS );
- break;
- }
- }
- la = LA(1);
- }
- }
-
- private void relationalExpr() throws SAXPathException
- {
-
- additiveExpr();
-
- int la = LA(1);
- // Very important: TokenTypes.LESS_THAN != Operator.LESS_THAN
- // TokenTypes.GREATER_THAN != Operator.GREATER_THAN
- // TokenTypes.GREATER_THAN_EQUALS != Operator.GREATER_THAN_EQUALS
- // TokenTypes.LESS_THAN_EQUALS != Operator.LESS_THAN_EQUALS
- while (la == TokenTypes.LESS_THAN_SIGN
- || la == TokenTypes.GREATER_THAN_SIGN
- || la == TokenTypes.LESS_THAN_OR_EQUALS_SIGN
- || la == TokenTypes.GREATER_THAN_OR_EQUALS_SIGN ) {
- switch ( la )
- {
- case TokenTypes.LESS_THAN_SIGN:
- {
- match( TokenTypes.LESS_THAN_SIGN );
- getXPathHandler().startRelationalExpr();
- additiveExpr();
- getXPathHandler().endRelationalExpr( Operator.LESS_THAN );
- break;
- }
- case TokenTypes.GREATER_THAN_SIGN:
- {
- match( TokenTypes.GREATER_THAN_SIGN );
- getXPathHandler().startRelationalExpr();
- additiveExpr();
- getXPathHandler().endRelationalExpr( Operator.GREATER_THAN );
- break;
- }
- case TokenTypes.GREATER_THAN_OR_EQUALS_SIGN:
- {
- match( TokenTypes.GREATER_THAN_OR_EQUALS_SIGN );
- getXPathHandler().startRelationalExpr();
- additiveExpr();
- getXPathHandler().endRelationalExpr( Operator.GREATER_THAN_EQUALS );
- break;
- }
- case TokenTypes.LESS_THAN_OR_EQUALS_SIGN:
- {
- match( TokenTypes.LESS_THAN_OR_EQUALS_SIGN );
- getXPathHandler().startRelationalExpr();
- additiveExpr();
- getXPathHandler().endRelationalExpr( Operator.LESS_THAN_EQUALS );
- break;
- }
- }
- la = LA(1);
- }
- }
-
-
- private void additiveExpr() throws SAXPathException
- {
- multiplicativeExpr();
-
- int la = LA(1);
- while (la == TokenTypes.PLUS || la == TokenTypes.MINUS)
- {
- switch ( la )
- {
- case TokenTypes.PLUS:
- {
- match( TokenTypes.PLUS );
- getXPathHandler().startAdditiveExpr();
- multiplicativeExpr();
- getXPathHandler().endAdditiveExpr( Operator.ADD );
- break;
- }
- case TokenTypes.MINUS:
- {
- match( TokenTypes.MINUS );
- getXPathHandler().startAdditiveExpr();
- multiplicativeExpr();
- getXPathHandler().endAdditiveExpr( Operator.SUBTRACT );
- break;
- }
- }
- la = LA(1);
- }
- }
-
- private void multiplicativeExpr() throws SAXPathException
- {
- unaryExpr();
-
- int la = LA(1);
- while (la == TokenTypes.STAR || la == TokenTypes.DIV || la == TokenTypes.MOD)
- {
- switch ( la )
- {
- case TokenTypes.STAR:
- {
- match( TokenTypes.STAR );
- getXPathHandler().startMultiplicativeExpr();
- unaryExpr();
- getXPathHandler().endMultiplicativeExpr( Operator.MULTIPLY );
- break;
- }
- case TokenTypes.DIV:
- {
- match( TokenTypes.DIV );
- getXPathHandler().startMultiplicativeExpr();
- unaryExpr();
- getXPathHandler().endMultiplicativeExpr( Operator.DIV );
- break;
- }
- case TokenTypes.MOD:
- {
- match( TokenTypes.MOD );
- getXPathHandler().startMultiplicativeExpr();
- unaryExpr();
- getXPathHandler().endMultiplicativeExpr( Operator.MOD );
- break;
- }
- }
- la = LA(1);
- }
-
- }
-
- private void unaryExpr() throws SAXPathException
- {
- switch ( LA(1) )
- {
- case TokenTypes.MINUS:
- {
- getXPathHandler().startUnaryExpr();
- match( TokenTypes.MINUS );
- unaryExpr();
- getXPathHandler().endUnaryExpr( Operator.NEGATIVE );
- break;
- }
- default:
- {
- unionExpr();
- break;
- }
- }
-
-
- }
-
- private void unionExpr() throws SAXPathException
- {
- getXPathHandler().startUnionExpr();
-
- pathExpr();
-
- boolean create = false;
-
- switch ( LA(1) )
- {
- case TokenTypes.PIPE:
- {
- match( TokenTypes.PIPE );
- create = true;
- expr();
- break;
- }
- }
-
- getXPathHandler().endUnionExpr( create );
- }
-
- private Token match(int tokenType) throws XPathSyntaxException
- {
- LT(1);
-
- Token token = (Token) tokens.get( 0 );
-
- if ( token.getTokenType() == tokenType )
- {
- tokens.remove(0);
- return token;
- }
-
-
- XPathSyntaxException ex = createSyntaxException( "Expected: " + TokenTypes.getTokenText( tokenType ) );
- throw ex;
- }
-
- private int LA(int position)
- {
- return LT(position).getTokenType();
- }
-
-
- // XXX This method's a HotSpot; could we improve it?
- private Token LT(int position)
- {
- if ( tokens.size() <= ( position - 1 ) )
- {
- for ( int i = 0 ; i < position ; ++i )
- {
- tokens.add( lexer.nextToken() );
- }
- }
-
- return (Token) tokens.get( position - 1 );
- }
-
- private boolean isNodeTypeName(Token name)
- {
- String text = name.getTokenText();
-
- if ( "node".equals( text )
- ||
- "comment".equals( text )
- ||
- "text".equals( text )
- ||
- "processing-instruction".equals( text ) )
- {
- return true;
- }
-
- return false;
- }
-
- private XPathSyntaxException createSyntaxException(String message)
- {
- String xpath = this.lexer.getXPath();
- int position = LT(1).getTokenBegin();
-
- return new XPathSyntaxException( xpath,
- position,
- message );
- }
-
- private void throwInvalidAxis(String invalidAxis) throws SAXPathException
- {
- String xpath = this.lexer.getXPath();
- int position = LT(1).getTokenBegin();
-
- String message = "Expected valid axis name instead of [" + invalidAxis + "]";
-
- throw new XPathSyntaxException( xpath,
- position,
- message );
- }
-}
diff --git a/src/java/main/org/jaxen/saxpath/base/package.html b/src/java/main/org/jaxen/saxpath/base/package.html
deleted file mode 100644
index abf547b..0000000
--- a/src/java/main/org/jaxen/saxpath/base/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
- <head>
- <title>
- com.jaxen.saxpath.*
- </title>
- </head>
-
- <body>
- <p>
- <a href="http://jaxen.org">jaxen</a>
- implementation of the SAXPath functionality.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/saxpath/helpers/DefaultXPathHandler.java b/src/java/main/org/jaxen/saxpath/helpers/DefaultXPathHandler.java
deleted file mode 100644
index 6431da0..0000000
--- a/src/java/main/org/jaxen/saxpath/helpers/DefaultXPathHandler.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/helpers/DefaultXPathHandler.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/02/05 21:47:42 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultXPathHandler.java,v 1.7 2006/02/05 21:47:42 elharo Exp $
- */
-
-
-
-
-package org.jaxen.saxpath.helpers;
-
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.XPathHandler;
-
-/**
-
- Default base class for SAXPath event handlers.
-
- This class is available as a convenience base class for SAXPath
- applications: it provides a default do-nothing implementation
- for all of the callbacks in the core SAXPath handler class, {@link
- org.jaxen.saxpath.XPathHandler}.
-
- Application writers can extend this class when they need to
- implement only part of the <code>XPathHandler</code>
- interface. Parser writers can instantiate
- this class to provide default handlers when the application has not
- supplied its own. */
-
-public class DefaultXPathHandler implements XPathHandler
-{
-
- public void startXPath() throws SAXPathException
- {
- }
-
- public void endXPath() throws SAXPathException
- {
- }
-
- public void startPathExpr() throws SAXPathException
- {
- }
-
- public void endPathExpr() throws SAXPathException
- {
- }
-
- public void startAbsoluteLocationPath() throws SAXPathException
- {
- }
-
- public void endAbsoluteLocationPath() throws SAXPathException
- {
- }
-
- public void startRelativeLocationPath() throws SAXPathException
- {
- }
-
- public void endRelativeLocationPath() throws SAXPathException
- {
- }
-
- public void startNameStep(int axis,
- String prefix,
- String localName) throws SAXPathException
- {
- }
-
- public void endNameStep() throws SAXPathException
- {
- }
-
- public void startTextNodeStep(int axis) throws SAXPathException
- {
- }
- public void endTextNodeStep() throws SAXPathException
- {
- }
-
- public void startCommentNodeStep(int axis) throws SAXPathException
- {
- }
-
- public void endCommentNodeStep() throws SAXPathException
- {
- }
-
- public void startAllNodeStep(int axis) throws SAXPathException
- {
- }
-
- public void endAllNodeStep() throws SAXPathException
- {
- }
-
- public void startProcessingInstructionNodeStep(int axis,
- String name) throws SAXPathException
- {
- }
- public void endProcessingInstructionNodeStep() throws SAXPathException
- {
- }
-
- public void startPredicate() throws SAXPathException
- {
- }
-
- public void endPredicate() throws SAXPathException
- {
- }
-
- public void startFilterExpr() throws SAXPathException
- {
- }
-
- public void endFilterExpr() throws SAXPathException
- {
- }
-
- public void startOrExpr() throws SAXPathException
- {
- }
-
- public void endOrExpr(boolean create) throws SAXPathException
- {
- }
-
- public void startAndExpr() throws SAXPathException
- {
- }
-
- public void endAndExpr(boolean create) throws SAXPathException
- {
- }
-
- public void startEqualityExpr() throws SAXPathException
- {
- }
-
- public void endEqualityExpr(int operator) throws SAXPathException
- {
- }
-
- public void startRelationalExpr() throws SAXPathException
- {
- }
-
- public void endRelationalExpr(int operator) throws SAXPathException
- {
- }
-
- public void startAdditiveExpr() throws SAXPathException
- {
- }
-
- public void endAdditiveExpr(int operator) throws SAXPathException
- {
- }
-
- public void startMultiplicativeExpr() throws SAXPathException
- {
- }
-
- public void endMultiplicativeExpr(int operator) throws SAXPathException
- {
- }
-
- public void startUnaryExpr() throws SAXPathException
- {
- }
-
- public void endUnaryExpr(int operator) throws SAXPathException
- {
- }
-
- public void startUnionExpr() throws SAXPathException
- {
- }
-
- public void endUnionExpr(boolean create) throws SAXPathException
- {
- }
-
- public void number(int number) throws SAXPathException
- {
- }
-
- public void number(double number) throws SAXPathException
- {
- }
-
- public void literal(String literal) throws SAXPathException
- {
- }
-
- public void variableReference(String prefix,
- String variableName) throws SAXPathException
- {
- }
-
- public void startFunction(String prefix,
- String functionName) throws SAXPathException
- {
- }
-
- public void endFunction() throws SAXPathException
- {
- }
-
-}
diff --git a/src/java/main/org/jaxen/saxpath/helpers/XPathReaderFactory.java b/src/java/main/org/jaxen/saxpath/helpers/XPathReaderFactory.java
deleted file mode 100644
index 216ba47..0000000
--- a/src/java/main/org/jaxen/saxpath/helpers/XPathReaderFactory.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/helpers/XPathReaderFactory.java,v 1.9 2006/09/15 20:41:38 elharo Exp $
- * $Revision: 1.9 $
- * $Date: 2006/09/15 20:41:38 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathReaderFactory.java,v 1.9 2006/09/15 20:41:38 elharo Exp $
- */
-
-
-
-
-package org.jaxen.saxpath.helpers;
-
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.XPathReader;
-
-/** Create an {@link org.jaxen.saxpath.XPathReader} from
- * either a system property, or a named class.
- *
- * <p>
- * Similar to the SAX API, the <code>XPathReaderFactory</code>
- * can create an <code>XPathReader</code> from a name of a
- * class passed in directly, or by inspecting the system
- * property <code>org.saxpath.driver</code>.
- *
- * @author bob mcwhirter (bob at werken.com)
- */
-public class XPathReaderFactory
-{
- /** The <code>org.saxpath.driver</code> property name. */
- public static final String DRIVER_PROPERTY = "org.saxpath.driver";
-
- /** The default driver to use if none is configured. */
- protected static final String DEFAULT_DRIVER = "org.jaxen.saxpath.base.XPathReader";
-
- private XPathReaderFactory() {}
-
-
- /** Create an <code>XPathReader</code> using the value of
- * the <code>org.saxpath.driver</code> system property.
- *
- * @return an instance of the <code>XPathReader</code> specified
- * by the <code>org.saxpath.driver</code> property
- *
- * @throws SAXPathException if the property is not set, or if
- * the class can not be instantiated for some reason,
- * or if the class doesn't implement the <code>XPathReader</code>
- * interface
- */
- public static XPathReader createReader() throws SAXPathException
- {
- String className = null;
-
- try
- {
- className = System.getProperty( DRIVER_PROPERTY );
- }
- catch (SecurityException e)
- {
- // we'll use the default
- }
-
- if ( className == null
- ||
- className.length() == 0 )
- {
- className = DEFAULT_DRIVER;
- }
-
- return createReader( className );
- }
-
- /** Create an <code>XPathReader</code> using the passed
- * in class name.
- *
- * @param className the name of the class that implements
- * the <code>XPathReader</code> interface.
- *
- * @return an XPathReader
- *
- * @throws SAXPathException if the class cannot be
- * instantiated for some reason, or if the
- * class doesn't implement the <code>XPathReader</code>
- * interface
- */
- public static XPathReader createReader(String className) throws SAXPathException
- {
- Class readerClass = null;
- XPathReader reader = null;
-
- try
- {
- // Use the full version of Class.forName(), so as to
- // work better in sandboxed environments, such as
- // servlet containers and applets.
-
- readerClass = Class.forName( className,
- true,
- XPathReaderFactory.class.getClassLoader() );
-
- // Double-check that it's actually the right kind of class
- // before attempting instantiation.
-
- if ( ! XPathReader.class.isAssignableFrom( readerClass ) )
- {
- throw new SAXPathException( "Class [" + className
- + "] does not implement the org.jaxen.saxpath.XPathReader interface." );
- }
- }
- catch (ClassNotFoundException e)
- {
- throw new SAXPathException( e );
- }
-
- try
- {
- reader = (XPathReader) readerClass.newInstance();
- }
- catch (IllegalAccessException e)
- {
- throw new SAXPathException( e );
- }
- catch (InstantiationException e)
- {
- throw new SAXPathException( e );
- }
-
- return reader;
- }
-}
diff --git a/src/java/main/org/jaxen/saxpath/helpers/package.html b/src/java/main/org/jaxen/saxpath/helpers/package.html
deleted file mode 100644
index d866dcb..0000000
--- a/src/java/main/org/jaxen/saxpath/helpers/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.saxpath.helpers.*
- </title>
- </head>
-
- <body>
- <p>
- Helper classes for instantiating XPathReaders.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/saxpath/package.html b/src/java/main/org/jaxen/saxpath/package.html
deleted file mode 100644
index 3c22eeb..0000000
--- a/src/java/main/org/jaxen/saxpath/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.saxpath.*
- </title>
- </head>
-
- <body>
- <p>
- Classes related to the event-based parsing and handling
- of XPath expressions.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/util/AncestorAxisIterator.java b/src/java/main/org/jaxen/util/AncestorAxisIterator.java
deleted file mode 100644
index ba3e991..0000000
--- a/src/java/main/org/jaxen/util/AncestorAxisIterator.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/AncestorAxisIterator.java,v 1.14 2006/11/09 18:20:12 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/09 18:20:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: AncestorAxisIterator.java,v 1.14 2006/11/09 18:20:12 elharo Exp $
- */
-
-
-
-package org.jaxen.util;
-
-
-import org.jaxen.Navigator;
-
-/**
- * Represents the XPath <code>ancestor</code> axis.
- * The "<code>ancestor</code> axis contains the ancestors of the context node;
- * the ancestors of the context node consist of the parent of context node and
- * the parent's parent and so on; thus, the ancestor axis will always include
- * the root node, unless the context node is the root node."
- *
- * @version 1.2b12
- */
-public class AncestorAxisIterator extends AncestorOrSelfAxisIterator
-{
-
- /**
- * Create a new ancestor axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public AncestorAxisIterator(Object contextNode,
- Navigator navigator)
- {
- super( contextNode,
- navigator );
- next();
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/AncestorOrSelfAxisIterator.java b/src/java/main/org/jaxen/util/AncestorOrSelfAxisIterator.java
deleted file mode 100644
index 8b58911..0000000
--- a/src/java/main/org/jaxen/util/AncestorOrSelfAxisIterator.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.jaxen.util;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/AncestorOrSelfAxisIterator.java,v 1.14 2006/11/09 18:20:12 elharo Exp $
- * $Revision: 1.14 $
- * $Date: 2006/11/09 18:20:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: AncestorOrSelfAxisIterator.java,v 1.14 2006/11/09 18:20:12 elharo Exp $
-*/
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.JaxenRuntimeException;
-
-/**
- * <p>
- * Represents the XPath <code>ancestor-or-self</code> axis.
- * The "<code>ancestor-or-self</code> axis contains the context node and
- * the ancestors of the context node; thus, the ancestor axis will
- * always include the root node."
- * </p>
- *
- * @version 1.2b12
- */
-public class AncestorOrSelfAxisIterator implements Iterator
-{
-
- private Object contextNode;
- private Navigator navigator;
-
- /**
- * Create a new <code>ancestor-or-self</code> axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public AncestorOrSelfAxisIterator(Object contextNode,
- Navigator navigator)
- {
- // XXX should we throw a NullPointerException here if contextNode is null?
- this.contextNode = contextNode;
- this.navigator = navigator;
- }
-
- /**
- * Returns true if there are any nodes remaining
- * on the ancestor-or-self axis; false otherwise.
- *
- * @return true if any ancestors or self remain
- *
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext()
- {
- return contextNode != null;
- }
-
- /**
- * Returns the next ancestor-or-self node.
- *
- * @return the next ancestor-or-self node
- *
- * @throws NoSuchElementException if no ancestors remain
- *
- * @see java.util.Iterator#next()
- */
- public Object next()
- {
- try
- {
- if (hasNext()) {
- Object result = contextNode;
- contextNode = navigator.getParentNode(contextNode);
- return result;
- }
- throw new NoSuchElementException("Exhausted ancestor-or-self axis");
- }
- catch (UnsupportedAxisException e)
- {
- throw new JaxenRuntimeException(e);
- }
- }
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/DescendantAxisIterator.java b/src/java/main/org/jaxen/util/DescendantAxisIterator.java
deleted file mode 100644
index 8eaf741..0000000
--- a/src/java/main/org/jaxen/util/DescendantAxisIterator.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.jaxen.util;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/DescendantAxisIterator.java,v 1.13 2006/11/09 18:20:11 elharo Exp $
- * $Revision: 1.13 $
- * $Date: 2006/11/09 18:20:11 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DescendantAxisIterator.java,v 1.13 2006/11/09 18:20:11 elharo Exp $
-*/
-
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.JaxenRuntimeException;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-import java.util.ArrayList;
-
-/**
- * Represents the XPath <code>descendant</code> axis.
- * The "<code>descendant</code> axis contains the descendants of the context node;
- * a descendant is a child or a child of a child and so on; thus
- * the descendant axis never contains attribute or namespace nodes."
- *
- * @version 1.2b12
- */
-public class DescendantAxisIterator implements Iterator
-{
-
- private ArrayList stack = new ArrayList();
- private Iterator children;
- private Navigator navigator;
-
- /**
- * Create a new <code>descendant</code> axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public DescendantAxisIterator(Object contextNode,
- Navigator navigator) throws UnsupportedAxisException
- {
- this(navigator, navigator.getChildAxisIterator(contextNode));
- }
-
- public DescendantAxisIterator(Navigator navigator,
- Iterator iterator)
- {
- this.navigator = navigator;
- this.children = iterator;
- }
-
- /**
- * Returns true if there are any descendants remaining; false otherwise.
- *
- * @return true if any descendants remain; false otherwise
- *
- * @see java.util.Iterator#hasNext()
- */ public boolean hasNext()
- {
- while (!children.hasNext())
- {
- if (stack.isEmpty())
- {
- return false;
- }
- children = (Iterator) stack.remove(stack.size()-1);
- }
- return true;
- }
-
- /**
- * Returns the next descendant node.
- *
- * @return the next descendant node
- *
- * @throws NoSuchElementException if no descendants remain
- *
- * @see java.util.Iterator#next()
- */
- public Object next()
- {
- try
- {
- if (hasNext())
- {
- Object node = children.next();
- stack.add(children);
- children = navigator.getChildAxisIterator(node);
- return node;
- }
- throw new NoSuchElementException();
- }
- catch (UnsupportedAxisException e)
- {
- throw new JaxenRuntimeException(e);
- }
- }
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/DescendantOrSelfAxisIterator.java b/src/java/main/org/jaxen/util/DescendantOrSelfAxisIterator.java
deleted file mode 100644
index 1af5e5c..0000000
--- a/src/java/main/org/jaxen/util/DescendantOrSelfAxisIterator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.jaxen.util;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/DescendantOrSelfAxisIterator.java,v 1.11 2006/11/09 18:20:12 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/11/09 18:20:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DescendantOrSelfAxisIterator.java,v 1.11 2006/11/09 18:20:12 elharo Exp $
-*/
-
-import org.jaxen.Navigator;
-
-/**
- * Represents the XPath <code>descendant-or-self</code> axis.
- * The "<code>descendant-or-self</code> axis contains the context node
- * and the descendants of the context node."
- *
- * @version 1.2b12
- */
-public class DescendantOrSelfAxisIterator extends DescendantAxisIterator
-{
-
- /**
- * Create a new <code>desscendant-or-self</code> axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public DescendantOrSelfAxisIterator(Object contextNode,
- Navigator navigator)
- {
- super(navigator, new SingleObjectIterator(contextNode));
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/FollowingAxisIterator.java b/src/java/main/org/jaxen/util/FollowingAxisIterator.java
deleted file mode 100644
index f080744..0000000
--- a/src/java/main/org/jaxen/util/FollowingAxisIterator.java
+++ /dev/null
@@ -1,189 +0,0 @@
-package org.jaxen.util;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/FollowingAxisIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/11/09 18:20:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FollowingAxisIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $
-*/
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.JaxenRuntimeException;
-import org.jaxen.JaxenConstants;
-
-/**
- * Represents the XPath <code>following</code> axis.
- * The "<code>following</code> axis contains all nodes in the same document as the context
- * node that are after the context node in document order, excluding any descendants
- * and excluding attribute nodes and namespace nodes."
- *
- * @version 1.2b12
- */
-public class FollowingAxisIterator implements Iterator
-{
- private Object contextNode;
-
- private Navigator navigator;
-
- private Iterator siblings;
-
- private Iterator currentSibling;
-
- /**
- * Create a new <code>following</code> axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public FollowingAxisIterator(Object contextNode,
- Navigator navigator) throws UnsupportedAxisException
- {
- this.contextNode = contextNode;
- this.navigator = navigator;
- this.siblings = navigator.getFollowingSiblingAxisIterator(contextNode);
- this.currentSibling = JaxenConstants.EMPTY_ITERATOR;
- }
-
- private boolean goForward()
- {
- while ( ! siblings.hasNext() )
- {
- if ( !goUp() )
- {
- return false;
- }
- }
-
- Object nextSibling = siblings.next();
-
- this.currentSibling = new DescendantOrSelfAxisIterator(nextSibling, navigator);
-
- return true;
- }
-
- private boolean goUp()
- {
- if ( contextNode == null
- ||
- navigator.isDocument(contextNode) )
- {
- return false;
- }
-
- try
- {
- contextNode = navigator.getParentNode( contextNode );
-
- if ( contextNode != null
- &&
- !navigator.isDocument(contextNode) )
- {
- siblings = navigator.getFollowingSiblingAxisIterator(contextNode);
- return true;
- }
- else
- {
- return false;
- }
- }
- catch (UnsupportedAxisException e)
- {
- throw new JaxenRuntimeException(e);
- }
- }
-
- /**
- * Returns true if there are any following nodes remaining;
- * false otherwise.
- *
- * @return true if any following nodes remain
- *
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext()
- {
- while ( ! currentSibling.hasNext() )
- {
- if ( ! goForward() )
- {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Returns the next following node.
- *
- * @return the next following node
- *
- * @throws NoSuchElementException if no following nodes remain
- *
- * @see java.util.Iterator#next()
- */
- public Object next() throws NoSuchElementException
- {
- if ( ! hasNext() )
- {
- throw new NoSuchElementException();
- }
-
- return currentSibling.next();
- }
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public void remove() throws UnsupportedOperationException
- {
- throw new UnsupportedOperationException();
- }
-}
diff --git a/src/java/main/org/jaxen/util/FollowingSiblingAxisIterator.java b/src/java/main/org/jaxen/util/FollowingSiblingAxisIterator.java
deleted file mode 100644
index cbcd3e7..0000000
--- a/src/java/main/org/jaxen/util/FollowingSiblingAxisIterator.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/FollowingSiblingAxisIterator.java,v 1.11 2006/11/09 18:20:12 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/11/09 18:20:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: FollowingSiblingAxisIterator.java,v 1.11 2006/11/09 18:20:12 elharo Exp $
- */
-
-
-
-package org.jaxen.util;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.jaxen.JaxenConstants;
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-
-/**
- *
- * Represents the XPath <code>following-sibling</code> axis.
- * The "<code>following-sibling</code> axis contains all the
- * folowing siblings of the context node; if the context node is an
- * attribute node or namespace node, the <code>following-sibling</code>
- * axis is empty."
- *
- * @version 1.2b12
- *
- */
-public class FollowingSiblingAxisIterator implements Iterator
-{
- private Object contextNode;
- private Navigator navigator;
- private Iterator siblingIter;
-
- /**
- * Create a new <code>following-sibling</code> axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public FollowingSiblingAxisIterator(Object contextNode,
- Navigator navigator) throws UnsupportedAxisException
- {
- this.contextNode = contextNode;
- this.navigator = navigator;
- init();
- }
-
- private void init() throws UnsupportedAxisException
- {
- Object parent = this.navigator.getParentNode( this.contextNode );
-
- if ( parent != null )
- {
- siblingIter = this.navigator.getChildAxisIterator( parent );
-
- while ( siblingIter.hasNext() )
- {
- Object eachChild = siblingIter.next();
- if ( eachChild.equals(this.contextNode) ) break;
- }
- }
- else {
- siblingIter = JaxenConstants.EMPTY_ITERATOR;
- }
-
- }
-
- /**
- * Returns true if there are any following siblings remain; false otherwise.
- *
- * @return true if any following siblings remain; false otherwise
- *
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext()
- {
- return siblingIter.hasNext();
- }
-
- /**
- * Returns the next following sibling.
- *
- * @return the next following sibling
- *
- * @throws NoSuchElementException if no following siblings remain
- *
- * @see java.util.Iterator#next()
- */
- public Object next() throws NoSuchElementException
- {
- return siblingIter.next();
- }
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public void remove() throws UnsupportedOperationException
- {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/LinkedIterator.java b/src/java/main/org/jaxen/util/LinkedIterator.java
deleted file mode 100644
index 71317a9..0000000
--- a/src/java/main/org/jaxen/util/LinkedIterator.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/LinkedIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/11/09 18:20:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LinkedIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $
- */
-
-
-package org.jaxen.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-/**
- * @deprecated This class is undocumented and untested.
- * It will be removed in a future release.
- */
-public class LinkedIterator implements Iterator
-{
- private List iterators;
- private int cur;
-
- public LinkedIterator()
- {
- this.iterators = new ArrayList();
- this.cur = 0;
- }
-
- public void addIterator(Iterator i)
- {
- this.iterators.add( i );
- }
-
- public boolean hasNext()
- {
- boolean has = false;
-
- if ( this.cur < this.iterators.size() )
- {
- has = ((Iterator)this.iterators.get( this.cur )).hasNext();
-
- if ( ! has
- &&
- this.cur < this.iterators.size() )
- {
- ++this.cur;
- has = hasNext();
- }
- }
- else
- {
- has = false;
- }
-
- return has;
- }
-
- public Object next()
- {
- if ( ! hasNext() )
- {
- throw new NoSuchElementException();
- }
-
- return ((Iterator)this.iterators.get( this.cur )).next();
- }
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException
- */
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
-}
diff --git a/src/java/main/org/jaxen/util/PrecedingAxisIterator.java b/src/java/main/org/jaxen/util/PrecedingAxisIterator.java
deleted file mode 100644
index 8341bda..0000000
--- a/src/java/main/org/jaxen/util/PrecedingAxisIterator.java
+++ /dev/null
@@ -1,219 +0,0 @@
-package org.jaxen.util;
-
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/PrecedingAxisIterator.java,v 1.11 2006/11/13 22:10:09 elharo Exp $
- * $Revision: 1.11 $
- * $Date: 2006/11/13 22:10:09 $
- *
- * ====================================================================
- *
- * Copyright 2000-2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: PrecedingAxisIterator.java,v 1.11 2006/11/13 22:10:09 elharo Exp $
-*/
-
-import org.jaxen.JaxenConstants;
-import org.jaxen.JaxenRuntimeException;
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-/**
- * <p>
- * Represents the XPath <code>preceding</code> axis.
- * The "<code>preceding</code> axis contains all nodes in the same document as the context
- * node that are before the context node in document order, excluding any ancestors
- * and excluding attribute nodes and namespace nodes."
- *
- * <p>
- * This implementation of '<code>preceding</code>' works like so:
- * the <code>preceding</code> axis includes preceding siblings of this node and
- * their descendants. Also, for each ancestor node of this node, it includes
- * all preceding siblings of that ancestor, and their descendants. Finally, it
- * includes the ancestor nodes themselves.
- * </p>
- *
- * <p>
- * The reversed <code>descendant-or-self</code> axes that are required are calculated using a
- * stack of reversed 'child-or-self' axes. When asked for a node, it is always taken
- * from a child-or-self axis. If it was the last node on that axis, the node is returned.
- * Otherwise, this axis is pushed on the stack, and the process is repeated with the child-or-self
- * of the node. Eventually this recurses down to the last descendant of any node, then works
- * back up to the root.
- * </p>
- *
- * <p>
- * Most object models could provide a faster implementation of the reversed
- * 'children-or-self' used here.</p>
- *
- * @version 1.2b12
- */
-public class PrecedingAxisIterator implements Iterator
-{
- private Iterator ancestorOrSelf;
- private Iterator precedingSibling;
- private ListIterator childrenOrSelf;
- private ArrayList stack;
-
- private Navigator navigator;
-
- /**
- * Create a new <code>preceding</code> axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public PrecedingAxisIterator(Object contextNode,
- Navigator navigator) throws UnsupportedAxisException
- {
- this.navigator = navigator;
- this.ancestorOrSelf = navigator.getAncestorOrSelfAxisIterator(contextNode);
- this.precedingSibling = JaxenConstants.EMPTY_ITERATOR;
- this.childrenOrSelf = JaxenConstants.EMPTY_LIST_ITERATOR;
- this.stack = new ArrayList();
- }
-
-
- /**
- * Returns true if there are any preceding nodes remaining; false otherwise.
- *
- * @return true if any preceding nodes remain; false otherwise
- *
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext()
- {
- try
- {
- while (!childrenOrSelf.hasPrevious())
- {
- if (stack.isEmpty())
- {
- while (!precedingSibling.hasNext())
- {
- if (!ancestorOrSelf.hasNext())
- {
- return false;
- }
- Object contextNode = ancestorOrSelf.next();
- precedingSibling = new PrecedingSiblingAxisIterator(contextNode, navigator);
- }
- Object node = precedingSibling.next();
- childrenOrSelf = childrenOrSelf(node);
- }
- else
- {
- childrenOrSelf = (ListIterator) stack.remove(stack.size()-1);
- }
- }
- return true;
- }
- catch (UnsupportedAxisException e)
- {
- throw new JaxenRuntimeException(e);
- }
- }
-
- private ListIterator childrenOrSelf(Object node)
- {
- try
- {
- ArrayList reversed = new ArrayList();
- reversed.add(node);
- Iterator childAxisIterator = navigator.getChildAxisIterator(node);
- if (childAxisIterator != null)
- {
- while (childAxisIterator.hasNext())
- {
- reversed.add(childAxisIterator.next());
- }
- }
- return reversed.listIterator(reversed.size());
- }
- catch (UnsupportedAxisException e)
- {
- throw new JaxenRuntimeException(e);
- }
- }
-
- /**
- * Returns the next preceding node.
- *
- * @return the next preceding node
- *
- * @throws NoSuchElementException if no preceding nodes remain
- *
- * @see java.util.Iterator#next()
- */
- public Object next() throws NoSuchElementException
- {
- if (!hasNext())
- {
- throw new NoSuchElementException();
- }
- while (true)
- {
- Object result = childrenOrSelf.previous();
- if (childrenOrSelf.hasPrevious())
- {
- // if this isn't 'self' construct 'descendant-or-self'
- stack.add(childrenOrSelf);
- childrenOrSelf = childrenOrSelf(result);
- continue;
- }
- return result;
- }
- }
-
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public void remove() throws UnsupportedOperationException
- {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/PrecedingSiblingAxisIterator.java b/src/java/main/org/jaxen/util/PrecedingSiblingAxisIterator.java
deleted file mode 100644
index 3752ba4..0000000
--- a/src/java/main/org/jaxen/util/PrecedingSiblingAxisIterator.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/PrecedingSiblingAxisIterator.java,v 1.16 2006/11/13 22:10:09 elharo Exp $
- * $Revision: 1.16 $
- * $Date: 2006/11/13 22:10:09 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: PrecedingSiblingAxisIterator.java,v 1.16 2006/11/13 22:10:09 elharo Exp $
- */
-
-
-
-package org.jaxen.util;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.NoSuchElementException;
-
-import org.jaxen.JaxenConstants;
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-
-/**
- *
- * Represents the XPath <code>preceding-sibling</code> axis.
- * The "<code>preceding-sibling</code> axis contains all the
- * preceding siblings of the context node; if the context node is an
- * attribute node or namespace node, the <code>preceding-sibling</code>
- * axis is empty."
- *
- * @version 1.2b12
- *
- */
-public class PrecedingSiblingAxisIterator implements Iterator
-{
- private Object contextNode;
- private Navigator navigator;
-
- private Iterator siblingIter;
- private Object nextObj;
-
- /**
- * Create a new <code>preceding-sibling</code> axis iterator.
- *
- * @param contextNode the node to start from
- * @param navigator the object model specific navigator
- */
- public PrecedingSiblingAxisIterator(Object contextNode,
- Navigator navigator) throws UnsupportedAxisException
- {
- this.contextNode = contextNode;
- this.navigator = navigator;
-
- init();
- if ( siblingIter.hasNext() )
- {
- this.nextObj = siblingIter.next();
- }
- }
-
- private void init() throws UnsupportedAxisException
- {
-
- Object parent = this.navigator.getParentNode( this.contextNode );
-
- if ( parent != null )
- {
- Iterator childIter = this.navigator.getChildAxisIterator( parent );
- LinkedList siblings = new LinkedList();
-
- while ( childIter.hasNext() )
- {
- Object eachChild = childIter.next();
- if ( eachChild.equals(this.contextNode) )
- {
- break;
- }
- siblings.addFirst( eachChild );
- }
-
- this.siblingIter = siblings.iterator();
-
- }
- else {
- this.siblingIter = JaxenConstants.EMPTY_ITERATOR;
- }
-
- }
-
- /**
- * Returns true if there are any preceding siblings remaining; false otherwise.
- *
- * @return true if any preceding siblings remain; false otherwise
- *
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext()
- {
- return ( this.nextObj != null );
- }
-
- /**
- * Returns the next preceding sibling.
- *
- * @return the next preceding sibling
- *
- * @throws NoSuchElementException if no preceding siblings remain
- *
- * @see java.util.Iterator#next()
- */
- public Object next() throws NoSuchElementException
- {
- if ( ! hasNext() )
- {
- throw new NoSuchElementException();
- }
-
- Object obj = this.nextObj;
- if ( siblingIter.hasNext() )
- {
- this.nextObj = siblingIter.next();
- }
- else {
- this.nextObj = null;
- }
- return obj;
- }
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException
- */
- public void remove() throws UnsupportedOperationException
- {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/SelfAxisIterator.java b/src/java/main/org/jaxen/util/SelfAxisIterator.java
deleted file mode 100644
index f41ee25..0000000
--- a/src/java/main/org/jaxen/util/SelfAxisIterator.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/SelfAxisIterator.java,v 1.10 2007/05/02 14:33:29 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2007/05/02 14:33:29 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SelfAxisIterator.java,v 1.10 2007/05/02 14:33:29 elharo Exp $
- */
-
-
-
-package org.jaxen.util;
-
-/**
- *
- * Represents the XPath <code>self</code> axis. The "<code>self</code> axis contains
- * just the context node itself."
- *
- * @version 1.1.1
- *
- */
-public class SelfAxisIterator extends SingleObjectIterator
-{
-
- /**
- * Create a new <code>self</code> axis iterator.
- *
- * @param node the node to start from
- */
- public SelfAxisIterator(Object node)
- {
- super(node);
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/SingleObjectIterator.java b/src/java/main/org/jaxen/util/SingleObjectIterator.java
deleted file mode 100644
index ad6a52c..0000000
--- a/src/java/main/org/jaxen/util/SingleObjectIterator.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/SingleObjectIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/11/09 18:20:12 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SingleObjectIterator.java,v 1.8 2006/11/09 18:20:12 elharo Exp $
- */
-
-
-package org.jaxen.util;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * Simple utility class that wraps an iterator around one object.
- * This is a little more efficent than creating a one-object list.
- *
- */
-public class SingleObjectIterator implements Iterator
-{
-
- private Object object;
- private boolean seen;
-
- /**
- * Creates a new single object iterator.
- *
- * @param object the object to iterate over
- */
- public SingleObjectIterator(Object object)
- {
- this.object = object;
- this.seen = false;
- }
-
-
- /**
- * Returns true if this iterator's element has not yet been seen; false if it has.
- *
- * @return true if this iterator has another element; false if it doesn't
- *
- * @see java.util.Iterator#hasNext()
- */
- public boolean hasNext()
- {
- return ! this.seen;
- }
-
- /**
- * Returns the single element in this iterator if it has not yet
- * been seen.
- *
- * @return the next element in this iterator
- *
- * @throws NoSuchElementException if the element has already been seen
- *
- * @see java.util.Iterator#next()
- */
- public Object next()
- {
- if ( hasNext() )
- {
- this.seen = true;
- return this.object;
- }
-
- throw new NoSuchElementException();
- }
-
- /**
- * This operation is not supported.
- *
- * @throws UnsupportedOperationException always
- */
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/SingletonList.java b/src/java/main/org/jaxen/util/SingletonList.java
deleted file mode 100644
index a48bd06..0000000
--- a/src/java/main/org/jaxen/util/SingletonList.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/SingletonList.java,v 1.4 2006/11/09 16:39:19 elharo Exp $
- * $Revision: 1.4 $
- * $Date: 2006/11/09 16:39:19 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: SingletonList.java,v 1.4 2006/11/09 16:39:19 elharo Exp $
- */
-
-
-
-package org.jaxen.util;
-
-import java.util.AbstractList;
-
-/**
- * A utility class that implements singleton lists
- * (to avoid dependency on JDK 1.3). Many operations
- * including <code>add()</code> and <code>remove()</code> throw
- * UnsupportedOperationExceptions.
- *
- * @version 1.2b12
- * @author Attila Szegedi
- *
- */
-public class SingletonList extends AbstractList {
-
- private final Object element;
-
- /**
- * Creates a new singleton list.
- *
- * @param element the single member of the list
- */
- public SingletonList(Object element) {
- this.element = element;
- }
-
- /**
- * Returns 1.
- *
- * @return 1
- */
- public int size() {
- return 1;
- }
-
- /**
- * Returns the single element in the list.
- *
- * @return the only element in the list
- *
- * @throws IndexOutOfBoundsException if index is not 0
- *
- */
- public Object get(int index) {
- if(index == 0) {
- return element;
- }
- throw new IndexOutOfBoundsException(index + " != 0");
- }
-
-}
diff --git a/src/java/main/org/jaxen/util/StackedIterator.java b/src/java/main/org/jaxen/util/StackedIterator.java
deleted file mode 100644
index d614008..0000000
--- a/src/java/main/org/jaxen/util/StackedIterator.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/util/StackedIterator.java,v 1.12 2006/02/05 21:47:40 elharo Exp $
- * $Revision: 1.12 $
- * $Date: 2006/02/05 21:47:40 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: StackedIterator.java,v 1.12 2006/02/05 21:47:40 elharo Exp $
- */
-
-
-
-package org.jaxen.util;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.jaxen.Navigator;
-
-/**
- * @deprecated this iterator is no longer used to implement any of the Jaxen axes. If you have implemented
- * a navigator-specific axis based on this class, take a look at the DescendantAxisIterator for ideas
- * on how to remove that dependency.
- */
-public abstract class StackedIterator implements Iterator
-{
-
- private LinkedList iteratorStack;
- private Navigator navigator;
-
- private Set created;
-
- public StackedIterator(Object contextNode,
- Navigator navigator)
- {
- this.iteratorStack = new LinkedList();
- this.created = new HashSet();
-
- init( contextNode,
- navigator );
- }
-
- protected StackedIterator()
- {
- this.iteratorStack = new LinkedList();
- this.created = new HashSet();
- }
-
- protected void init(Object contextNode,
- Navigator navigator)
- {
- this.navigator = navigator;
-
- //pushIterator( internalCreateIterator( contextNode ) );
- }
-
- protected Iterator internalCreateIterator(Object contextNode)
- {
- if ( this.created.contains( contextNode ) )
- {
- return null;
- }
-
- this.created.add( contextNode );
-
- return createIterator( contextNode );
- }
-
- public boolean hasNext()
- {
- Iterator curIter = currentIterator();
-
- if ( curIter == null )
- {
- return false;
- }
-
- return curIter.hasNext();
- }
-
- public Object next() throws NoSuchElementException
- {
- if ( ! hasNext() )
- {
- throw new NoSuchElementException();
- }
-
- Iterator curIter = currentIterator();
- Object object = curIter.next();
-
- pushIterator( internalCreateIterator( object ) );
-
- return object;
- }
-
- public void remove() throws UnsupportedOperationException
- {
- throw new UnsupportedOperationException();
- }
-
- abstract protected Iterator createIterator(Object contextNode);
-
- protected void pushIterator(Iterator iter)
- {
- if ( iter != null )
- {
- this.iteratorStack.addFirst(iter); //addLast( iter );
- }
- }
-
- private Iterator currentIterator()
- {
- while ( iteratorStack.size() > 0 )
- {
- Iterator curIter = (Iterator) iteratorStack.getFirst();
-
- if ( curIter.hasNext() )
- {
- return curIter;
- }
-
- iteratorStack.removeFirst();
- }
-
- return null;
- }
-
- protected Navigator getNavigator()
- {
- return this.navigator;
- }
-}
diff --git a/src/java/main/org/jaxen/util/package.html b/src/java/main/org/jaxen/util/package.html
deleted file mode 100644
index 82c783c..0000000
--- a/src/java/main/org/jaxen/util/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.util.*
- </title>
- </head>
-
- <body>
- <p>
- Utility objects for walking object models.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/jaxen/xom/DocumentNavigator.java b/src/java/main/org/jaxen/xom/DocumentNavigator.java
deleted file mode 100644
index 6fd7362..0000000
--- a/src/java/main/org/jaxen/xom/DocumentNavigator.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/xom/DocumentNavigator.java,v 1.8 2006/06/03 20:02:50 elharo Exp $
- * $Revision: 1.8 $
- * $Date: 2006/06/03 20:02:50 $
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DocumentNavigator.java,v 1.8 2006/06/03 20:02:50 elharo Exp $
- */
-
-
-package org.jaxen.xom;
-
-
-import nu.xom.Attribute;
-import nu.xom.Comment;
-import nu.xom.Document;
-import nu.xom.Element;
-import nu.xom.ProcessingInstruction;
-import nu.xom.Text;
-import nu.xom.Node;
-import nu.xom.Builder;
-import nu.xom.NodeFactory;
-import nu.xom.ParentNode;
-
-import org.jaxen.XPath;
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.FunctionCallException;
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenConstants;
-import org.jaxen.util.SingleObjectIterator;
-
-import org.jaxen.saxpath.SAXPathException;
-
-import java.util.Iterator;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Interface for navigating around the XOM object model.
- *
- * <p>
- * This class is not intended for direct usage, but is
- * used by the Jaxen engine during evaluation.
- * </p>
- *
- * @see XPath
- *
- */
-public class DocumentNavigator extends org.jaxen.DefaultNavigator
-{
- /**
- *
- */
- private static final long serialVersionUID = 3159311338575942877L;
-
- public boolean isAttribute(Object o) {
- return o instanceof Attribute;
- }
-
- public boolean isComment(Object o) {
- return o instanceof Comment;
- }
-
- public boolean isDocument(Object o) {
- return o instanceof Document;
- }
-
- public boolean isElement(Object o) {
- return o instanceof Element;
- }
-
- public boolean isNamespace(Object o) {
- return o instanceof XPathNamespace;
- }
-
- public boolean isProcessingInstruction(Object o) {
- return o instanceof ProcessingInstruction;
- }
-
- public boolean isText(Object o) {
- return o instanceof Text;
- }
-
- //
-
- public String getAttributeName(Object o) {
- return (isAttribute(o) ? ((Attribute)o).getLocalName() : null);
- }
-
- public String getAttributeNamespaceUri(Object o) {
- return (isAttribute(o) ? ((Attribute)o).getNamespaceURI() : null);
- }
-
- public String getAttributeQName(Object o) {
- return (isAttribute(o) ? ((Attribute)o).getQualifiedName() : null);
- }
-
- public String getAttributeStringValue(Object o) {
- return (isAttribute(o) ? ((Attribute)o).getValue() : null);
- }
-
- //
-
- public String getCommentStringValue(Object o) {
- return (isComment(o) ? ((Comment)o).getValue() : null);
- }
-
- public String getElementName(Object o) {
- return (isElement(o) ? ((Element)o).getLocalName() : null);
- }
-
- public String getElementNamespaceUri(Object o) {
- return (isElement(o) ? ((Element)o).getNamespaceURI() : null);
- }
-
- public String getElementQName(Object o) {
- return (isElement(o) ? ((Element)o).getQualifiedName() : null);
- }
-
- public String getElementStringValue(Object o) {
- return (o instanceof Node ? ((Node)o).getValue() : null);
- }
-
- //
-
- public String getNamespacePrefix(Object o) {
- if (isElement(o)) {
- return ((Element)o).getNamespacePrefix();
- } else if (isAttribute(o)) {
- return ((Attribute)o).getNamespacePrefix();
- } else if (o instanceof XPathNamespace) {
- return ((XPathNamespace)o).getNamespacePrefix();
- }
- return null;
- }
-
- public String getNamespaceStringValue(Object o) {
- if (isElement(o)) {
- return ((Element)o).getNamespaceURI();
- } else if (isAttribute(o)) {
- return ((Attribute)o).getNamespaceURI();
- } else if (o instanceof XPathNamespace) {
- return ((XPathNamespace)o).getNamespaceURI();
- }
- return null;
- }
-
- //
-
- public String getTextStringValue(Object o) {
- return (o instanceof Text ? ((Text)o).getValue() : null);
- }
-
- //
-
- public Object getDocument(String s) throws FunctionCallException {
- try {
- return new Builder(new NodeFactory()).build(s);
- } catch (Exception pe) {
- throw new FunctionCallException(pe);
- }
- }
-
- public Object getDocumentNode(Object o) {
- ParentNode parent = null;
- if (o instanceof ParentNode) {
- parent = (ParentNode)o;
- } else if (o instanceof Node) {
- parent = ((Node)o).getParent();
- }
- return parent.getDocument();
- }
-
- //
-
- private abstract static class IndexIterator implements Iterator {
- private Object o = null;
- private int pos = 0, end = -1;
- public IndexIterator(Object o, int pos, int end) {
- this.o = o;
- this.pos = pos;
- this.end = end;
- }
- public boolean hasNext() {
- return pos < end;
- }
- public abstract Object get(Object o, int i);
-
- public Object next() {
- return get(o, pos++);
- }
-
- public void remove() {
- throw new UnsupportedOperationException();
- }
- }
-
- //
-
- public Iterator getAttributeAxisIterator(Object o) {
- if (isElement(o)) {
- return new IndexIterator(o, 0, ((Element)o).getAttributeCount()) {
- public Object get(Object o, int i) {
- return ((Element)o).getAttribute(i);
- }
- };
- }
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- public Iterator getChildAxisIterator(Object o) {
- if (isElement(o) || (o instanceof Document)) {
- return new IndexIterator(o, 0, ((ParentNode)o).getChildCount()) {
- public Object get(Object o, int i) {
- return ((ParentNode)o).getChild(i);
- }
- };
- }
- return JaxenConstants.EMPTY_ITERATOR;
- }
-
- //
-
- public Iterator getParentAxisIterator(Object o) {
- Object parent = null;
- if (o instanceof Node) {
- parent = ((Node)o).getParent();
- } else if (isNamespace(o)) {
- parent = ((XPathNamespace)o).getElement();
- }
- return (parent != null ? new SingleObjectIterator(parent) : null);
- }
-
- public Object getParentNode(Object o) {
- return (o instanceof Node ? ((Node)o).getParent() : null);
- }
-
- //
-
- public Iterator getPrecedingAxisIterator(Object o) throws UnsupportedAxisException {
- return super.getPrecedingAxisIterator(o);
- }
-
- public Iterator getPrecedingSiblingAxisIterator(Object o) throws UnsupportedAxisException {
- return super.getPrecedingSiblingAxisIterator(o);
- }
-
- //
-
- public String getProcessingInstructionData(Object o) {
- return (o instanceof ProcessingInstruction ? ((ProcessingInstruction)o).getValue() : null);
- }
-
- public String getProcessingInstructionTarget(Object o) {
- return (o instanceof ProcessingInstruction ? ((ProcessingInstruction)o).getTarget() : null);
- }
-
- //
-
- public String translateNamespacePrefixToUri(String s, Object o) {
- Element element = null;
- if (o instanceof Element) {
- element = (Element) o;
- } else if (o instanceof ParentNode) {
- }
- else if (o instanceof Node) {
- element = (Element)((Node)o).getParent();
- }
- else if (o instanceof XPathNamespace)
- {
- element = ((XPathNamespace)o).getElement();
- }
- if (element != null) {
- return element.getNamespaceURI(s);
- }
- return null;
- }
-
- //
-
- public XPath parseXPath(String s) throws SAXPathException {
- return new BaseXPath(s, this);
- }
-
- //
-
- /** Wrapper for XOM namespace nodes to give them a parent,
- * as required by the XPath data model.
- *
- * @author Erwin Bolwidt
- */
- private static class XPathNamespace
- {
- private Element element;
-
- private String uri, prefix;
-
- public XPathNamespace(Element elt, String uri, String prefix)
- {
- element = elt;
- this.uri = uri;
- this.prefix = prefix;
- }
-
- /** Returns the XOM element from which this namespace node has been
- * retrieved. The result may be null when the namespace node has not yet
- * been assigned to an element.
- */
- public Element getElement()
- {
- return element;
- }
-
- public String getNamespaceURI()
- {
- return uri;
- }
-
- public String getNamespacePrefix()
- {
- return prefix;
- }
-
- public String toString()
- {
- return ( "[xmlns:" + prefix + "=\"" +
- uri + "\", element=" +
- element.getLocalName() + "]" );
- }
- }
-
- //
-
- private boolean addNamespaceForElement(Element elt, String uri, String prefix, Map map)
- {
- if (uri != null && uri.length() > 0 && (! map.containsKey(prefix))) {
- map.put(prefix, new XPathNamespace(elt, uri, prefix));
- return true;
- }
- return false;
- }
-
- public Iterator getNamespaceAxisIterator(Object o)
- {
- if (! isElement(o)) {
- return JaxenConstants.EMPTY_ITERATOR;
- }
- Map nsMap = new HashMap();
- Element elt = (Element)o;
- ParentNode parent = elt;
-
- while (parent instanceof Element) {
- elt = (Element)parent;
- String uri = elt.getNamespaceURI();
- String prefix = elt.getNamespacePrefix();
- addNamespaceForElement(elt, uri, prefix, nsMap);
- int count = elt.getNamespaceDeclarationCount();
- for (int i = 0; i < count; i++) {
- prefix = elt.getNamespacePrefix(i);
- uri = elt.getNamespaceURI(prefix);
- addNamespaceForElement(elt, uri, prefix, nsMap);
- }
- parent = elt.getParent();
- }
- addNamespaceForElement(elt, "http://www.w3.org/XML/1998/namespace", "xml", nsMap);
-
- return nsMap.values().iterator();
- }
-}
diff --git a/src/java/main/org/jaxen/xom/XOMXPath.java b/src/java/main/org/jaxen/xom/XOMXPath.java
deleted file mode 100644
index 5ae058c..0000000
--- a/src/java/main/org/jaxen/xom/XOMXPath.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/xom/XOMXPath.java,v 1.6 2006/06/03 20:27:59 elharo Exp $
- * $Revision: 1.6 $
- * $Date: 2006/06/03 20:27:59 $
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XOMXPath.java,v 1.6 2006/06/03 20:27:59 elharo Exp $
- */
-
-
-package org.jaxen.xom;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenException;
-
-/** An XPath implementation for the XOM model
- *
- * <p>This is the main entry point for matching an XPath against a DOM
- * tree. You create a compiled XPath object, then match it against
- * one or more context nodes using the {@link #selectNodes(Object)}
- * method, as in the following example:</p>
- *
- * <pre>
- * Object xomNode = ...; // Document, Element etc.
- * XPath path = new XOMXPath("a/b/c");
- * List results = path.selectNodes(xomNode);
- * </pre>
- *
- * @see BaseXPath
- * @see <a href="http://www.xom.nu/">The XOM website</a>
- *
- * @version $Revision: 1.6 $
- */
-public class XOMXPath extends BaseXPath
-{
- /**
- *
- */
- private static final long serialVersionUID = -5332108546921857671L;
-
- /** Construct given an XPath expression string.
- *
- * @param xpathExpr the XPath expression.
- *
- * @throws JaxenException if there is a syntax error while
- * parsing the expression
- */
- public XOMXPath(String xpathExpr) throws JaxenException
- {
- super( xpathExpr, new DocumentNavigator());
- }
-}
diff --git a/src/java/main/org/jaxen/xom/package.html b/src/java/main/org/jaxen/xom/package.html
deleted file mode 100644
index d60432f..0000000
--- a/src/java/main/org/jaxen/xom/package.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<html>
- <head>
- <title>
- org.jaxen.xom.*
- </title>
- </head>
-
- <body>
- <p>
- Navigation for <a href="http://www.xom.nu/">XOM</a> trees.
- Note that XOM includes its own navigator which is likely
- faster and less buggy than this one, though it doesn't
- provide access to the full Jaxen API.
- </p>
- </body>
-</html>
diff --git a/src/java/main/org/w3c/dom/UserDataHandler.java b/src/java/main/org/w3c/dom/UserDataHandler.java
deleted file mode 100644
index 5778155..0000000
--- a/src/java/main/org/w3c/dom/UserDataHandler.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/** This is a W3C interface we include here so that NamespaceNode can compile in both
- * Java 1.4 and 1.5. It's owned by the W3C, and available under their usual
- * extremely liberal license so this shoudldn't bother anyone. (XPath itself
- * is under the same license after all.)
- */
-
-package org.w3c.dom;
-
-public interface UserDataHandler {
- // OperationType
- public static final short NODE_CLONED = 1;
- public static final short NODE_IMPORTED = 2;
- public static final short NODE_DELETED = 3;
- public static final short NODE_RENAMED = 4;
- public static final short NODE_ADOPTED = 5;
-
- public void handle(short operation,
- String key,
- Object data,
- Node src,
- Node dst);
-
-}
\ No newline at end of file
diff --git a/src/java/samples/DOMDemo.java b/src/java/samples/DOMDemo.java
deleted file mode 100644
index ae99f12..0000000
--- a/src/java/samples/DOMDemo.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/samples/DOMDemo.java,v 1.10 2006/02/05 21:48:50 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:48:50 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DOMDemo.java,v 1.10 2006/02/05 21:48:50 elharo Exp $
- */
-
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.w3c.dom.Document;
-
-import org.jaxen.dom.DOMXPath;
-
-import org.jaxen.XPath;
-import org.jaxen.XPathSyntaxException;
-import org.jaxen.JaxenException;
-
-import java.util.List;
-import java.util.Iterator;
-
-public class DOMDemo
-{
- public static void main(String[] args)
- {
- if ( args.length != 2 )
- {
- System.err.println("usage: DOMDemo <document url> <xpath expr>");
- System.exit( 1 );
- }
-
- try
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- Document doc = builder.parse( args[0] );
-
- XPath xpath = new DOMXPath( args[1] );
-
- System.out.println( "XPah:h " + xpath );
-
- List results = xpath.selectNodes( doc );
-
- Iterator resultIter = results.iterator();
-
- System.out.println("Document :: " + args[0] );
- System.out.println(" XPath :: " + args[1] );
- System.out.println("");
- System.out.println("Results" );
- System.out.println("----------------------------------");
-
- while ( resultIter.hasNext() )
- {
- System.out.println( resultIter.next() );
- }
- }
- catch (XPathSyntaxException e)
- {
- System.err.println( e.getMultilineMessage() );
- }
- catch (JaxenException e)
- {
- e.printStackTrace();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-}
diff --git a/src/java/samples/Dom4jDemo.java b/src/java/samples/Dom4jDemo.java
deleted file mode 100644
index 4942343..0000000
--- a/src/java/samples/Dom4jDemo.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/samples/Dom4jDemo.java,v 1.10 2006/02/05 21:48:50 elharo Exp $
- * $Revision: 1.10 $
- * $Date: 2006/02/05 21:48:50 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: Dom4jDemo.java,v 1.10 2006/02/05 21:48:50 elharo Exp $
- */
-
-
-import org.dom4j.Document;
-import org.dom4j.Node;
-import org.dom4j.io.SAXReader;
-
-import org.jaxen.XPath;
-import org.jaxen.XPathSyntaxException;
-import org.jaxen.JaxenException;
-
-import org.jaxen.dom4j.Dom4jXPath;
-
-import java.util.List;
-import java.util.Iterator;
-
-public class Dom4jDemo
-{
- public static void main(String[] args)
- {
- if ( args.length != 2 )
- {
- System.err.println("usage: Dom4jDemo <document url> <xpath expr>");
- System.exit( 1 );
- }
-
- try
- {
- SAXReader reader = new SAXReader();
-
- Document doc = reader.read( args[0] );
-
- XPath xpath = new Dom4jXPath( args[1] );
-
- List results = xpath.selectNodes( doc );
-
- Iterator resultIter = results.iterator();
-
- System.out.println("Document :: " + args[0] );
- System.out.println(" XPath :: " + args[1] );
- System.out.println("");
- System.out.println("Results" );
- System.out.println("----------------------------------");
-
- while ( resultIter.hasNext() )
- {
- Object object = resultIter.next();
- if ( object instanceof Node )
- {
- Node node = (Node) object;
- System.out.println( node.asXML() );
- }
- else
- {
- System.out.println( object );
- }
- }
- }
- catch (XPathSyntaxException e)
- {
- System.err.println( e.getMultilineMessage() );
- }
- catch (JaxenException e)
- {
- e.printStackTrace();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-}
diff --git a/src/java/samples/JDOMDemo.java b/src/java/samples/JDOMDemo.java
deleted file mode 100644
index ea2057a..0000000
--- a/src/java/samples/JDOMDemo.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/samples/JDOMDemo.java,v 1.7 2006/02/05 21:48:50 elharo Exp $
- * $Revision: 1.7 $
- * $Date: 2006/02/05 21:48:50 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: JDOMDemo.java,v 1.7 2006/02/05 21:48:50 elharo Exp $
- */
-
-
-import org.jdom.Document;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-
-import org.jaxen.XPath;
-import org.jaxen.XPathSyntaxException;
-import org.jaxen.JaxenException;
-
-import org.jaxen.jdom.JDOMXPath;
-
-import java.util.List;
-import java.util.Iterator;
-
-public class JDOMDemo
-{
- public static void main(String[] args)
- {
- if ( args.length != 2 )
- {
- System.err.println("usage: JDOMDemo <document url> <xpath expr>");
- System.exit( 1 );
- }
-
- try
- {
- SAXBuilder builder = new SAXBuilder();
-
- Document doc = builder.build( args[0] );
-
- XPath xpath = new JDOMXPath( args[1] );
-
- List results = xpath.selectNodes( doc );
-
- Iterator resultIter = results.iterator();
-
- System.out.println("Document :: " + args[0] );
- System.out.println(" XPath :: " + args[1] );
- System.out.println("");
- System.out.println("Results" );
- System.out.println("----------------------------------");
-
- while ( resultIter.hasNext() )
- {
- System.out.println( resultIter.next() );
- }
- }
- catch (JDOMException e)
- {
- e.printStackTrace();
- }
- catch (XPathSyntaxException e)
- {
- System.err.println( e.getMultilineMessage() );
- }
- catch (JaxenException e)
- {
- e.printStackTrace();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-}
diff --git a/src/java/test/org/jaxen/test/AddNamespaceTest.java b/src/java/test/org/jaxen/test/AddNamespaceTest.java
deleted file mode 100644
index 9bbb4aa..0000000
--- a/src/java/test/org/jaxen/test/AddNamespaceTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import org.jaxen.NamespaceContext;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.saxpath.SAXPathException;
-
-public class AddNamespaceTest extends TestCase
-{
- public AddNamespaceTest(String name)
- {
- super( name );
- }
-
- public void testDefaultContext() throws SAXPathException
- {
- XPath xpath = new DOMXPath("foo");
- xpath.addNamespace("cheese",
- "http://cheese.org");
- xpath.addNamespace("squeeze",
- "http://squeeze.org");
- NamespaceContext nsContext = xpath.getNamespaceContext();
- assertEquals( "http://cheese.org",
- nsContext.translateNamespacePrefixToUri( "cheese" ) );
- assertEquals( "http://squeeze.org",
- nsContext.translateNamespacePrefixToUri( "squeeze" ) );
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/AncestorOrSelfAxisIteratorTest.java b/src/java/test/org/jaxen/test/AncestorOrSelfAxisIteratorTest.java
deleted file mode 100644
index 6da4efa..0000000
--- a/src/java/test/org/jaxen/test/AncestorOrSelfAxisIteratorTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.util.AncestorOrSelfAxisIterator;
-import org.w3c.dom.Document;
-
-import junit.framework.TestCase;
-
-public class AncestorOrSelfAxisIteratorTest extends TestCase {
-
- private Iterator iterator;
-
- public AncestorOrSelfAxisIteratorTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- doc.appendChild(doc.createElement("root"));
-
- iterator = new AncestorOrSelfAxisIterator(doc, new org.jaxen.dom.DocumentNavigator());
-
- }
-
-
- public void testNoInfiniteLoops() {
-
- iterator.next();
- try {
- iterator.next();
- fail("Iterated twice");
- }
- catch (NoSuchElementException ex) {
- }
-
- }
-
-
- public void testRemove() {
-
- try {
- iterator.remove();
- fail("Removed from iterator");
- }
- catch (UnsupportedOperationException ex) {
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/ArithmeticTest.java b/src/java/test/org/jaxen/test/ArithmeticTest.java
deleted file mode 100644
index 4d9a014..0000000
--- a/src/java/test/org/jaxen/test/ArithmeticTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class ArithmeticTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- }
-
-
- public ArithmeticTest(String name) {
- super(name);
- }
-
- public void testNumbersThatBeginWithADecimalPoint()
- throws JaxenException {
-
- XPath xpath = new DOMXPath(".5 > .4");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
-
- }
-
-
- public void testNumbersThatBeginWithADecimalPoint2()
- throws JaxenException {
-
- XPath xpath = new DOMXPath(".3 <= .4 <= 1.1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
-
- }
-
- public void testLeftAssociativityOfLessThanOrEqual()
- throws JaxenException {
-
- XPath xpath = new DOMXPath(".3 <= .4 <= 0.9");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/AxisTest.java b/src/java/test/org/jaxen/test/AxisTest.java
deleted file mode 100644
index 5bd52aa..0000000
--- a/src/java/test/org/jaxen/test/AxisTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import org.jaxen.JaxenRuntimeException;
-import org.jaxen.saxpath.Axis;
-
-import junit.framework.TestCase;
-
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class AxisTest extends TestCase {
-
- public AxisTest(String name) {
- super(name);
- }
-
- public void testIllegalAxisNumber() {
- try {
- Axis.lookup(-10009);
- fail("Looked up negative number");
- }
- catch (JaxenRuntimeException ex) {
- assertEquals("Illegal Axis Number", ex.getMessage());
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/BaseTests.java b/src/java/test/org/jaxen/test/BaseTests.java
deleted file mode 100644
index 2ca1195..0000000
--- a/src/java/test/org/jaxen/test/BaseTests.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect the org.jaxen.saxpath.base tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class BaseTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(XPathReaderTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/BaseXPathTest.java b/src/java/test/org/jaxen/test/BaseXPathTest.java
deleted file mode 100644
index df82e3d..0000000
--- a/src/java/test/org/jaxen/test/BaseXPathTest.java
+++ /dev/null
@@ -1,1163 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenException;
-import org.jaxen.NamespaceContext;
-import org.jaxen.SimpleNamespaceContext;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.dom.DocumentNavigator;
-import org.jaxen.dom.NamespaceNode;
-import org.jaxen.pattern.Pattern;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXException;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Tests for org.jaxen.BaseXPath.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b10
- *
- */
-public class BaseXPathTest extends TestCase {
-
- private org.w3c.dom.Document doc;
- private DocumentBuilder builder;
-
- public BaseXPathTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- doc = factory.newDocumentBuilder().newDocument();
- builder = factory.newDocumentBuilder();
-
- }
-
- public void testSelectSingleNodeForContext() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("1 + 2");
-
- String stringValue = xpath.stringValueOf(xpath);
- assertEquals("3", stringValue);
-
- Number numberValue = xpath.numberValueOf(xpath);
- assertEquals(3, numberValue.doubleValue(), 0.00001);
-
- }
-
-
- public void testParentOfSelection() throws JaxenException {
- /*
- html
- a
- img
- a <- return that node
- img <- select this node
- */
- XPath xpath = new DOMXPath("(/html/a/img[contains(@src,'gif')])[2]/..");
- org.w3c.dom.Element html = doc.createElementNS("", "html");
- org.w3c.dom.Element a1 = doc.createElementNS("", "a");
- org.w3c.dom.Element a2 = doc.createElementNS("", "a");
- org.w3c.dom.Element img1 = doc.createElementNS("", "img");
- org.w3c.dom.Attr img1_src = doc.createAttributeNS("", "src");
- img1_src.setValue("1.gif");
- org.w3c.dom.Element img2 = doc.createElementNS("", "img");
- org.w3c.dom.Attr img2_src = doc.createAttributeNS("", "src");
- img2_src.setValue("2.gif");
-
- img1.setAttributeNode(img1_src);
- img2.setAttributeNode(img2_src);
- a1.appendChild(img1);
- a2.appendChild(img2);
- html.appendChild(a1);
- html.appendChild(a2);
- doc.appendChild(html);
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(a2, result.get(0));
- }
-
-
-
-
- public void testEvaluateString() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("string(/*)");
-
- doc.appendChild(doc.createElement("root"));
- String stringValue = (String) xpath.evaluate(doc);
- assertEquals("", stringValue);
-
- }
-
-
- public void testNumberValueOfEmptyNodeSetIsNaN() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/x");
-
- doc.appendChild(doc.createElement("root"));
- Double numberValue = (Double) xpath.numberValueOf(doc);
- assertTrue(numberValue.isNaN());
-
- }
-
-
- public void testPathWithParentheses() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("(/root)/child");
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElement("child");
- root.appendChild(child);
-
- assertEquals(child, xpath.selectSingleNode(doc));
-
- }
-
-
- public void testEvaluateWithMultiNodeAnswer() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("(/descendant-or-self::node())");
-
- doc.appendChild(doc.createElement("root"));
- List result = (List) xpath.evaluate(doc);
- assertEquals(2, result.size());
-
- }
-
-
- public void testValueOfEmptyListIsEmptyString() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/element");
- doc.appendChild(doc.createElement("root"));
-
- String stringValue = xpath.stringValueOf(doc);
- assertEquals("", stringValue);
-
- }
-
- public void testAllNodesQuery() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//. | /");
- org.w3c.dom.Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
-
- String stringValue = xpath.stringValueOf(doc);
- assertEquals("", stringValue);
-
- }
-
-
- public void testAncestorAxis() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ancestor::*");
- org.w3c.dom.Element root = doc.createElementNS("", "root");
- org.w3c.dom.Element parent = doc.createElementNS("", "parent");
- doc.appendChild(root);
- org.w3c.dom.Element child = doc.createElementNS("", "child");
- root.appendChild(parent);
- parent.appendChild(child);
-
- List result = xpath.selectNodes(child);
- assertEquals(2, result.size());
- assertEquals(root, result.get(0));
- assertEquals(parent, result.get(1));
-
- }
-
-
- public void testPrecedingSiblingAxisIsInDocumentOrder() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("preceding-sibling::*");
- org.w3c.dom.Element root = doc.createElementNS("", "root");
- doc.appendChild(root);
- org.w3c.dom.Element child1 = doc.createElementNS("", "child1");
- root.appendChild(child1);
- org.w3c.dom.Element child2 = doc.createElementNS("", "child2");
- root.appendChild(child2);
- org.w3c.dom.Element child3 = doc.createElementNS("", "child3");
- root.appendChild(child3);
-
- List result = xpath.selectNodes(child3);
- assertEquals(2, result.size());
- assertEquals(child1, result.get(0));
- assertEquals(child2, result.get(1));
-
- }
-
-
- public void testPrecedingAxisIsInDocumentOrder() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("preceding::*");
- org.w3c.dom.Element root = doc.createElementNS("", "root");
- doc.appendChild(root);
- org.w3c.dom.Element parent1 = doc.createElementNS("", "parent1");
- root.appendChild(parent1);
- org.w3c.dom.Element parent2 = doc.createElementNS("", "parent2");
- root.appendChild(parent2);
- org.w3c.dom.Element child1 = doc.createElementNS("", "child1");
- parent2.appendChild(child1);
- org.w3c.dom.Element child2 = doc.createElementNS("", "child2");
- parent2.appendChild(child2);
- org.w3c.dom.Element child3 = doc.createElementNS("", "child3");
- parent2.appendChild(child3);
-
- List result = xpath.selectNodes(child3);
- assertEquals(3, result.size());
- assertEquals(parent1, result.get(0));
- assertEquals(child1, result.get(1));
- assertEquals(child2, result.get(2));
-
- }
-
-
- public void testPrecedingAxisWithPositionalPredicate() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("preceding::*[1]");
- org.w3c.dom.Element root = doc.createElementNS("", "root");
- doc.appendChild(root);
- org.w3c.dom.Element child1 = doc.createElementNS("", "child1");
- root.appendChild(child1);
- org.w3c.dom.Element child2 = doc.createElementNS("", "child2");
- root.appendChild(child2);
- org.w3c.dom.Element child3 = doc.createElementNS("", "child3");
- root.appendChild(child3);
-
- List result = xpath.selectNodes(child3);
- assertEquals(1, result.size());
- assertEquals(child2, result.get(0));
-
- }
-
-
- public void testAncestorAxisWithPositionalPredicate() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ancestor::*[1]");
- org.w3c.dom.Element root = doc.createElementNS("", "root");
- doc.appendChild(root);
- org.w3c.dom.Element child1 = doc.createElementNS("", "child1");
- root.appendChild(child1);
- org.w3c.dom.Element child2 = doc.createElementNS("", "child2");
- child1.appendChild(child2);
- org.w3c.dom.Element child3 = doc.createElementNS("", "child3");
- child2.appendChild(child3);
-
- List result = xpath.selectNodes(child3);
- assertEquals(1, result.size());
- assertEquals(child2, result.get(0));
-
- }
-
-
- public void testAncestorOrSelfAxis() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ancestor-or-self::*");
- org.w3c.dom.Element root = doc.createElementNS("", "root");
- org.w3c.dom.Element parent = doc.createElementNS("", "parent");
- doc.appendChild(root);
- org.w3c.dom.Element child = doc.createElementNS("", "child");
- root.appendChild(parent);
- parent.appendChild(child);
-
- List result = xpath.selectNodes(child);
- assertEquals(3, result.size());
- assertEquals(root, result.get(0));
- assertEquals(parent, result.get(1));
- assertEquals(child, result.get(2));
-
- }
-
-
- // test case for JAXEN-55
- public void testAbbreviatedDoubleSlashAxis() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//x");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(4, result.size());
- assertEquals(x1, result.get(0));
- assertEquals(x2, result.get(1));
- assertEquals(x3, result.get(2));
- assertEquals(x4, result.get(3));
-
- }
-
-
- // test case for JAXEN-55
- public void testAncestorFollowedByChildren() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/a/b/x/ancestor::*/child::x");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(4, result.size());
- assertEquals(x1, result.get(0));
- assertEquals(x2, result.get(1));
- assertEquals(x3, result.get(2));
- assertEquals(x4, result.get(3));
-
- }
-
-
- // test case for JAXEN-55
- public void testDescendantAxis() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/descendant::x");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(4, result.size());
- assertEquals(x1, result.get(0));
- assertEquals(x2, result.get(1));
- assertEquals(x3, result.get(2));
- assertEquals(x4, result.get(3));
-
- }
-
- public void testDescendantAxisWithAttributes() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/descendant::x/@*");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
-
- Attr a1 = doc.createAttribute("name");
- a1.setNodeValue("1");
- x1.setAttributeNode(a1);
- Attr a2 = doc.createAttribute("name");
- a2.setNodeValue("2");
- x2.setAttributeNode(a2);
- Attr a3 = doc.createAttribute("name");
- a3.setNodeValue("3");
- x3.setAttributeNode(a3);
- Attr a4 = doc.createAttribute("name");
- a4.setNodeValue("4");
- x4.setAttributeNode(a4);
-
- List result = xpath.selectNodes(doc);
- assertEquals(4, result.size());
- assertEquals(a1, result.get(0));
- assertEquals(a2, result.get(1));
- assertEquals(a3, result.get(2));
- assertEquals(a4, result.get(3));
-
- }
-
- public void testDescendantAxisWithNamespaceNodes() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/descendant::x/namespace::node()");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
-
- Attr a1 = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:a");
- a1.setNodeValue("http://www.example.org/");
- x1.setAttributeNode(a1);
- Attr a2 = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:b");
- a2.setNodeValue("http://www.example.org/");
- x2.setAttributeNode(a2);
- Attr a3 = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:c");
- a3.setNodeValue("http://www.example.org/");
- x3.setAttributeNode(a3);
- Attr a4 = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:d");
- a4.setNodeValue("http://www.example.org/");
- x4.setAttributeNode(a4);
-
- List result = xpath.selectNodes(doc);
- assertEquals(8, result.size());
- Iterator iterator = result.iterator();
- StringBuffer sb = new StringBuffer(4);
- while (iterator.hasNext()) {
- NamespaceNode ns = (NamespaceNode) iterator.next();
- if (ns.getNodeValue().equals("http://www.example.org/")) {
- String name = ns.getNodeName();
- sb.append(name);
- }
- }
- assertEquals("abcd", sb.toString());
-
- }
-
- public void testMultipleAttributesOnElement() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/descendant::x/@*");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- a.appendChild(x1);
- a.appendChild(b);
-
- Attr a1 = doc.createAttribute("name1");
- a1.setNodeValue("1");
- x1.setAttributeNode(a1);
- Attr a2 = doc.createAttribute("name2");
- a2.setNodeValue("2");
- x1.setAttributeNode(a2);
- Attr a3 = doc.createAttribute("name3");
- a3.setNodeValue("3");
- x1.setAttributeNode(a3);
- Attr a4 = doc.createAttribute("name4");
- a4.setNodeValue("4");
- x1.setAttributeNode(a4);
-
- List result = xpath.selectNodes(doc);
- assertEquals(4, result.size());
- assertTrue(result.contains(a1));
- assertTrue(result.contains(a2));
- assertTrue(result.contains(a3));
- assertTrue(result.contains(a4));
-
- }
-
- public void testXMLNamespaceAttributeOrderOnAncestorAxis()
- throws JaxenException {
-
- org.w3c.dom.Element superroot = doc.createElement("superroot");
- doc.appendChild(superroot);
- org.w3c.dom.Element root = doc.createElement("root");
- superroot.appendChild(root);
-
- org.w3c.dom.Attr p0 = doc.createAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:id");
- p0.setValue("p0");
- superroot.setAttributeNodeNS(p0);
- org.w3c.dom.Attr p1 = doc.createAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:id");
- p1.setValue("p1");
- root.setAttributeNodeNS(p1);
-
- org.w3c.dom.Element child = doc.createElement("child312");
- root.appendChild(child);
-
- BaseXPath xpath = new DOMXPath("ancestor::*/@xml:*");
- List result = xpath.selectNodes(child);
- assertEquals(2, result.size());
- assertEquals(p0, result.get(0));
- assertEquals(p1, result.get(1));
-
- }
-
- public void testDescendantAxisWithAttributesAndChildren() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/descendant::x/@* | /descendant::x");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
-
- Attr a1 = doc.createAttribute("name");
- a1.setNodeValue("1");
- x1.setAttributeNode(a1);
- Attr a2 = doc.createAttribute("name");
- a2.setNodeValue("2");
- x2.setAttributeNode(a2);
- Attr a3 = doc.createAttribute("name");
- a3.setNodeValue("3");
- x3.setAttributeNode(a3);
- Attr a4 = doc.createAttribute("name");
- a4.setNodeValue("4");
- x4.setAttributeNode(a4);
-
- List result = xpath.selectNodes(doc);
- assertEquals(8, result.size());
- assertEquals(x1, result.get(0));
- assertEquals(a1, result.get(1));
- assertEquals(x2, result.get(2));
- assertEquals(a2, result.get(3));
- assertEquals(x3, result.get(4));
- assertEquals(a3, result.get(5));
- assertEquals(x4, result.get(6));
- assertEquals(a4, result.get(7));
-
- }
-
- public void testAncestorAxisWithAttributes() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ancestor::*/@*");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- b.appendChild(x3);
-
- Attr a1 = doc.createAttribute("name");
- a1.setNodeValue("1");
- a.setAttributeNode(a1);
- Attr a2 = doc.createAttribute("name");
- a2.setNodeValue("2");
- b.setAttributeNode(a2);
- Attr a3 = doc.createAttribute("name");
- x3.setNodeValue("3");
- x3.setAttributeNode(a3);
-
- List result = xpath.selectNodes(x3);
- assertEquals(2, result.size());
- assertEquals(a1, result.get(0));
- assertEquals(a2, result.get(1));
-
- }
-
- // test for Jaxen-83
- public void testPrincipalNodeTypeOfSelfAxisIsElement() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("child/@*[self::test]");
- org.w3c.dom.Element a = doc.createElementNS("", "child");
- org.w3c.dom.Attr test = doc.createAttributeNS("", "test");
- test.setValue("value");
- a.setAttributeNode(test);
- doc.appendChild(a);
-
- List result = xpath.selectNodes(doc);
- assertEquals(0, result.size());
-
- }
-
- // test to make sure Jaxen-83 fix doesn't go too far
- public void testSelfAxisWithNodeTestCanReturnNonPrincipalNodeType() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("child/@*[self::node()]");
- org.w3c.dom.Element a = doc.createElementNS("", "child");
- org.w3c.dom.Attr test = doc.createAttributeNS("", "test");
- test.setValue("value");
- a.setAttributeNode(test);
- doc.appendChild(a);
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
-
- }
-
- // another Jaxen-55 test to try to pin down exactly what does
- // and doesn't work
- public void testDescendantOrSelfAxis() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/descendant-or-self::x");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(4, result.size());
- assertEquals(x1, result.get(0));
- assertEquals(x2, result.get(1));
- assertEquals(x3, result.get(2));
- assertEquals(x4, result.get(3));
-
- }
-
-
- public void testDuplicateNodes() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//x | //*");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(6, result.size());
-
- }
-
- public void testUnionOfNodesWithNonNodes() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("count(//*) | //x ");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed union with non-node-set");
- }
- catch (JaxenException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testUnionOfEmptyNodeSetWithNonNodes() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//y | count(//*)");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- b.appendChild(x2);
- x2.appendChild(doc.createTextNode("2"));
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed union with non-node-set");
- }
- catch (JaxenException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testSelectSingleNodeSelectsNothing()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("id('p1')");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- Object result = xpath.selectSingleNode(doc);
- assertNull(result);
-
- }
-
- public void testSAXPathExceptionThrownFromConstructor() {
-
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "java.lang.String" );
-
- try {
- new DOMXPath("id('p1')");
- }
- catch (JaxenException e) {
- assertNotNull(e.getMessage());
- }
- finally {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "" );
- }
-
- }
-
- public void testBooleanValueOfEmptyNodeSetIsFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/b/c");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- List result = xpath.selectNodes(doc);
- assertTrue(! xpath.booleanValueOf(result));
-
- }
-
- public void testAddNamespaceWithNonSimpleNamespaceContext() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/b/c");
- xpath.setNamespaceContext(new NamespaceContext() {
-
- public String translateNamespacePrefixToUri(String prefix) {
- return prefix;
- }
-
- });
- try {
- xpath.addNamespace("pre", "foo");
- fail("Added namespace");
- }
- catch (JaxenException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testDebug() throws JaxenException {
- BaseXPath xpath = new DOMXPath("/b/c");
- assertEquals(
- "[(DefaultXPath): [(DefaultAbsoluteLocationPath): [(DefaultNameStep): b]/[(DefaultNameStep): c]]]",
- xpath.debug()
- );
-
- }
-
- public void testGetRootExpr() throws JaxenException {
- BaseXPath xpath = new DOMXPath("/b/c");
- assertTrue(xpath.getRootExpr() instanceof org.jaxen.expr.LocationPath);
- }
-
- public void testUnionUsesDocumentOrder() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("/descendant::x | /a | /a/b");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- x1.appendChild(doc.createTextNode("1"));
- a.appendChild(x1);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(6, result.size());
- assertEquals(a, result.get(0));
- assertEquals(x1, result.get(1));
- assertEquals(b, result.get(2));
- assertEquals(x2, result.get(3));
- assertEquals(x3, result.get(4));
- assertEquals(x4, result.get(5));
-
- }
-
- public void testArithmeticAssociativity() throws JaxenException {
- XPath xpath = new DOMXPath("2+1-1+1");
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(3, result.intValue());
- }
-
- public void testLogicalAssociativity() throws JaxenException {
- XPath xpath = new DOMXPath("false() or true() and true() and false()");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testRelationalAssociativity3() throws JaxenException {
- XPath xpath = new DOMXPath("3 > 2 > 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testRelationalAssociativity4() throws JaxenException {
- XPath xpath = new DOMXPath("4 > 3 > 2 > 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testRelationalGTAssociativity5() throws JaxenException {
- XPath xpath = new DOMXPath("5 > 4 > 3 > 2 > 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testRelationalLTAssociativity5() throws JaxenException {
- XPath xpath = new DOMXPath("1 < 2 < 3 < 4 < 5");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- public void testRelationalLEAssociativity5() throws JaxenException {
- XPath xpath = new DOMXPath("1 <= 2 <= 3 <= 4 <= 5");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- public void testRelationalGEAssociativity5() throws JaxenException {
- XPath xpath = new DOMXPath("5 >= 4 >= 3 >= 2 >= 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testRelationalGEAssociativity3() throws JaxenException {
- XPath xpath = new DOMXPath("3 >= 2 >= 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- public void testRelationalGEAssociativity2() throws JaxenException {
- XPath xpath = new DOMXPath("2 >= 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- public void testRelationalGEAssociativity4() throws JaxenException {
- XPath xpath = new DOMXPath("4 >= 3 >= 2 >= 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- // This is the same test but with parentheses to make explicit
- // how the previous test should be evaluated.
- public void testRelationalAssociativity5P() throws JaxenException {
- XPath xpath = new DOMXPath("((((5 > 4) > 3) > 2) > 1)");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testInequalityAssociativity5() throws JaxenException {
- XPath xpath = new DOMXPath("2 != 3 != 1 != 4 != 0");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- // This is the same test but with parentheses to make explicit
- // how the previous test should be evaluated.
- public void testInequalityAssociativity5P() throws JaxenException {
- XPath xpath = new DOMXPath("(((2 != 3) != 1) != 4) != 0");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- public void testInequalityAssociativity5B() throws JaxenException {
- XPath xpath = new DOMXPath("2 != 3 != 1 != 4 != 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- // This is the same test but with parentheses to make explicit
- // how the previous test should be evaluated.
- public void testInequalityAssociativity5BP() throws JaxenException {
- XPath xpath = new DOMXPath("(((2 != 3) != 1) != 4) != 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testEqualityAssociativity5() throws JaxenException {
- XPath xpath = new DOMXPath("2 = 3 = 1 = 4 = 0");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- // This is the same test but with parentheses to make explicit
- // how the previous test should be evaluated.
- public void testEqualityAssociativity5P() throws JaxenException {
- XPath xpath = new DOMXPath("(((2 = 3) = 1) = 4) = 0");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- public void testEqualityAssociativity5B() throws JaxenException {
- XPath xpath = new DOMXPath("2 = 3 = 1 = 4 = 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- // This is the same test but with parentheses to make explicit
- // how the previous test should be evaluated.
- public void testEqualityAssociativity5BP() throws JaxenException {
- XPath xpath = new DOMXPath("(((2 = 3) = 1) = 4) = 1");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testMoreComplexArithmeticAssociativity() throws JaxenException {
- XPath xpath = new DOMXPath("1+2+1-1+1");
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(4, result.intValue());
- }
-
-
- public void testMostComplexArithmeticAssociativity() throws JaxenException {
- XPath xpath = new DOMXPath("1+1+2+1-1+1");
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(5, result.intValue());
- }
-
-
- public void testSimplerArithmeticAssociativity() throws JaxenException {
- XPath xpath = new DOMXPath("1-1+1");
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(1, result.intValue());
- }
-
-
- public void testNamespaceNodesComeBeforeAttributeNodesInDocumentOrder() throws JaxenException {
-
- org.w3c.dom.Element root = doc.createElementNS("http://www.example.org", "pre:b");
- doc.appendChild(root);
- root.setAttribute("name", "value");
- XPath xpath = new DOMXPath("/*/attribute::* | /*/namespace::node()");
- List result = xpath.selectNodes(doc);
- assertTrue(((org.w3c.dom.Node) result.get(0)).getNodeType() == Pattern.NAMESPACE_NODE);
- assertTrue(((org.w3c.dom.Node) result.get(1)).getNodeType() == Pattern.NAMESPACE_NODE);
- assertTrue(((org.w3c.dom.Node) result.get(2)).getNodeType() == Node.ATTRIBUTE_NODE);
-
- // now flip the order of the statement and retest
- xpath = new DOMXPath("/*/namespace::node() | /*/attribute::* ");
- result = xpath.selectNodes(doc);
- assertTrue(((org.w3c.dom.Node) result.get(0)).getNodeType() == Pattern.NAMESPACE_NODE);
- assertTrue(((org.w3c.dom.Node) result.get(1)).getNodeType() == Pattern.NAMESPACE_NODE);
- assertTrue(((org.w3c.dom.Node) result.get(2)).getNodeType() == Node.ATTRIBUTE_NODE);
-
- }
-
- public void testJaxen97() throws JaxenException {
- // jaxen 97 claims this expression throws an exception.
- new DOMXPath("/aaa:element/text()");
- }
-
- public void testAttributeNodesOnParentComeBeforeNamespaceNodesInChildInDocumentOrder()
- throws JaxenException {
-
- org.w3c.dom.Element root = doc.createElement("root");
- doc.appendChild(root);
- root.setAttribute("name", "value");
- Element child = doc.createElementNS("http://www.example.org", "pre:child");
- root.appendChild(child);
-
- XPath xpath = new DOMXPath("/*/*/namespace::node() | //attribute::* ");
- List result = xpath.selectNodes(doc);
- assertEquals(3, result.size());
- assertTrue(((org.w3c.dom.Node) result.get(0)).getNodeType() == Node.ATTRIBUTE_NODE);
- assertTrue(((org.w3c.dom.Node) result.get(1)).getNodeType() == Pattern.NAMESPACE_NODE);
-
- }
-
- public void testJaxen107() throws JaxenException {
-
- org.w3c.dom.Element a = doc.createElementNS("http://www.a.com/", "a:foo");
- doc.appendChild(a);
- Element b = doc.createElementNS("http://www.b.com/", "b:bar");
- a.appendChild(b);
-
- XPath xpath = new DOMXPath("/a:foo/b:bar/namespace::*/parent::*");
- SimpleNamespaceContext context1 = new SimpleNamespaceContext();
- context1.addNamespace("a", "http://www.a.com/");
- context1.addNamespace("b", "http://www.b.com/");
- xpath.setNamespaceContext(context1);
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(b, result.get(0));
-
- }
-
-
- public void testJaxen107FromFile() throws JaxenException, SAXException, IOException {
-
- doc = builder.parse(new File("xml/testNamespaces.xml"));
- XPath xpath = new DOMXPath("/Template/Application2/namespace::*/parent::*");
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
-
- }
-
- public void testSelectNodesReturnsANonNodeSet() throws JaxenException {
- XPath xpath = new DOMXPath("1 + 2 + 3");
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- }
-
- public void testNonElementContextNode() throws JaxenException {
-
- org.w3c.dom.Element a = doc.createElementNS("http://www.a.com/", "a:foo");
- doc.appendChild(a);
- Text b = doc.createTextNode("ready");
- a.appendChild(b);
-
- XPath xpath = new DOMXPath("..");
- List result = (List) xpath.evaluate(b);
- assertEquals(1, result.size());
- assertEquals(a, result.get(0));
-
- }
-
- public void testNonNodeContext() throws JaxenException {
-
- org.w3c.dom.Element a = doc.createElementNS("http://www.a.com/", "a:foo");
- doc.appendChild(a);
- Text b = doc.createTextNode("ready");
- a.appendChild(b);
-
- XPath xpath = new DOMXPath("..");
- try {
- xpath.evaluate("String");
- fail("Allowed String as context");
- }
- catch (ClassCastException ex) {
- // success
- }
-
- }
-
- public void testIsSerializable() throws JaxenException, IOException {
-
- BaseXPath path = new BaseXPath("//foo", new DocumentNavigator());
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(out);
- oos.writeObject(path);
- oos.close();
- assertTrue(out.toByteArray().length > 0);
-
- }
-
-
-
-}
diff --git a/src/java/test/org/jaxen/test/BinaryExprTest.java b/src/java/test/org/jaxen/test/BinaryExprTest.java
deleted file mode 100644
index 658d13f..0000000
--- a/src/java/test/org/jaxen/test/BinaryExprTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/test/BinaryExprTest.java,v 1.2 2007/01/05 18:25:26 elharo Exp $
- * $Revision: 1.2 $
- * $Date: 2007/01/05 18:25:26 $
- *
- * ====================================================================
- *
- * Copyright 2007 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: BinaryExprTest.java,v 1.2 2007/01/05 18:25:26 elharo Exp $
- */
-
-
-
-package org.jaxen.test;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for various kinds of binary expressions.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1.1
- *
- */
-public class BinaryExprTest extends TestCase
-{
-
- public void testBooleanPrecedence()
- throws JaxenException, ParserConfigurationException {
-
- // Note how the parentheses change the precedence and the result
- DOMXPath xpath1 = new DOMXPath("false() and (false() or true())");
- Boolean result1 = (Boolean) xpath1.evaluate(null);
- assertFalse(result1.booleanValue());
- DOMXPath xpath2 = new DOMXPath("false() and false() or true()");
- Boolean result2 = (Boolean) xpath2.evaluate(null);
- assertTrue(result2.booleanValue());
-
- String expr = xpath1.getRootExpr().getText();
- DOMXPath xpath3 = new DOMXPath(expr);
- Boolean result3 = (Boolean) xpath3.evaluate(null);
- assertEquals(expr, result1, result3);
- assertFalse(expr, result3.booleanValue());
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/BooleanTest.java b/src/java/test/org/jaxen/test/BooleanTest.java
deleted file mode 100644
index a63a2a0..0000000
--- a/src/java/test/org/jaxen/test/BooleanTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class BooleanTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
-
- public BooleanTest(String name) {
- super(name);
- }
-
- // test case for JAXEN-55
- public void testNonEmptyNodeSetsAreTrue()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean(//x)");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("false"));
- x3.appendChild(doc.createTextNode("false"));
- x4.appendChild(doc.createTextNode("false"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(Boolean.TRUE, result.get(0));
-
- }
-
- public void testEmptyNodeSetsAreFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean(//y)");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("false"));
- x3.appendChild(doc.createTextNode("false"));
- x4.appendChild(doc.createTextNode("false"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(Boolean.FALSE, result.get(0));
-
- }
-
- public void testZeroIsFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean(0)");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
-
- List result = xpath.selectNodes(a);
- assertEquals(1, result.size());
- assertEquals(Boolean.FALSE, result.get(0));
-
- }
-
- public void testEmptyStringIsFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean('')");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
-
- List result = xpath.selectNodes(a);
- assertEquals(1, result.size());
- assertEquals(Boolean.FALSE, result.get(0));
-
- }
-
- public void testNaNIsFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean(0 div 0)");
- Object result = xpath.evaluate(null);
- assertEquals(Boolean.FALSE, result);
-
- }
-
- public void testNonEmptyStringIsTrue()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean('false')");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
-
- List result = xpath.selectNodes(a);
- assertEquals(1, result.size());
- assertEquals(Boolean.TRUE, result.get(0));
-
- }
-
- public void testBooleanFunctionRequiresOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean()");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
-
- try {
- xpath.selectNodes(a);
- fail("Allowed boolean function with no arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testBooleanFunctionRequiresExactlyOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("boolean('', '')");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
-
- try {
- xpath.selectNodes(a);
- fail("Allowed boolean function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/CeilingTest.java b/src/java/test/org/jaxen/test/CeilingTest.java
deleted file mode 100644
index 63878db..0000000
--- a/src/java/test/org/jaxen/test/CeilingTest.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class CeilingTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- }
-
-
- public CeilingTest(String name) {
- super(name);
- }
-
-
-
- public void testCeiling() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ceiling(1.5)");
-
- Object result = xpath.evaluate(doc);
- assertEquals(2, ((Double) result).doubleValue(), 0.0001);
-
- }
-
- public void testNegativeCeiling() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ceiling(-1.5)");
-
- Object result = xpath.evaluate(doc);
- assertEquals(-1, ((Double) result).doubleValue(), 0.0001);
-
- }
-
- public void testNaNCeilingIsNaN() throws JaxenException {
- BaseXPath xpath = new DOMXPath("ceiling(1.0 div 0.0 - 2.0 div 0.0)");
- double result = ((Double) xpath.evaluate(doc)).doubleValue();
- assertTrue(Double.isNaN(result));
- }
-
- public void testCeilingFunctionRequiresAtLeastOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ceiling()");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed ceiling function with no arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testCeilingFunctionRequiresAtMostOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("ceiling(2.2, 1.2)");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed ceiling function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/ConcatTest.java b/src/java/test/org/jaxen/test/ConcatTest.java
deleted file mode 100644
index 98801db..0000000
--- a/src/java/test/org/jaxen/test/ConcatTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class ConcatTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public ConcatTest(String name) {
- super(name);
- }
-
- public void testConcatFunctionRequiresAtLeastTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("concat('a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed concat function with one argument");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/ConformanceXPathHandler.java b/src/java/test/org/jaxen/test/ConformanceXPathHandler.java
deleted file mode 100644
index 29db94f..0000000
--- a/src/java/test/org/jaxen/test/ConformanceXPathHandler.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.jaxen.saxpath.XPathHandler;
-
-class ConformanceXPathHandler implements XPathHandler
-{
- private List events;
-
- ConformanceXPathHandler()
- {
- this.events = new LinkedList();
- }
-
- public void startXPath()
- {
- addEvent( "startXPath()" );
- }
-
- public void endXPath()
- {
- addEvent( "endXPath()" );
- }
-
- public void startPathExpr()
- {
- addEvent( "startPathExpr()" );
- }
-
- public void endPathExpr()
- {
- addEvent( "endPathExpr()" );
- }
-
- public void startAbsoluteLocationPath()
- {
- addEvent( "startAbsoluteLocationPath()" );
- }
- public void endAbsoluteLocationPath()
- {
- addEvent( "endAbsoluteLocationPath()" );
- }
-
- public void startRelativeLocationPath()
- {
- addEvent( "startRelativeLocationPath()" );
- }
-
- public void endRelativeLocationPath()
- {
- addEvent( "endRelativeLocationPath()" );
- }
-
- public void startNameStep(int axis,
- String prefix,
- String localName)
- {
- addEvent( "startNameStep(" + axis + ", \"" + prefix + "\", \"" + localName + "\")" );
- }
-
- public void endNameStep()
- {
- addEvent( "endNameStep()" );
- }
-
- public void startTextNodeStep(int axis)
- {
- addEvent( "startTextNodeStep(" + axis + ")" );
- }
- public void endTextNodeStep()
- {
- addEvent( "endTextNodeStep()" );
- }
-
- public void startCommentNodeStep(int axis)
- {
- addEvent( "startCommentNodeStep(" + axis + ")" );
- }
-
- public void endCommentNodeStep()
- {
- addEvent( "endCommentNodeStep()" );
- }
-
- public void startAllNodeStep(int axis)
- {
- addEvent( "startAllNodeStep(" + axis + ")" );
- }
-
- public void endAllNodeStep()
- {
- addEvent( "endAllNodeStep()" );
- }
-
- public void startProcessingInstructionNodeStep(int axis,
- String name)
- {
- addEvent( "startProcessingInstructionNodeStep(" + axis + ", \"" + name + "\")" );
- }
- public void endProcessingInstructionNodeStep()
- {
- addEvent( "endProcessingInstructionNodeStep()" );
- }
-
- public void startPredicate()
- {
- addEvent( "startPredicate()" );
- }
-
- public void endPredicate()
- {
- addEvent( "endPredicate()" );
- }
-
- public void startFilterExpr()
- {
- addEvent( "startFilterExpr()" );
- }
-
- public void endFilterExpr()
- {
- addEvent( "endFilterExpr()" );
- }
-
- public void startOrExpr()
- {
- addEvent( "startOrExpr()" );
- }
-
- public void endOrExpr(boolean create)
- {
- addEvent( "endOrExpr(" + create + ")" );
- }
-
- public void startAndExpr()
- {
- addEvent( "startAndExpr()" );
- }
-
- public void endAndExpr(boolean create)
- {
- addEvent( "endAndExpr(" + create + ")" );
- }
-
- public void startEqualityExpr()
- {
- addEvent( "startEqualityExpr()" );
- }
-
- public void endEqualityExpr(int operator)
- {
- addEvent( "endEqualityExpr(" + operator + ")" );
- }
-
- public void startRelationalExpr()
- {
- addEvent( "startRelationalExpr()" );
- }
-
- public void endRelationalExpr(int operator)
- {
- addEvent( "endRelationalExpr(" + operator + ")" );
- }
-
- public void startAdditiveExpr()
- {
- addEvent( "startAdditiveExpr()" );
- }
-
- public void endAdditiveExpr(int operator)
- {
- addEvent( "endAdditiveExpr(" + operator + ")" );
- }
-
- public void startMultiplicativeExpr()
- {
- addEvent( "startMultiplicativeExpr()" );
- }
-
- public void endMultiplicativeExpr(int operator)
- {
- addEvent( "endMultiplicativeExpr(" + operator + ")" );
- }
-
- public void startUnaryExpr()
- {
- addEvent( "startUnaryExpr()" );
- }
-
- public void endUnaryExpr(int operator)
- {
- addEvent( "endUnaryExpr(" + operator + ")" );
- }
-
- public void startUnionExpr()
- {
- addEvent( "startUnionExpr()" );
- }
-
- public void endUnionExpr(boolean create)
- {
- addEvent( "endUnionExpr(" + create + ")" );
- }
-
- public void number(int number)
- {
- addEvent( "number(" + number + ")" );
- }
-
- public void number(double number)
- {
- addEvent( "number(" + number + ")" );
- }
-
- public void literal(String literal)
- {
- addEvent( "literal(\"" + literal + "\")" );
- }
-
- public void variableReference(String prefix,
- String variableName)
- {
- addEvent( "variableReference(\"" + prefix + ":" + variableName + "\")" );
- }
-
- public void startFunction(String prefix,
- String functionName)
- {
- addEvent( "startFunction(\"" + prefix + ":" + functionName + "\")" );
- }
-
- public void endFunction()
- {
- addEvent( "endFunction()" );
- }
-
- private void addEvent(String eventStr)
- {
- this.events.add( eventStr );
- }
-
- public boolean equals(Object thatObj)
- {
- if ( thatObj instanceof ConformanceXPathHandler )
- {
- ConformanceXPathHandler that = (ConformanceXPathHandler) thatObj;
-
- return ( this.events.equals( that.events ) );
- }
-
- return false;
- }
-
- public int hashCode() {
- return this.events.hashCode();
- }
-
-
- public String toString()
- {
- Iterator eventIter = this.events.iterator();
- int i = 0;
-
- StringBuffer buf = new StringBuffer();
-
- while( eventIter.hasNext() )
- {
- buf.append("(").append(i).append(") ").append( eventIter.next().toString() ).append("\n");
- ++i;
- }
-
- return buf.toString();
- }
-}
diff --git a/src/java/test/org/jaxen/test/ContainsTest.java b/src/java/test/org/jaxen/test/ContainsTest.java
deleted file mode 100644
index cc79442..0000000
--- a/src/java/test/org/jaxen/test/ContainsTest.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class ContainsTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public ContainsTest(String name) {
- super(name);
- }
-
- public void testContainsNumber() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains(33, '3')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testContainsString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains('test', 'es')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testContainsString3() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains('superlative', 'superlative')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testContainsNumber2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains(43, '0')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.FALSE, result);
- }
-
- public void testContainsString2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains('1234567890', '1234567a')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.FALSE, result);
- }
-
-
- public void testEmptyStringContainsNonEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains('', 'a')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.FALSE, result);
- }
-
- public void testEmptyStringContainsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains('', '')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testContainsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "contains('a', '')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testContainsFunctionRequiresAtLeastTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("contains('a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed contains function with one argument");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testContainsFunctionRequiresAtMostTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("contains('a', 'a', 'a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed contains function with three arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/ContextTest.java b/src/java/test/org/jaxen/test/ContextTest.java
deleted file mode 100644
index 1d18730..0000000
--- a/src/java/test/org/jaxen/test/ContextTest.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.Context;
-import org.jaxen.ContextSupport;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-public class ContextTest extends TestCase
-{
- private List nodeSet;
- private ContextSupport support;
-
- public ContextTest(String name)
- {
- super( name );
- }
-
- public void setUp()
- {
- this.nodeSet = new ArrayList();
-
- this.nodeSet.add( "one" );
- this.nodeSet.add( "two" );
- this.nodeSet.add( "three" );
- this.nodeSet.add( "four" );
-
- this.support = new ContextSupport();
- }
-
- public void tearDown()
- {
- this.nodeSet = null;
- }
-
- public void testSetNodeSet()
- {
- Context original = new Context( this.support );
- assertEquals(0, original.getNodeSet().size() );
- original.setNodeSet( this.nodeSet );
- assertEquals(4, original.getNodeSet().size() );
- }
-
- public void testShrinkNodeSet()
- {
-
- Context original = new Context( this.support );
- original.setNodeSet( this.nodeSet );
- original.setPosition(3);
- ArrayList list = new ArrayList();
- list.add("1");
- list.add("2");
- list.add("3");
- original.setNodeSet(list);
- assertEquals(0, original.getPosition());
-
- }
-
- public void testDuplicate()
- {
- Context original = new Context( this.support );
-
- original.setNodeSet( this.nodeSet );
-
- original.setSize( 4 );
- original.setPosition( 2 );
-
- Context dupe = original.duplicate();
-
- assertEquals(2, dupe.getPosition());
- assertEquals(4, dupe.getSize());
-
- assertTrue( original != dupe );
-
- List dupeNodeSet = dupe.getNodeSet();
-
- assertTrue( original.getNodeSet() != dupe.getNodeSet() );
-
- dupeNodeSet.clear();
-
- assertSame( dupeNodeSet,
- dupe.getNodeSet() );
-
- assertEquals( 0,
- dupe.getNodeSet().size() );
-
-
- assertEquals( 4,
- original.getNodeSet().size() );
-
- dupe.setSize( 0 );
- dupe.setPosition( 0 );
-
- assertEquals( 0,
- dupe.getSize() );
-
- assertEquals( 0,
- dupe.getPosition() );
-
- assertEquals( 4,
- original.getSize() );
-
- assertEquals( 2,
- original.getPosition() );
- }
-
-
- public void testXMLPrefixIsAlwaysBound()
- throws ParserConfigurationException, SAXException, IOException, JaxenException
- {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document doc = builder.parse( "xml/basic.xml" );
- Element root = doc.getDocumentElement();
- root.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "en");
- XPath xpath = new DOMXPath( "/*/@xml:lang" );
- List result = xpath.selectNodes( doc );
- assertEquals(1, result.size());
-
- }
-
-
- public void testIsSerializable() throws IOException {
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(out);
- oos.writeObject(support);
- oos.close();
- assertTrue(out.toByteArray().length > 0);
-
- }
-
-
-}
-
diff --git a/src/java/test/org/jaxen/test/CoreTests.java b/src/java/test/org/jaxen/test/CoreTests.java
deleted file mode 100644
index 9ac8005..0000000
--- a/src/java/test/org/jaxen/test/CoreTests.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect the org.jaxen. tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b12
- *
- */
-public class CoreTests extends TestCase {
-
-
- public CoreTests(String name) {
- super(name);
- }
-
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(AddNamespaceTest.class));
- result.addTest(new TestSuite(BaseXPathTest.class));
- result.addTest(new TestSuite(FunctionContextTest.class));
- result.addTest(new TestSuite(SimpleNamespaceContextTest.class));
- result.addTest(new TestSuite(ContextTest.class));
- result.addTest(new TestSuite(JaxenHandlerTest.class));
- result.addTest(new TestSuite(JaxenRuntimeExceptionTest.class));
- result.addTest(new TestSuite(FunctionCallExceptionTest.class));
- result.addTest(new TestSuite(UnresolvableExceptionTest.class));
- result.addTest(new TestSuite(VariableContextTest.class));
- result.addTest(new TestSuite(SimpleNamespaceContextTest.class));
- result.addTest(new TestSuite(XPathSyntaxExceptionTest.class));
- result.addTest(new TestSuite(UnsupportedAxisExceptionTest.class));
- result.addTest(new TestSuite(JaxenExceptionTest.class));
- result.addTest(new TestSuite(ArithmeticTest.class));
- result.addTest(new TestSuite(IterableAxisTest.class));
- result.addTest(new TestSuite(DefaultXPathFactoryTest.class));
- return result;
-
- }
-
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/CountTest.java b/src/java/test/org/jaxen/test/CountTest.java
deleted file mode 100644
index aa88c86..0000000
--- a/src/java/test/org/jaxen/test/CountTest.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.io.IOException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class CountTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException, SAXException, IOException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.parse( "xml/basic.xml" );
- }
-
-
- public CountTest(String name) {
- super(name);
- }
-
- public void testCount3()
- {
- try
- {
- XPath xpath = new DOMXPath( "count(3)" );
- xpath.selectNodes( doc );
- fail("Allowed count of number");
- }
- catch (FunctionCallException e)
- {
- assertEquals("count() function can only be used for node-sets", e.getMessage());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail( e.getMessage() );
- }
- }
-
- public void testCountFunctionRequiresAtLeastOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("count()");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed count function with no arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testCountFunctionRequiresAtMostOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("count(/*, /@*)");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed count function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testCountRootElement()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("count(/*)");
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(1.0, result.doubleValue(), 0.00001);
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/DOM3NamespaceTest.java b/src/java/test/org/jaxen/test/DOM3NamespaceTest.java
deleted file mode 100644
index b7f111f..0000000
--- a/src/java/test/org/jaxen/test/DOM3NamespaceTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.*;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.dom.NamespaceNode;
-import org.w3c.dom.*;
-
-import junit.framework.TestCase;
-
-public class DOM3NamespaceTest extends TestCase {
-
-
- private NamespaceNode xmlNS;
- private NamespaceNode rootNS;
- private NamespaceNode attributeNS;
-
-
- public DOM3NamespaceTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException, JaxenException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- org.w3c.dom.Element root = doc.createElementNS("http://www.root.com/", "root");
- doc.appendChild(root);
- Attr a = doc.createAttributeNS("http://www.example.org/", "pre:a");
- a.setNodeValue("value");
- root.setAttributeNode(a);
-
- XPath xpath = new DOMXPath("namespace::node()");
- List result = xpath.selectNodes(root);
-
- Iterator iterator = result.iterator();
- while (iterator.hasNext()) {
- NamespaceNode node = (NamespaceNode) iterator.next();
- if (node.getLocalName() == null) rootNS = node;
- else if (node.getLocalName().equals("xml")) xmlNS = node;
- else if (node.getLocalName().equals("pre")) attributeNS = node;
- }
-
- }
-
-
- public void testGetTextContent() {
- assertEquals("http://www.w3.org/XML/1998/namespace", xmlNS.getTextContent());
- }
-
- public void testSetTextContent() {
-
- try {
- rootNS.setTextContent("http://www.a.com");
- fail("set text content");
- }
- catch (DOMException ex) {
- assertEquals(DOMException.NO_MODIFICATION_ALLOWED_ERR, ex.code);
- }
- }
-
-
- public void testGetFeature() {
- assertNull(attributeNS.getFeature("name", "value"));
- }
-
-
- // XXX need to distinguish these two cases
- public void testIsEqualNode() {
- assertFalse(rootNS.isEqualNode(xmlNS));
- assertTrue(rootNS.isEqualNode(rootNS));
- }
-
- public void testIsSameNode() {
- assertFalse(rootNS.isSameNode(xmlNS));
- assertTrue(rootNS.isSameNode(rootNS));
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/DOM4JNavigatorTest.java b/src/java/test/org/jaxen/test/DOM4JNavigatorTest.java
deleted file mode 100644
index fc48f94..0000000
--- a/src/java/test/org/jaxen/test/DOM4JNavigatorTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import java.util.Iterator;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.io.SAXReader;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.XPath;
-import org.jaxen.dom4j.DocumentNavigator;
-import org.jaxen.dom4j.Dom4jXPath;
-
-public class DOM4JNavigatorTest extends XPathTestBase
-{
- private SAXReader reader;
-
- public DOM4JNavigatorTest(String name)
- {
- super( name );
- this.reader = new SAXReader();
- this.reader.setMergeAdjacentText( true );
- }
-
- public Navigator getNavigator()
- {
- return new DocumentNavigator();
- }
-
- public Object getDocument(String url) throws Exception
- {
- return reader.read( url );
- }
-
- /**
- * reported as JAXEN-104.
- * @throws FunctionCallException
- * @throws UnsupportedAxisException
- */
- public void testConcurrentModification() throws FunctionCallException, UnsupportedAxisException
- {
- Navigator nav = new DocumentNavigator();
- Object document = nav.getDocument("xml/testNamespaces.xml");
- Iterator descendantOrSelfAxisIterator = nav.getDescendantOrSelfAxisIterator(document);
- while (descendantOrSelfAxisIterator.hasNext()) {
- Object node = descendantOrSelfAxisIterator.next();
- Iterator namespaceAxisIterator = nav.getNamespaceAxisIterator(node);
- while (namespaceAxisIterator.hasNext()) {
- namespaceAxisIterator.next();
- }
- }
- }
-
- public void testNullPointerException() throws JaxenException {
- Document doc = DocumentHelper.createDocument();
- XPath xpath = new Dom4jXPath("/foo");
- xpath.selectSingleNode(doc);
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/DOM4JPerformance.java b/src/java/test/org/jaxen/test/DOM4JPerformance.java
deleted file mode 100644
index 44c9edc..0000000
--- a/src/java/test/org/jaxen/test/DOM4JPerformance.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- $Id$
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.test;
-
-import java.net.URL;
-
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-import org.jaxen.dom4j.Dom4jXPath;
-
-class DOM4JPerformance {
-
- public static void main(String[] args) {
- try {
- URL u = new URL("http://www.ibiblio.org/xml/examples/shakespeare/much_ado.xml");
- Document doc = new SAXReader().read(u);
- Dom4jXPath xpath = new Dom4jXPath("PLAY/ACT/SCENE/SPEECH/SPEAKER");
-
- long start = System.currentTimeMillis();
-
- int count = 0;
- for (int i = 0; i < 1000; i++) {
- Element speaker = (Element) xpath.selectSingleNode(doc);
- count += (speaker == null ? 0 : 1);
- }
-
- long end = System.currentTimeMillis();
- System.out.println((end - start));
- System.out.println(count);
-
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/DOM4JTests.java b/src/java/test/org/jaxen/test/DOM4JTests.java
deleted file mode 100644
index 722b889..0000000
--- a/src/java/test/org/jaxen/test/DOM4JTests.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect Jaxen's dom4j tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class DOM4JTests {
-
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(DOM4JNavigatorTest.class));
- result.addTest(new TestSuite(DOM4JXPathTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/DOM4JXPathTest.java b/src/java/test/org/jaxen/test/DOM4JXPathTest.java
deleted file mode 100644
index cd02181..0000000
--- a/src/java/test/org/jaxen/test/DOM4JXPathTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import java.io.StringReader;
-import java.util.Iterator;
-import java.util.List;
-
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.io.SAXReader;
-import org.dom4j.tree.DefaultAttribute;
-import org.dom4j.tree.DefaultDocument;
-import org.dom4j.tree.DefaultElement;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.XPathSyntaxException;
-import org.jaxen.dom4j.Dom4jXPath;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-
-public class DOM4JXPathTest extends TestCase
-{
-
- private static final String BASIC_XML = "xml/basic.xml";
-
- public DOM4JXPathTest(String name)
- {
- super( name );
- }
-
- public void setUp()
- {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "" );
- }
-
- public void testConstruction() throws JaxenException
- {
- new Dom4jXPath( "/foo/bar/baz" );
- }
-
- public void testSelection() throws JaxenException, DocumentException
- {
-
- XPath xpath = new Dom4jXPath( "/foo/bar/baz" );
- SAXReader reader = new SAXReader();
- Document doc = reader.read( BASIC_XML );
- List results = xpath.selectNodes( doc );
- assertEquals( 3, results.size() );
- Iterator iter = results.iterator();
- assertEquals( "baz",
- ((Element)iter.next()).getName() );
- assertEquals( "baz",
- ((Element)iter.next()).getName() );
- assertEquals( "baz",
- ((Element)iter.next()).getName() );
- assertTrue( ! iter.hasNext() );
-
- }
-
- public void testAsBoolean() throws JaxenException, DocumentException
- {
- XPath xpath = new Dom4jXPath( "/root/a = 'a'" );
- SAXReader reader = new SAXReader();
- Document doc = reader.read( "xml/simple.xml" );
- boolean answer = xpath.booleanValueOf( doc );
- assertTrue( "Xpath worked: " + xpath, answer );
- xpath = new Dom4jXPath( "'a' = 'b'" );
- answer = xpath.booleanValueOf( doc );
- assertTrue( "XPath should return false: " + xpath, ! answer );
- }
-
- public void testJaxen20AttributeNamespaceNodes() throws JaxenException
- {
-
- Namespace ns1 = Namespace.get("p1", "www.acme1.org");
- Namespace ns2 = Namespace.get("p2", "www.acme2.org");
- Element element = new DefaultElement("test", ns1);
- Attribute attribute = new DefaultAttribute("pre:foo", "bar", ns2);
- element.add(attribute);
- Document doc = new DefaultDocument(element);
-
- XPath xpath = new Dom4jXPath( "//namespace::node()" );
- List results = xpath.selectNodes( doc );
- assertEquals( 3, results.size() );
-
- }
-
- public void testJaxen16() throws JaxenException, DocumentException
- {
-
- String document = "<a xmlns:b=\"...\"/>";
- SAXReader reader = new SAXReader();
- Document doc = reader.read( new StringReader(document) );
-
- XPath xpath = new Dom4jXPath( "/a/b" );
- List results = xpath.selectNodes( doc );
- assertEquals( 0, results.size() );
-
- }
-
- public void testNamespaceNodesAreInherited() throws JaxenException
- {
- Namespace ns0 = Namespace.get("p0", "www.acme0.org");
- Namespace ns1 = Namespace.get("p1", "www.acme1.org");
- Namespace ns2 = Namespace.get("p2", "www.acme2.org");
- Element element = new DefaultElement("test", ns1);
- Attribute attribute = new DefaultAttribute("pre:foo", "bar", ns2);
- element.add(attribute);
- Element root = new DefaultElement("root", ns0);
- root.add(element);
- Document doc = new DefaultDocument(root);
-
- XPath xpath = new Dom4jXPath( "/*/*/namespace::node()" );
-
- List results = xpath.selectNodes( doc );
-
- assertEquals( 4,
- results.size() );
- }
-
- public void testSyntaxException() throws JaxenException {
-
- String path = "/row/[some_node='val1']|[some_node='val2']";
- try {
- new Dom4jXPath(path);
- fail("Allowed union of non-node-sets");
- }
- catch (XPathSyntaxException success) {
- assertNotNull(success.getMessage());
- }
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/DOMNavigatorTest.java b/src/java/test/org/jaxen/test/DOMNavigatorTest.java
deleted file mode 100644
index 7d249f1..0000000
--- a/src/java/test/org/jaxen/test/DOMNavigatorTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.jaxen.Navigator;
-import org.jaxen.dom.DocumentNavigator;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-public class DOMNavigatorTest extends XPathTestBase
-{
-
- private DocumentBuilder builder;
-
-
- public DOMNavigatorTest(String name)
- {
- super( name );
- }
-
- public Navigator getNavigator()
- {
- return new DocumentNavigator();
- }
-
- protected void setUp() throws Exception {
- super.setUp();
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- builder = factory.newDocumentBuilder();
- }
-
- public Object getDocument(String url) throws Exception
- {
- return builder.parse( url );
- }
-
- public void testGetAttributeQNameOnElement() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Element a = doc.createElement("a");
- String qname = nav.getAttributeQName(a);
- assertNull(qname);
- }
-
- public void testGetElementQNameOnAttr() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Attr a = doc.createAttribute("a");
- String qname = nav.getElementQName(a);
- assertNull(qname);
- }
-
- public void testGetAttributeLocalNameOnElement() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Element a = doc.createElementNS("http://www.ex.com", "pre:a");
- String name = nav.getAttributeName(a);
- assertNull(name);
- }
-
- public void testGetElementLocalNameOnAttr() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Attr a = doc.createAttributeNS("http://www.ex.com", "a");
- String name = nav.getElementName(a);
- assertNull(name);
- }
-
- public void testGetAttributeNamespaceURIOnElement() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Element a = doc.createElementNS("http://www.example.org/", "a");
- String qname = nav.getAttributeNamespaceUri(a);
- assertNull(qname);
- }
-
- public void testGetElementNamespaceURIOnAttr() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Attr a = doc.createAttributeNS("http://www.element.org/", "a");
- String qname = nav.getElementNamespaceUri(a);
- assertNull(qname);
- }
-
- public void testGetTargetOfNonPI() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Attr a = doc.createAttributeNS("http://www.element.org/", "a");
- try {
- nav.getProcessingInstructionTarget(a);
- fail("got target of non processing instruction");
- }
- catch (ClassCastException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
- public void testGetDataOfNonPI() {
- Navigator nav = getNavigator();
- Document doc = builder.newDocument();
- Attr a = doc.createAttributeNS("http://www.element.org/", "a");
- try {
- nav.getProcessingInstructionData(a);
- fail("got data of non processing instruction");
- }
- catch (ClassCastException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/DOMTests.java b/src/java/test/org/jaxen/test/DOMTests.java
deleted file mode 100644
index 971137b..0000000
--- a/src/java/test/org/jaxen/test/DOMTests.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect Jaxen's DOM tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class DOMTests {
-
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(DOMNavigatorTest.class));
- result.addTest(new TestSuite(DOMXPathTest.class));
- result.addTest(new TestSuite(NamespaceTest.class));
- result.addTest(new TestSuite(DOM3NamespaceTest.class));
- return result;
-
- }
-
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/DOMXPathTest.java b/src/java/test/org/jaxen/test/DOMXPathTest.java
deleted file mode 100644
index 4e038d1..0000000
--- a/src/java/test/org/jaxen/test/DOMXPathTest.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
-
-public class DOMXPathTest extends TestCase
-{
-
- private static final String BASIC_XML = "xml/basic.xml";
- private Document doc;
- private DocumentBuilderFactory factory;
-
- public DOMXPathTest(String name)
- {
- super( name );
- }
-
- public void setUp() throws ParserConfigurationException {
- factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- doc = factory.newDocumentBuilder().newDocument();
- }
-
-
- public void testConstruction() throws JaxenException
- {
- DOMXPath xpath = new DOMXPath( "/foo/bar/baz" );
- assertEquals("/foo/bar/baz", xpath.toString());
- }
-
- public void testConstructionWithNamespacePrefix() throws JaxenException
- {
- DOMXPath xpath = new DOMXPath( "/p:foo/p:bar/a:baz" );
- assertEquals("/p:foo/p:bar/a:baz", xpath.toString());
- }
-
- public void testNamespaceDeclarationsAreNotAttributes()
- throws JaxenException {
-
- Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
- root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.example.org/");
-
- DOMXPath xpath = new DOMXPath( "count(/*/@*)" );
-
- Number value = xpath.numberValueOf(doc);
- assertEquals(0, value.intValue());
-
- }
-
-
- // see JAXEN-105
- public void testConsistentNamespaceDeclarations()
- throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElementNS("http://www.example.org", "foo:child");
- root.appendChild(child);
- // different prefix
- child.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:foo2", "http://www.contradictory.org");
-
- XPath xpath = new DOMXPath("//namespace::node()");
- List result = xpath.selectNodes(doc);
- assertEquals(4, result.size());
-
- }
-
- // see JAXEN-105
- public void testInconsistentNamespaceDeclarations()
- throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElementNS("http://www.example.org", "foo:child");
- root.appendChild(child);
- // same prefix
- child.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:foo", "http://www.contradictory.org");
-
- XPath xpath = new DOMXPath("//namespace::node()");
- List result = xpath.selectNodes(doc);
- assertEquals(3, result.size());
-
- }
-
- // see JAXEN-105
- public void testIntrinsicNamespaceDeclarationOfElementBeatsContradictoryXmlnsPreAttr()
- throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElementNS("http://www.example.org", "foo:child");
- root.appendChild(child);
- // same prefix
- child.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:foo", "http://www.contradictory.org");
-
- XPath xpath = new DOMXPath("//namespace::node()[name(.)='foo']");
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- Node node = (Node) result.get(0);
- assertEquals("http://www.example.org", node.getNodeValue());
-
- }
-
- // see JAXEN-105
- public void testIntrinsicNamespaceDeclarationOfAttrBeatsContradictoryXmlnsPreAttr()
- throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- root.setAttributeNS("http://www.example.org/", "foo:a", "value");
- // same prefix, different namespace
- root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:foo", "http://www.contradictory.org");
-
- XPath xpath = new DOMXPath("//namespace::node()[name(.)='foo']");
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- Node node = (Node) result.get(0);
- assertEquals("http://www.example.org/", node.getNodeValue());
-
- }
-
- // see JAXEN-105
- public void testIntrinsicNamespaceDeclarationOfElementBeatsContradictoryIntrinsicNamespaceOfAttr()
- throws JaxenException {
-
- Element root = doc.createElementNS("http://www.example.org", "pre:root");
- doc.appendChild(root);
- // same prefix
- root.setAttributeNS("http://www.contradictory.org", "pre:foo", "value");
-
- XPath xpath = new DOMXPath("//namespace::node()[name(.)='pre']");
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- Node node = (Node) result.get(0);
- assertEquals("http://www.example.org", node.getNodeValue());
-
- }
-
- // Jaxen-54
- public void testUpdateDOMNodesReturnedBySelectNodes()
- throws JaxenException {
-
- Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
- root.appendChild(doc.createComment("data"));
-
- DOMXPath xpath = new DOMXPath( "//comment()" );
-
- List results = xpath.selectNodes(doc);
- Node backroot = (Node) results.get(0);
- backroot.setNodeValue("test");
- assertEquals("test", backroot.getNodeValue());
-
- }
-
- public void testSelection()
- throws JaxenException, ParserConfigurationException, SAXException, IOException {
- XPath xpath = new DOMXPath( "/foo/bar/baz" );
-
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- Document document = builder.parse( BASIC_XML );
-
- List results = xpath.selectNodes( document );
-
- assertEquals( 3,
- results.size() );
-
- Iterator iter = results.iterator();
-
- assertEquals( "baz",
- ((Element)iter.next()).getLocalName() );
-
- assertEquals( "baz",
- ((Element)iter.next()).getLocalName() );
-
- assertEquals( "baz",
- ((Element)iter.next()).getLocalName() );
-
- assertTrue( ! iter.hasNext() );
-
- }
-
- // Jaxen-22
- public void testPrecedingAxisWithPositionalPredicate()
- throws JaxenException, ParserConfigurationException, SAXException, IOException {
-
- XPath xpath = new DOMXPath( "//c/preceding::*[1][name()='d']" );
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- Document document = builder.parse( "xml/web2.xml" );
- List result = xpath.selectNodes(document);
- assertEquals(1, result.size());
-
- }
-
-
- // Jaxen-22
- public void testJaxen22()
- throws JaxenException, ParserConfigurationException, SAXException, IOException {
-
- XPath xpath = new DOMXPath( "name(//c/preceding::*[1])" );
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- doc = builder.parse("xml/web2.xml");
- Object result = xpath.evaluate(doc);
- assertEquals("d", result);
- }
-
-
- public void testPrecedingAxisInDocumentOrder()
- throws JaxenException {
-
- XPath xpath = new DOMXPath( "preceding::*" );
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
-
- Element a = doc.createElement("a");
- root.appendChild(a);
- Element b = doc.createElement("b");
- root.appendChild(b);
- Element c = doc.createElement("c");
- a.appendChild(c);
-
- List result = xpath.selectNodes(b);
- assertEquals(2, result.size());
- assertEquals(a, result.get(0));
- assertEquals(c, result.get(1));
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/DefaultNamestepTest.java b/src/java/test/org/jaxen/test/DefaultNamestepTest.java
deleted file mode 100644
index f148243..0000000
--- a/src/java/test/org/jaxen/test/DefaultNamestepTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/test/DefaultNamestepTest.java,v 1.1 2007/04/16 15:56:54 elharo Exp $
- * $Revision: 1.1 $
- * $Date: 2007/04/16 15:56:54 $
- *
- * ====================================================================
- *
- * Copyright 2007 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultNamestepTest.java,v 1.1 2007/04/16 15:56:54 elharo Exp $
- */
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class DefaultNamestepTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
-
- public DefaultNamestepTest(String name) {
- super(name);
- }
-
-
- public void testIdentitySetUsageInDefaultNameStep()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("/a/x/preceding-sibling::x[last()]");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- org.w3c.dom.Element x1 = doc.createElementNS("", "x");
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- org.w3c.dom.Element x5 = doc.createElementNS("", "x");
- a.appendChild(x1);
- a.appendChild(x2);
- a.appendChild(x3);
- a.appendChild(x4);
- a.appendChild(x5);
- x1.appendChild(doc.createTextNode("1"));
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
- x5.appendChild(doc.createTextNode("5"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(x1, result.get(0));
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/DefaultXPathExprTest.java b/src/java/test/org/jaxen/test/DefaultXPathExprTest.java
deleted file mode 100644
index 94a8041..0000000
--- a/src/java/test/org/jaxen/test/DefaultXPathExprTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.expr.Expr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for function context.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b12
- *
- */
-public class DefaultXPathExprTest extends TestCase
-{
-
-
- // http://jira.codehaus.org/browse/JAXEN-40
- public void testJAXEN40() throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("root/child1/grandchild1 | root/child2/grandchild2");
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- Element root = doc.createElement("root");
- Element child1 = doc.createElement("child1");
- Element child2 = doc.createElement("child2");
- Element grandchild1 = doc.createElement("grandchild1");
- Element grandchild2 = doc.createElement("grandchild2");
- root.appendChild(child1);
- root.appendChild(child2);
- child1.appendChild(grandchild1);
- child2.appendChild(grandchild2);
-
- doc.appendChild(root);
-
- List results = xpath.selectNodes(doc);
- assertEquals(2, results.size());
- assertTrue(results.indexOf(grandchild1) >= 0);
- assertTrue(results.indexOf(grandchild2) >= 0);
-
- }
-
-
- // http://jira.codehaus.org/browse/JAXEN-160
- public void testJAXEN160GetText()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("$var1/foo");
- Expr expr = xpath.getRootExpr();
- assertEquals("$var1/child::foo", expr.getText());
-
- }
-
- public void testJAXEN160ToString()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("$var1/foo");
- Expr expr = xpath.getRootExpr();
- assertEquals(
- "[(DefaultPathExpr): [(DefaultVariableReferenceExpr): var1], [(DefaultRelativeLocationPath): [(DefaultNameStep): foo]]]",
- expr.toString()
- );
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/DefaultXPathFactoryTest.java b/src/java/test/org/jaxen/test/DefaultXPathFactoryTest.java
deleted file mode 100644
index b7e310a..0000000
--- a/src/java/test/org/jaxen/test/DefaultXPathFactoryTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/test/DefaultXPathFactoryTest.java,v 1.1 2006/11/09 16:11:10 elharo Exp $
- * $Revision: 1.1 $
- * $Date: 2006/11/09 16:11:10 $
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: DefaultXPathFactoryTest.java,v 1.1 2006/11/09 16:11:10 elharo Exp $
- */
-
-
-
-package org.jaxen.test;
-
-import org.jaxen.JaxenException;
-import org.jaxen.expr.*;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for function context.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b12
- *
- */
-public class DefaultXPathFactoryTest extends TestCase {
-
- public void testBadAxis() throws JaxenException {
-
- DefaultXPathFactory factory = new DefaultXPathFactory();
- try {
- factory.createAllNodeStep(123434);
- fail("Allowed bad axis");
- }
- catch (JaxenException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/DescendantAxisIteratorTest.java b/src/java/test/org/jaxen/test/DescendantAxisIteratorTest.java
deleted file mode 100644
index 11e1862..0000000
--- a/src/java/test/org/jaxen/test/DescendantAxisIteratorTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.util.DescendantAxisIterator;
-import org.w3c.dom.Document;
-
-import junit.framework.TestCase;
-
-public class DescendantAxisIteratorTest extends TestCase {
-
- private Iterator iterator;
-
- public DescendantAxisIteratorTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException, UnsupportedAxisException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- doc.appendChild(doc.createElement("root"));
-
- iterator = new DescendantAxisIterator(doc, new org.jaxen.dom.DocumentNavigator());
-
- }
-
-
- public void testNoInfiniteLoops() {
-
- iterator.next();
- try {
- iterator.next();
- fail("Iterated too far");
- }
- catch (NoSuchElementException ex) {
- }
-
- }
-
-
- public void testRemove() {
-
- try {
- iterator.remove();
- fail("Removed from descendant axis iterator");
- }
- catch (UnsupportedOperationException ex) {
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/EqualsTest.java b/src/java/test/org/jaxen/test/EqualsTest.java
deleted file mode 100644
index 902909c..0000000
--- a/src/java/test/org/jaxen/test/EqualsTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for function context.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class EqualsTest extends TestCase
-{
-
- public void testEqualityAgainstNonExistentNodes()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("/a/b[c = ../d]");
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- Element root = doc.createElement("a");
- doc.appendChild(root);
- Element b = doc.createElement("b");
- root.appendChild(b);
- Element c = doc.createElement("c");
- b.appendChild(c);
-
- List result = (List) xpath.evaluate(doc);
- assertEquals(0, result.size());
-
- }
-
- public void testOlander()
- throws JaxenException, SAXException, IOException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("//BlockStatement//IfStatement[./Statement = ./ancestor::BlockStatement/following-sibling::BlockStatement//IfStatement/Statement]");
-
- String data = "<?xml version='1.0'?><Block><BlockStatement><LocalVariableDeclaration><Type><PrimitiveType>boolean</PrimitiveType></Type><VariableDeclarator><VariableDeclaratorId/></VariableDeclarator><VariableDeclarator><VariableDeclaratorId/></VariableDeclarator></LocalVariableDeclaration></BlockStatement><BlockStatement><Statement><IfStatement><Expression><PrimaryExpression><PrimaryPrefix><Name>a</Name></PrimaryPrefix></PrimaryExpression></Expression><Statement><StatementExpres [...]
- StringReader reader = new StringReader(data);
- InputSource in = new InputSource(reader);
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().parse(in);
-
- List result = (List) xpath.evaluate(doc);
- assertEquals(1, result.size());
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/ExprComparator.java b/src/java/test/org/jaxen/test/ExprComparator.java
deleted file mode 100644
index 1c65edf..0000000
--- a/src/java/test/org/jaxen/test/ExprComparator.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/test/ExprComparator.java,v 1.1 2007/01/06 15:48:58 elharo Exp $
- * $Revision: 1.1 $
- * $Date: 2007/01/06 15:48:58 $
- *
- * ====================================================================
- *
- * Copyright 2007 Ryan Gustafson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: ExprComparator.java,v 1.1 2007/01/06 15:48:58 elharo Exp $
- */
-
-package org.jaxen.test;
-
-import java.util.Comparator;
-import java.util.List;
-
-import org.jaxen.expr.AdditiveExpr;
-import org.jaxen.expr.AllNodeStep;
-import org.jaxen.expr.CommentNodeStep;
-import org.jaxen.expr.EqualityExpr;
-import org.jaxen.expr.FilterExpr;
-import org.jaxen.expr.FunctionCallExpr;
-import org.jaxen.expr.LiteralExpr;
-import org.jaxen.expr.LocationPath;
-import org.jaxen.expr.LogicalExpr;
-import org.jaxen.expr.MultiplicativeExpr;
-import org.jaxen.expr.NameStep;
-import org.jaxen.expr.NumberExpr;
-import org.jaxen.expr.PathExpr;
-import org.jaxen.expr.Predicate;
-import org.jaxen.expr.ProcessingInstructionNodeStep;
-import org.jaxen.expr.RelationalExpr;
-import org.jaxen.expr.TextNodeStep;
-import org.jaxen.expr.UnaryExpr;
-import org.jaxen.expr.UnionExpr;
-import org.jaxen.expr.VariableReferenceExpr;
-
-
-class ExprComparator implements Comparator {
-
- public static final Comparator EXPR_COMPARATOR = new ExprComparator();
-
- private static final int TYPE_ADDITIVE_EXPR = 1;
- private static final int TYPE_ALL_NODE_STEP = 2;
- private static final int TYPE_COMMENT_NODE_STEP = 3;
- private static final int TYPE_EQUALITY_EXPR = 4;
- private static final int TYPE_FILTER_EXPR = 5;
- private static final int TYPE_FUNCTION_CALL_EXPR = 6;
- private static final int TYPE_LITERAL_EXPR = 7;
- private static final int TYPE_LOCATION_PATH = 8;
- private static final int TYPE_LOGICAL_EXP = 9;
- private static final int TYPE_MULTIPLICATIVE_EXPR = 10;
- private static final int TYPE_NAME_STEP = 11;
- private static final int TYPE_NUMBER_EXPR = 12;
- private static final int TYPE_PATH_EXPR = 13;
- private static final int TYPE_PREDICATE = 14;
- private static final int TYPE_PROCESSING_INSTRUCTION_NODE_STEP = 15;
- private static final int TYPE_RELATIONAL_EXPR = 16;
- private static final int TYPE_TEXT_NODE_STEP = 17;
- private static final int TYPE_UNARY_EXPR = 18;
- private static final int TYPE_UNION_EXPR = 19;
- private static final int TYPE_VARIABLE_REFERENCE_EXPR = 20;
-
- private ExprComparator()
- {
- }
-
- public int compare(Object o1, Object o2)
- {
- int type1 = getType(o1);
- int type2 = getType(o2);
-
- int cmp;
- if (type1 == type2)
- {
- switch (type1)
- {
- case TYPE_ADDITIVE_EXPR:
- AdditiveExpr additiveExpr1 = (AdditiveExpr)o1;
- AdditiveExpr additiveExpr2 = (AdditiveExpr)o2;
- cmp = additiveExpr1.getOperator().compareTo(additiveExpr2.getOperator());
- if (cmp == 0)
- {
- cmp = compare(additiveExpr1.getLHS(), additiveExpr2.getLHS());
- if (cmp == 0)
- {
- cmp = compare(additiveExpr1.getRHS(), additiveExpr2.getRHS());
- }
- }
- break;
- case TYPE_ALL_NODE_STEP:
- AllNodeStep allNodeStep1 = (AllNodeStep)o1;
- AllNodeStep allNodeStep2 = (AllNodeStep)o2;
- cmp = allNodeStep1.getAxis() - allNodeStep2.getAxis();
- if (cmp == 0)
- {
- cmp = compareLists(allNodeStep1.getPredicates(), allNodeStep2.getPredicates());
- }
- break;
- case TYPE_COMMENT_NODE_STEP:
- CommentNodeStep commentNodeStep1 = (CommentNodeStep)o1;
- CommentNodeStep commentNodeStep2 = (CommentNodeStep)o2;
- cmp = commentNodeStep1.getAxis() - commentNodeStep2.getAxis();
- if (cmp == 0)
- {
- cmp = compareLists(commentNodeStep1.getPredicates(), commentNodeStep2.getPredicates());
- }
- break;
- case TYPE_EQUALITY_EXPR:
- EqualityExpr equalityExpr1 = (EqualityExpr)o1;
- EqualityExpr equalityExpr2 = (EqualityExpr)o2;
- cmp = equalityExpr1.getOperator().compareTo(equalityExpr2.getOperator());
- if (cmp == 0)
- {
- cmp = compare(equalityExpr1.getLHS(), equalityExpr1.getLHS());
- if (cmp == 0)
- {
- cmp = compare(equalityExpr1.getRHS(), equalityExpr1.getRHS());
- }
- }
- break;
- case TYPE_FILTER_EXPR:
- if (true)
- throw new RuntimeException("Not yet implemented!");
- break;
- case TYPE_FUNCTION_CALL_EXPR:
- FunctionCallExpr functionCallExpr1 = (FunctionCallExpr)o1;
- FunctionCallExpr functionCallExpr2 = (FunctionCallExpr)o2;
- cmp = compareStrings(functionCallExpr1.getPrefix(), functionCallExpr2.getPrefix());
- if (cmp == 0)
- {
- cmp = functionCallExpr1.getFunctionName().compareTo(functionCallExpr2.getFunctionName());
- if (cmp == 0)
- {
- cmp = compareLists(functionCallExpr1.getParameters(), functionCallExpr2.getParameters());
- }
- }
- break;
- case TYPE_LITERAL_EXPR:
- LiteralExpr literalExpr1 = (LiteralExpr)o1;
- LiteralExpr literalExpr2 = (LiteralExpr)o2;
- cmp = literalExpr1.getLiteral().compareTo(literalExpr2.getLiteral());
- break;
- case TYPE_LOCATION_PATH:
- LocationPath locationPath1 = (LocationPath)o1;
- LocationPath locationPath2 = (LocationPath)o2;
- if (locationPath1.isAbsolute() == locationPath2.isAbsolute())
- {
- cmp = compareLists(locationPath1.getSteps(), locationPath2.getSteps());
- }
- else if (locationPath1.isAbsolute())
- {
- cmp = 1;
- }
- else
- {
- cmp = -1;
- }
- break;
- case TYPE_LOGICAL_EXP:
- LogicalExpr logicalExpr1 = (LogicalExpr)o1;
- LogicalExpr logicalExpr2 = (LogicalExpr)o2;
- cmp = logicalExpr1.getOperator().compareTo(logicalExpr2.getOperator());
- if (cmp == 0)
- {
- cmp = compare(logicalExpr1.getLHS(), logicalExpr2.getLHS());
- if (cmp == 0)
- {
- cmp = compare(logicalExpr1.getRHS(), logicalExpr2.getRHS());
- }
- }
- break;
- case TYPE_MULTIPLICATIVE_EXPR:
- MultiplicativeExpr multiplicativeExpr1 = (MultiplicativeExpr)o1;
- MultiplicativeExpr multiplicativeExpr2 = (MultiplicativeExpr)o2;
- cmp = multiplicativeExpr1.getOperator().compareTo(multiplicativeExpr2.getOperator());
- if (cmp == 0)
- {
- cmp = compare(multiplicativeExpr1.getLHS(), multiplicativeExpr2.getLHS());
- if (cmp == 0)
- {
- cmp = compare(multiplicativeExpr1.getRHS(), multiplicativeExpr2.getRHS());
- }
- }
- break;
- case TYPE_NAME_STEP:
- NameStep nameStep1 = (NameStep)o1;
- NameStep nameStep2 = (NameStep)o2;
- cmp = nameStep1.getAxis() - nameStep2.getAxis();
- if (cmp == 0)
- {
- cmp = compareStrings(nameStep1.getPrefix(), nameStep2.getPrefix());
-
- if (cmp == 0)
- {
- cmp = nameStep1.getLocalName().compareTo(nameStep2.getLocalName());
- if (cmp == 0)
- {
- cmp = compareLists(nameStep1.getPredicates(), nameStep2.getPredicates());
- }
- }
- }
- break;
- case TYPE_NUMBER_EXPR:
- NumberExpr numberExpr1 = (NumberExpr)o1;
- NumberExpr numberExpr2 = (NumberExpr)o2;
- cmp = new Double(numberExpr1.getNumber().doubleValue()).compareTo(new Double(numberExpr2.getNumber().doubleValue()));
- break;
- case TYPE_PATH_EXPR:
- PathExpr pathExpr1 = (PathExpr)o1;
- PathExpr pathExpr2 = (PathExpr)o2;
- cmp = compare(pathExpr1.getLocationPath(), pathExpr2.getLocationPath());
- if (cmp == 0)
- {
- cmp = compare(pathExpr1.getFilterExpr(), pathExpr2.getFilterExpr());
- }
- break;
- case TYPE_PREDICATE:
- Predicate predicate1 = (Predicate)o1;
- Predicate predicate2 = (Predicate)o2;
- cmp = compare(predicate1.getExpr(), predicate2.getExpr());
- break;
- case TYPE_PROCESSING_INSTRUCTION_NODE_STEP:
- ProcessingInstructionNodeStep processingInstructionNodeStep1 = (ProcessingInstructionNodeStep)o1;
- ProcessingInstructionNodeStep processingInstructionNodeStep2 = (ProcessingInstructionNodeStep)o2;
- cmp = processingInstructionNodeStep1.getAxis() - processingInstructionNodeStep2.getAxis();
- if (cmp == 0)
- {
- cmp = compareStrings(processingInstructionNodeStep1.getName(), processingInstructionNodeStep2.getName());
- if (cmp == 0)
- {
- cmp = compareLists(processingInstructionNodeStep1.getPredicates(), processingInstructionNodeStep2.getPredicates());
- }
- }
- break;
- case TYPE_RELATIONAL_EXPR:
- RelationalExpr relationalExpr1 = (RelationalExpr)o1;
- RelationalExpr relationalExpr2 = (RelationalExpr)o2;
- cmp = relationalExpr1.getOperator().compareTo(relationalExpr2.getOperator());
- if (cmp == 0)
- {
- cmp = compare(relationalExpr1.getLHS(), relationalExpr2.getLHS());
- if (cmp == 0)
- {
- cmp = compare(relationalExpr1.getRHS(), relationalExpr2.getRHS());
- }
- }
- break;
- case TYPE_TEXT_NODE_STEP:
- TextNodeStep textNodeStep1 = (TextNodeStep)o1;
- TextNodeStep textNodeStep2 = (TextNodeStep)o2;
- cmp = textNodeStep1.getAxis() - textNodeStep2.getAxis();
- if (cmp == 0)
- {
- cmp = compareLists(textNodeStep1.getPredicates(), textNodeStep2.getPredicates());
- }
- break;
- case TYPE_UNARY_EXPR:
- UnaryExpr unaryExpr1 = (UnaryExpr)o1;
- UnaryExpr unaryExpr2 = (UnaryExpr)o2;
- cmp = compare(unaryExpr1.getExpr(), unaryExpr2.getExpr());
- break;
- case TYPE_UNION_EXPR:
- if (true)
- throw new RuntimeException("Not yet implemented!");
- break;
- case TYPE_VARIABLE_REFERENCE_EXPR:
- VariableReferenceExpr variableReferenceExpr1 = (VariableReferenceExpr)o1;
- VariableReferenceExpr variableReferenceExpr2 = (VariableReferenceExpr)o2;
- cmp = compareStrings(variableReferenceExpr1.getPrefix(), variableReferenceExpr2.getPrefix());
- if (cmp == 0)
- {
- cmp = variableReferenceExpr1.getVariableName().compareTo(variableReferenceExpr2.getVariableName());
- }
- break;
- default:
- throw new IllegalArgumentException("Unhandled type: " + type1);
- }
- }
- else
- {
- cmp = type1 - type2;
- }
- return cmp;
- }
-
- private int compareStrings(String s1, String s2)
- {
- int cmp;
- if (s1 == s2)
- {
- cmp = 0;
- }
- else if (s1 == null)
- {
- cmp = -1;
- }
- else if (s2 == null)
- {
- cmp = 1;
- }
- else
- {
- cmp = s1.compareTo(s2);
- }
- return cmp;
- }
-
- private int compareLists(List list1, List list2)
- {
- int cmp;
- if (list1 == list2)
- {
- cmp = 0;
- }
- else if (list1 == null)
- {
- cmp = -1;
- }
- else if (list2 == null)
- {
- cmp = 1;
- }
- else
- {
- cmp = list1.size() - list2.size();
- if (cmp == 0)
- {
- for (int i = 0; i < list1.size() && cmp == 0; i++)
- {
- cmp = compare(list1.get(i), list2.get(i));
- }
- }
- }
- return cmp;
- }
-
- private int getType(Object node)
- {
- if (node instanceof AdditiveExpr)
- {
- return TYPE_ADDITIVE_EXPR;
- }
- else if (node instanceof AllNodeStep)
- {
- return TYPE_ALL_NODE_STEP;
- }
- else if (node instanceof CommentNodeStep)
- {
- return TYPE_COMMENT_NODE_STEP;
- }
- else if (node instanceof EqualityExpr)
- {
- return TYPE_EQUALITY_EXPR;
- }
- else if (node instanceof FilterExpr)
- {
- return TYPE_FILTER_EXPR;
- }
- else if (node instanceof FunctionCallExpr)
- {
- return TYPE_FUNCTION_CALL_EXPR;
- }
- else if (node instanceof LiteralExpr)
- {
- return TYPE_LITERAL_EXPR;
- }
- else if (node instanceof LocationPath)
- {
- return TYPE_LOCATION_PATH;
- }
- else if (node instanceof LogicalExpr)
- {
- return TYPE_LOGICAL_EXP;
- }
- else if (node instanceof MultiplicativeExpr)
- {
- return TYPE_MULTIPLICATIVE_EXPR;
- }
- else if (node instanceof NameStep)
- {
- return TYPE_NAME_STEP;
- }
- else if (node instanceof NumberExpr)
- {
- return TYPE_NUMBER_EXPR;
- }
- else if (node instanceof PathExpr)
- {
- return TYPE_PATH_EXPR;
- }
- else if (node instanceof Predicate)
- {
- return TYPE_PREDICATE;
- }
- else if (node instanceof ProcessingInstructionNodeStep)
- {
- return TYPE_PROCESSING_INSTRUCTION_NODE_STEP;
- }
- else if (node instanceof RelationalExpr)
- {
- return TYPE_RELATIONAL_EXPR;
- }
- else if (node instanceof TextNodeStep)
- {
- return TYPE_TEXT_NODE_STEP;
- }
- else if (node instanceof UnaryExpr)
- {
- return TYPE_UNARY_EXPR;
- }
- else if (node instanceof UnionExpr)
- {
- return TYPE_UNION_EXPR;
- }
- else if (node instanceof VariableReferenceExpr)
- {
- return TYPE_VARIABLE_REFERENCE_EXPR;
- }
- else
- {
- throw new IllegalArgumentException("Unknown Jaxen AST node type: " + node);
- }
- }
-}
diff --git a/src/java/test/org/jaxen/test/ExprTests.java b/src/java/test/org/jaxen/test/ExprTests.java
deleted file mode 100644
index 9a964d9..0000000
--- a/src/java/test/org/jaxen/test/ExprTests.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect Jaxen's expression tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1.1
- *
- */
-public class ExprTests {
-
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(DefaultXPathExprTest.class));
- result.addTest(new TestSuite(DefaultNamestepTest.class));
- result.addTest(new TestSuite(ModTest.class));
- result.addTest(new TestSuite(EqualsTest.class));
- result.addTest(new TestSuite(LiteralExprTest.class));
- result.addTest(new TestSuite(BinaryExprTest.class));
- result.addTest(new TestSuite(ProcessingInstructionNodeTest.class));
- return result;
-
- }
-
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/ExtensionFunctionTest.java b/src/java/test/org/jaxen/test/ExtensionFunctionTest.java
deleted file mode 100644
index ce60e08..0000000
--- a/src/java/test/org/jaxen/test/ExtensionFunctionTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005, 2006 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.*;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.function.NumberFunction;
-import org.jaxen.saxpath.SAXPathException;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class ExtensionFunctionTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
-
- public ExtensionFunctionTest(String name) {
- super(name);
- }
-
- class MinFunction implements Function {
-
- public Object call(Context context, List args) {
-
- if (args.isEmpty()) return new Double(Double.NaN);
-
- Navigator navigator = context.getNavigator();
- double min = Double.MAX_VALUE;
- Iterator iterator = args.iterator();
- while (iterator.hasNext()) {
- double next = NumberFunction.evaluate(iterator.next(), navigator).doubleValue();
- min = Math.min(min, next);
- }
- return new Double(min);
- }
-
- }
-
-
- public void testRegisterExtensionFunction() throws JaxenException {
-
- SimpleFunctionContext fc = new XPathFunctionContext(false);
- fc.registerFunction("http://exslt.org/math", "min", new MinFunction());
-
- SimpleNamespaceContext nc = new SimpleNamespaceContext();
- nc.addNamespace("math", "http://exslt.org/math");
-
- BaseXPath xpath = new DOMXPath("math:min(//x)");
-
- xpath.setFunctionContext(fc);
- xpath.setNamespaceContext(nc);
-
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(new Double(2), result);
-
-
- }
-
-
- public void testJaxen47() throws SAXPathException {
- org.jaxen.dom.DocumentNavigator.getInstance().parseXPath("a:b()");
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/FalseTest.java b/src/java/test/org/jaxen/test/FalseTest.java
deleted file mode 100644
index 492cfa5..0000000
--- a/src/java/test/org/jaxen/test/FalseTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class FalseTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public FalseTest(String name) {
- super(name);
- }
-
- public void testFalseOfNumber() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "false(3)" );
- xpath.selectNodes( doc );
- fail("false() function took arguments");
- }
- catch (FunctionCallException e)
- {
- assertEquals("false() requires no arguments.", e.getMessage());
- }
- }
-
- public void testFalse() throws JaxenException
- {
- XPath xpath = new DOMXPath( "false()" );
- Object result = xpath.evaluate( doc );
- assertEquals(Boolean.FALSE, result);
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/FloorTest.java b/src/java/test/org/jaxen/test/FloorTest.java
deleted file mode 100644
index 26cf144..0000000
--- a/src/java/test/org/jaxen/test/FloorTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class FloorTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- }
-
-
- public FloorTest(String name) {
- super(name);
- }
-
-
-
- public void testFloor() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("floor(1.5)");
-
- Object result = xpath.evaluate(doc);
- assertEquals(1, ((Double) result).doubleValue(), 0.0001);
-
- }
-
- public void testNegativeFloor() throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("floor(-1.5)");
-
- Object result = xpath.evaluate(doc);
- assertEquals(-2, ((Double) result).doubleValue(), 0.0001);
-
- }
-
- public void testNaNFloorIsNaN() throws JaxenException {
- BaseXPath xpath = new DOMXPath("floor(1.0 div 0.0 - 2.0 div 0.0)");
- double result = ((Double) xpath.evaluate(doc)).doubleValue();
- assertTrue(Double.isNaN(result));
- }
-
- public void testInfFloorIsInf() throws JaxenException {
- BaseXPath xpath = new DOMXPath("floor(1.0 div 0.0)");
- double result = ((Double) xpath.evaluate(doc)).doubleValue();
- assertTrue(Double.isInfinite(result));
- assertTrue(result > 0);
- }
-
- public void testNegativeInfFloorIsNegativeInf() throws JaxenException {
- BaseXPath xpath = new DOMXPath("floor(-1.0 div 0.0)");
- double result = ((Double) xpath.evaluate(doc)).doubleValue();
- assertTrue(Double.isInfinite(result));
- assertTrue(result < 0);
- }
-
- public void testFloorFunctionRequiresAtLeastArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("floor()");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed floor function with no arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testBooleanFunctionRequiresExactlyOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("floor(2.2, 1.2)");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed floor function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/FollowingAxisIteratorTest.java b/src/java/test/org/jaxen/test/FollowingAxisIteratorTest.java
deleted file mode 100644
index a59088f..0000000
--- a/src/java/test/org/jaxen/test/FollowingAxisIteratorTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.util.FollowingAxisIterator;
-import org.w3c.dom.Document;
-
-import junit.framework.TestCase;
-
-public class FollowingAxisIteratorTest extends TestCase {
-
- private Iterator iterator;
-
- public FollowingAxisIteratorTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException, UnsupportedAxisException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- doc.appendChild(doc.createElement("root"));
-
- iterator = new FollowingAxisIterator(doc, new org.jaxen.dom.DocumentNavigator());
-
- }
-
-
- public void testNoInfiniteLoops() {
-
- try {
- iterator.next();
- fail("Iterated too far");
- }
- catch (NoSuchElementException ex) {
- pass();
- }
-
- }
-
-
- private void pass() {
- // Just to make checkstyle and the like happy
- }
-
- public void testRemove() {
-
- try {
- iterator.remove();
- fail("Removed from descendant axis iterator");
- }
- catch (UnsupportedOperationException ex) {
- pass();
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/FollowingSiblingAxisIteratorTest.java b/src/java/test/org/jaxen/test/FollowingSiblingAxisIteratorTest.java
deleted file mode 100644
index fac32be..0000000
--- a/src/java/test/org/jaxen/test/FollowingSiblingAxisIteratorTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.util.FollowingSiblingAxisIterator;
-import org.w3c.dom.Document;
-
-import junit.framework.TestCase;
-
-public class FollowingSiblingAxisIteratorTest extends TestCase {
-
- private Iterator iterator;
-
- public FollowingSiblingAxisIteratorTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException, UnsupportedAxisException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- doc.appendChild(doc.createElement("root"));
-
- iterator = new FollowingSiblingAxisIterator(doc, new org.jaxen.dom.DocumentNavigator());
-
- }
-
-
- public void testNoInfiniteLoops() {
-
- try {
- iterator.next();
- fail("Iterated too far");
- }
- catch (NoSuchElementException ex) {
- pass();
- }
-
- }
-
-
- private void pass() {
- // Just to make checkstyle and the like happy
- }
-
- public void testRemove() {
-
- try {
- iterator.remove();
- fail("Removed from descendant axis iterator");
- }
- catch (UnsupportedOperationException ex) {
- pass();
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/FunctionCallExceptionTest.java b/src/java/test/org/jaxen/test/FunctionCallExceptionTest.java
deleted file mode 100644
index e7b7491..0000000
--- a/src/java/test/org/jaxen/test/FunctionCallExceptionTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-
-import junit.framework.TestCase;
-
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class FunctionCallExceptionTest extends TestCase {
-
- public FunctionCallExceptionTest(String name) {
- super(name);
- }
-
- public void testMessageIsNonNull() {
-
- JaxenException ex = new JaxenException("Hello");
- FunctionCallException rex = new FunctionCallException(ex);
- assertEquals(ex.getMessage(), rex.getMessage());
- assertEquals(ex, rex.getCause());
-
- }
-
- public void testMessageIsSaved() {
-
- JaxenException ex = new JaxenException("Hello");
- FunctionCallException rex = new FunctionCallException("Goodbye", ex);
- assertEquals("Goodbye", rex.getMessage());
- assertEquals(ex, rex.getCause());
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/FunctionContextTest.java b/src/java/test/org/jaxen/test/FunctionContextTest.java
deleted file mode 100644
index c8bce83..0000000
--- a/src/java/test/org/jaxen/test/FunctionContextTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.io.ObjectOutputStream;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.FunctionContext;
-import org.jaxen.JaxenException;
-import org.jaxen.SimpleNamespaceContext;
-import org.jaxen.UnresolvableException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for function context.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class FunctionContextTest extends TestCase
-{
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- doc = factory.newDocumentBuilder().newDocument();
- Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
- root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.example.org/");
-
- }
-
- public void testJAXEN50() throws JaxenException {
-
- DOMXPath xpath = new DOMXPath("true()");
-
- SimpleNamespaceContext nsContext = new SimpleNamespaceContext();
- // Add all namespace declarations from the node
- nsContext.addElementNamespaces(xpath.getNavigator(), doc);
- xpath.setNamespaceContext(nsContext);
-
- boolean result = xpath.booleanValueOf(doc);
- assertTrue(result);
-
- }
-
- public void testUnresolvableFunction() throws JaxenException {
-
- DOMXPath xpath = new DOMXPath("nonesuch()");
-
- try {
- xpath.evaluate(doc);
- fail("Evaluated nonexistent function");
- }
- catch (UnresolvableException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testUnresolvableFunctionExceptionMessage() throws JaxenException {
-
- DOMXPath xpath = new DOMXPath("nonesuch()");
-
- try {
- xpath.evaluate(doc);
- fail("Evaluated nonexistent function");
- }
- catch (UnresolvableException ex) {
- assertEquals(-1, ex.getMessage().indexOf(':'));
- }
-
- }
-
- public void testGetFunctionContext() throws JaxenException {
- DOMXPath xpath = new DOMXPath("/root/child");
- assertNotNull(xpath.getFunctionContext());
- }
-
- public void testSerializeFunctionContext() throws JaxenException, IOException {
-
- DOMXPath xpath = new DOMXPath("/root/child");
- FunctionContext context = xpath.getFunctionContext();
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ObjectOutputStream oout = new ObjectOutputStream(out);
- try {
- oout.writeObject(context);
- fail("serialized function context");
- }
- catch (NotSerializableException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/FunctionTests.java b/src/java/test/org/jaxen/test/FunctionTests.java
deleted file mode 100644
index 2e1a3c1..0000000
--- a/src/java/test/org/jaxen/test/FunctionTests.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Suite for Jaxen's function tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class FunctionTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(TranslateFunctionTest.class));
- result.addTest(new TestSuite(SubstringTest.class));
- result.addTest(new TestSuite(SubstringBeforeTest.class));
- result.addTest(new TestSuite(SubstringAfterTest.class));
- result.addTest(new TestSuite(LangTest.class));
- result.addTest(new TestSuite(LastTest.class));
- result.addTest(new TestSuite(ConcatTest.class));
- result.addTest(new TestSuite(ContainsTest.class));
- result.addTest(new TestSuite(StringLengthTest.class));
- result.addTest(new TestSuite(StartsWithTest.class));
- result.addTest(new TestSuite(CountTest.class));
- result.addTest(new TestSuite(LocalNameTest.class));
- result.addTest(new TestSuite(NameTest.class));
- result.addTest(new TestSuite(NamespaceURITest.class));
- result.addTest(new TestSuite(SumTest.class));
- result.addTest(new TestSuite(NumberTest.class));
- result.addTest(new TestSuite(RoundTest.class));
- result.addTest(new TestSuite(StringTest.class));
- result.addTest(new TestSuite(BooleanTest.class));
- result.addTest(new TestSuite(CeilingTest.class));
- result.addTest(new TestSuite(FloorTest.class));
- result.addTest(new TestSuite(IdTest.class));
- result.addTest(new TestSuite(TrueTest.class));
- result.addTest(new TestSuite(FalseTest.class));
- result.addTest(new TestSuite(NotTest.class));
- result.addTest(new TestSuite(NormalizeSpaceTest.class));
- result.addTest(new TestSuite(PositionTest.class));
- result.addTest(new TestSuite(ExtensionFunctionTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/HelpersTests.java b/src/java/test/org/jaxen/test/HelpersTests.java
deleted file mode 100644
index 27cf0e4..0000000
--- a/src/java/test/org/jaxen/test/HelpersTests.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect the org.jaxen.saxpath.helpers tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class HelpersTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(XPathReaderFactoryTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/IdTest.java b/src/java/test/org/jaxen/test/IdTest.java
deleted file mode 100644
index a057b96..0000000
--- a/src/java/test/org/jaxen/test/IdTest.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class IdTest extends TestCase {
-
- private Document doc;
- private DocumentBuilder builder;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
- public IdTest(String name) {
- super(name);
- }
-
- public void testIDFunctionSelectsNothingInDocumentWithNoIds()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("id('p1')");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
- Attr id = doc.createAttribute("id");
- id.setNodeValue("p1");
- x2.setAttributeNode(id);
-
- List result = xpath.selectNodes(doc);
- assertEquals(0, result.size());
-
- }
-
- public void testIDFunctionRequiresAtLeastOneArgument()
- throws JaxenException {
-
- try {
- BaseXPath xpath = new DOMXPath("id()");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- xpath.selectNodes(doc);
- fail("Allowed empty id() function");
- }
- catch (FunctionCallException success) {
- assertNotNull(success.getMessage());
- }
-
- }
-
- public void testIDFunctionRequiresAtMostOneArgument()
- throws JaxenException {
-
- try {
- BaseXPath xpath = new DOMXPath("id('p', 'q')");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- xpath.selectNodes(doc);
- fail("Allowed two-argument id() function");
- }
- catch (FunctionCallException success) {
- assertNotNull(success.getMessage());
- }
-
- }
-
- public void testFindElementById()
- throws JaxenException, SAXException, IOException {
-
- BaseXPath xpath = new DOMXPath("id('p1')");
- String text = "<!DOCTYPE root [<!ATTLIST a id ID #REQUIRED>]><root><a id='p1'/></root>";
- StringReader reader = new StringReader(text);
- InputSource in = new InputSource(reader);
- Document doc = builder.parse(in);
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- Element a = (Element) result.get(0);
- assertEquals("a", a.getNodeName());
-
- }
-
- /* public void testFindElementByXMLId()
- throws JaxenException, SAXException, IOException {
-
- BaseXPath xpath = new DOMXPath("id('p1')");
- String text = "<root><a xml:id='p1'/></root>";
- StringReader reader = new StringReader(text);
- InputSource in = new InputSource(reader);
- Document doc = builder.parse(in);
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- Element a = (Element) result.get(0);
- assertEquals("a", a.getNodeName());
-
- } */
-
- public void testFindMultipleElementsByMultipleIDs()
- throws JaxenException, SAXException, IOException {
-
- BaseXPath xpath = new DOMXPath("id(//id)");
- String text = "<!DOCTYPE root [<!ATTLIST a id ID #REQUIRED>]><root><id>p1</id><id>p2</id><id>p3</id><a id='p1'/><a id='p2'/></root>";
- StringReader reader = new StringReader(text);
- InputSource in = new InputSource(reader);
- Document doc = builder.parse(in);
- List result = xpath.selectNodes(doc);
- assertEquals(2, result.size());
- Element a1 = (Element) result.get(0);
- Element a2 = (Element) result.get(1);
- assertEquals("a", a1.getNodeName());
- assertEquals("a", a2.getNodeName());
-
- }
-
- public void testIdReturnsFirstElementWithMatchingId()
- throws JaxenException, SAXException, IOException {
-
- BaseXPath xpath = new DOMXPath("id('p1')");
- String text = "<!DOCTYPE root [<!ATTLIST a id ID #REQUIRED>" +
- "<!ATTLIST b id ID #REQUIRED>]><root><a id='p1'/><b id='p1'/></root>";
- StringReader reader = new StringReader(text);
- InputSource in = new InputSource(reader);
- Document doc = builder.parse(in);
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- Element a = (Element) result.get(0);
- assertEquals("a", a.getNodeName());
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/IterableAxisTest.java b/src/java/test/org/jaxen/test/IterableAxisTest.java
deleted file mode 100644
index 1be089b..0000000
--- a/src/java/test/org/jaxen/test/IterableAxisTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/test/IterableAxisTest.java,v 1.1 2006/10/11 21:57:12 elharo Exp $
- * $Revision: 1.1 $
- * $Date: 2006/10/11 21:57:12 $
- *
- * ====================================================================
- *
- * Copyright 2006 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: IterableAxisTest.java,v 1.1 2006/10/11 21:57:12 elharo Exp $
- */
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenException;
-import org.jaxen.expr.iter.IterableAxis;
-import org.jaxen.expr.iter.IterableSelfAxis;
-import org.xml.sax.SAXException;
-
-/**
- * @author Elliotte Rusty Harold
- * @version 1.1b12
- *
- */
-public class IterableAxisTest extends TestCase {
-
- public void testIterableSelfNamedAxis()
- throws JaxenException, SAXException {
-
- IterableAxis axis = new IterableSelfAxis(0);
- try {
- axis.namedAccessIterator(null, null, "name", "pre", "http://www.example.org/");
- fail("should not support operation");
- }
- catch (UnsupportedOperationException ex) {
- assertEquals("Named access unsupported", ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/JDOMNavigatorTest.java b/src/java/test/org/jaxen/test/JDOMNavigatorTest.java
deleted file mode 100644
index 9b8ff57..0000000
--- a/src/java/test/org/jaxen/test/JDOMNavigatorTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import org.jaxen.JaxenException;
-import org.jaxen.Navigator;
-import org.jaxen.XPath;
-import org.jaxen.jdom.DocumentNavigator;
-import org.jaxen.jdom.JDOMXPath;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.Namespace;
-import org.jdom.input.SAXBuilder;
-
-public class JDOMNavigatorTest extends XPathTestBase
-{
- private SAXBuilder builder = new SAXBuilder();
-
- public JDOMNavigatorTest(String name)
- {
- super( name );
- }
-
- public Navigator getNavigator()
- {
- return new DocumentNavigator();
- }
-
- public Object getDocument(String url) throws Exception
- {
- return this.builder.build( url );
- }
-
-
- public void testNullNamespace() throws JaxenException {
-
- Namespace my = Namespace.getNamespace("foo", "http://mynamespace.org/");
- Document doc = new Document();
- Element root = new Element("root", my);
- doc.setRootElement(root);
- XPath nullNamespacePath = new JDOMXPath("/root");
- List selectedNodes = nullNamespacePath.selectNodes(doc);
- assertEquals(0, selectedNodes.size());
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/JDOMPerformance.java b/src/java/test/org/jaxen/test/JDOMPerformance.java
deleted file mode 100644
index 8826880..0000000
--- a/src/java/test/org/jaxen/test/JDOMPerformance.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- $Id$
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.test;
-
-import java.net.URL;
-
-import org.jaxen.jdom.JDOMXPath;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.input.SAXBuilder;
-
-class JDOMPerformance {
-
- public static void main(String[] args) {
- try {
- URL u = new URL("http://www.ibiblio.org/xml/examples/shakespeare/much_ado.xml");
- Document doc = new SAXBuilder().build(u);
- JDOMXPath xpath = new JDOMXPath("PLAY/ACT/SCENE/SPEECH/SPEAKER");
-
- long start = System.currentTimeMillis();
-
- int count = 0;
- for (int i = 0; i < 1000; i++) {
- Element speaker = (Element) xpath.selectSingleNode(doc);
- count += (speaker == null ? 0 : 1);
- }
-
- long end = System.currentTimeMillis();
- System.out.println((end - start));
- System.out.println(count);
-
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/JDOMTests.java b/src/java/test/org/jaxen/test/JDOMTests.java
deleted file mode 100644
index a2bea60..0000000
--- a/src/java/test/org/jaxen/test/JDOMTests.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect Jaxen's JDOM tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class JDOMTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(JDOMNavigatorTest.class));
- result.addTest(new TestSuite(JDOMXPathTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/JDOMXPathTest.java b/src/java/test/org/jaxen/test/JDOMXPathTest.java
deleted file mode 100644
index 8f23511..0000000
--- a/src/java/test/org/jaxen/test/JDOMXPathTest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Iterator;
-import java.util.List;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.jdom.JDOMXPath;
-import org.jdom.Attribute;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.Namespace;
-import org.jdom.Text;
-import org.jdom.input.SAXBuilder;
-import org.xml.sax.InputSource;
-
-public class JDOMXPathTest extends TestCase
-{
-
- private static final String BASIC_XML = "xml/basic.xml";
-
- public JDOMXPathTest(String name)
- {
- super( name );
- }
-
- public void testConstruction() throws JaxenException
- {
- new JDOMXPath( "/foo/bar/baz" );
- }
-
- public void testSelection() throws JaxenException, JDOMException, IOException
- {
- XPath xpath = new JDOMXPath( "/foo/bar/baz" );
-
- SAXBuilder builder = new SAXBuilder();
-
- Document doc = builder.build( BASIC_XML );
-
- List results = xpath.selectNodes( doc );
-
- assertEquals( 3,
- results.size() );
-
- Iterator iter = results.iterator();
-
- assertEquals( "baz",
- ((Element)iter.next()).getName() );
-
- assertEquals( "baz",
- ((Element)iter.next()).getName() );
-
- assertEquals( "baz",
- ((Element)iter.next()).getName() );
-
- assertTrue( ! iter.hasNext() );
- }
-
-
- public void testGetDocumentNode() throws JaxenException, JDOMException, IOException
- {
- XPath xpath = new JDOMXPath( "/" );
-
- SAXBuilder builder = new SAXBuilder();
-
- Document doc = builder.build( BASIC_XML );
-
- Element root = doc.getRootElement();
- List results = xpath.selectNodes( root );
-
- assertEquals( 1,
- results.size() );
-
- Iterator iter = results.iterator();
-
- assertEquals( doc, iter.next());
-
- }
-
- public void testJaxen148() throws JaxenException, JDOMException, IOException {
- String xml = "<xml-document><nodes><node>" +
- "\ntest\n" +
- "</node></nodes></xml-document>";
-
- SAXBuilder builder = new SAXBuilder();
- Document document = builder.build( new InputSource( new StringReader(xml) ) );
-
- JDOMXPath x = new JDOMXPath("/xml-document/nodes/node/text()");
- Text t = (Text) x.selectSingleNode(document);
-
- assertEquals( "\ntest\n" , t.getText() );
-
- }
-
-
- public void testJaxen53Text() throws JaxenException, JDOMException, IOException
- {
- XPath xpath = new JDOMXPath( "//data/text() " );
-
- SAXBuilder builder = new SAXBuilder();
-
- Document doc = builder.build( new StringReader("<root>\n<data>1</data>\n</root>") );
-
- List results = xpath.selectNodes( doc );
-
- assertEquals( 1,
- results.size() );
-
- Iterator iter = results.iterator();
-
- Text result = (Text) iter.next();
- assertEquals( "1", result.getValue());
-
- }
-
- public void testJaxen20AttributeNamespaceNodes() throws JaxenException
- {
- Namespace ns1 = Namespace.getNamespace("p1", "www.acme1.org");
- Namespace ns2 = Namespace.getNamespace("p2", "www.acme2.org");
- Element element = new Element("test", ns1);
- Attribute attribute = new Attribute("foo", "bar", ns2);
- element.setAttribute(attribute);
- Document doc = new Document(element);
-
- XPath xpath = new JDOMXPath( "//namespace::node()" );
-
- List results = xpath.selectNodes( doc );
-
- assertEquals( 3,
- results.size() );
-
- }
-
- public void testNamespaceNodesAreInherited() throws JaxenException
- {
- Namespace ns0 = Namespace.getNamespace("p0", "www.acme0.org");
- Namespace ns1 = Namespace.getNamespace("p1", "www.acme1.org");
- Namespace ns2 = Namespace.getNamespace("p2", "www.acme2.org");
- Element element = new Element("test", ns1);
- Attribute attribute = new Attribute("foo", "bar", ns2);
- element.setAttribute(attribute);
- Element root = new Element("root", ns0);
- root.addContent(element);
- Document doc = new Document(root);
-
- XPath xpath = new JDOMXPath( "/*/*/namespace::node()" );
-
- List results = xpath.selectNodes( doc );
-
- assertEquals( 4, results.size() );
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/JavaBeanNavigatorTest.java b/src/java/test/org/jaxen/test/JavaBeanNavigatorTest.java
deleted file mode 100644
index 62e678a..0000000
--- a/src/java/test/org/jaxen/test/JavaBeanNavigatorTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.jaxen.test;
-
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenException;
-import org.jaxen.javabean.JavaBeanXPath;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-
-public class JavaBeanNavigatorTest
- extends TestCase
-{
-
- protected void setUp() throws Exception
- {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "" );
- }
-
- public void testSomething() throws JaxenException {
-
- // The position() function does not really have any meaning
- // for JavaBeans, but we know three of them will come before the fourth,
- // even if we don't know which ones.
- JavaBeanXPath xpath = new JavaBeanXPath( "brother[position()<4]/name" );
-
- Person bob = new Person( "bob", 30 );
-
- bob.addBrother( new Person( "billy", 34 ) );
- bob.addBrother( new Person( "seth", 29 ) );
- bob.addBrother( new Person( "dave", 32 ) );
- bob.addBrother( new Person( "jim", 29 ) );
- bob.addBrother( new Person( "larry", 42 ) );
- bob.addBrother( new Person( "ted", 22 ) );
-
- List result = (List) xpath.evaluate( bob );
- assertEquals(3, result.size());
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/JavaBeanTests.java b/src/java/test/org/jaxen/test/JavaBeanTests.java
deleted file mode 100644
index 982db0a..0000000
--- a/src/java/test/org/jaxen/test/JavaBeanTests.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect Jaxen's JavaBean tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class JavaBeanTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(JavaBeanNavigatorTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/JaxenExceptionTest.java b/src/java/test/org/jaxen/test/JaxenExceptionTest.java
deleted file mode 100644
index 4757dd3..0000000
--- a/src/java/test/org/jaxen/test/JaxenExceptionTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.jaxen.JaxenException;
-
-import junit.framework.TestCase;
-
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class JaxenExceptionTest extends TestCase {
-
- public JaxenExceptionTest(String name) {
- super(name);
- }
-
- public void testMessageIsNonNull() {
- JaxenException ex = new JaxenException("Hello");
- assertEquals("Hello", ex.getMessage());
- }
-
- public void testPrintStackTrace() {
- StringIndexOutOfBoundsException cause = new StringIndexOutOfBoundsException("1234");
- JaxenException ex = new JaxenException(cause);
- StringWriter out = new StringWriter();
- PrintWriter pw = new PrintWriter(out);
- ex.printStackTrace(pw);
- pw.close();
- String trace = out.toString();
- assertEquals(-1, trace.indexOf("Root cause:"));
- assertTrue(trace.indexOf("Caused by: java.lang.StringIndexOutOfBoundsException") > 0);
- assertTrue(trace.indexOf("1234") > 0);
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/JaxenHandlerTest.java b/src/java/test/org/jaxen/test/JaxenHandlerTest.java
deleted file mode 100644
index 0e3fcbf..0000000
--- a/src/java/test/org/jaxen/test/JaxenHandlerTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenHandler;
-import org.jaxen.expr.DefaultXPathFactory;
-import org.jaxen.expr.XPathExpr;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.XPathReader;
-import org.jaxen.saxpath.XPathSyntaxException;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-
-public class JaxenHandlerTest extends TestCase
-{
-
- private String[] paths = {
- "foo[.='bar']",
- "foo[.!='bar']",
- "/",
- "*",
- "//foo",
- "/*",
- "/.",
- "/foo[/bar[/baz]]",
- "/foo/bar/baz[(1 or 2) + 3 * 4 + 8 and 9]",
- "/foo/bar/baz",
- ".[1]",
- "self::node()",
- ".",
- "count(/)",
- "foo[1]",
- "/baz[(1 or 2) + 3 * 4 + 8 and 9]",
- "foo/bar[/baz[(1 or 2) - 3 mod 4 + 8 and 9 div 8]]",
- "foo/bar/yeah:baz[a/b/c and toast]",
- "/foo/bar[../x='123']",
- "/foo[@bar='1234']",
- "foo|bar",
- "/foo|/bar[@id='1234']",
- "count(//author/attribute::*)",
- "$author",
- "10 + $foo",
- "10 + (count(descendant::author) * 5)",
- "10 + count(descendant::author) * 5",
- "2 + (2 * 5)",
- "sum(count(//author), 5)",
- "sum(count(//author),count(//author/attribute::*))",
- "12 + sum(count(//author),count(//author/attribute::*)) div 2",
- "text()[.='foo']",
- "/*/*[@id='123']",
- "/child::node()/child::node()[@id='_13563275']",
- "$foo:bar",
- "//foo:bar",
- "/foo/bar[@a='1' and @c!='2']",
- };
-
- private String[] bogusPaths = { "//:p" ,
- // this path is bogus because of a trailing /
- "/foo/bar/",
-
- // This path is bogus because '/' is not division, but
- // rather just the step separator.
- "12 + sum(count(//author),count(//author/attribute::*)) / 2",
- "id()/2",
- "+"
- };
-
- public JaxenHandlerTest(String name)
- {
- super( name );
- }
-
- public void testValidPaths()
- {
-
- String path = null;
-
- try
- {
- // XXX Jiffie solution?
- XPathReader reader = XPathReaderFactory.createReader();
- JaxenHandler handler = new JaxenHandler();
- handler.setXPathFactory( new DefaultXPathFactory() );
- reader.setXPathHandler( handler );
-
- for ( int i = 0; i < paths.length; i++ ) {
- path = paths[i];
- reader.parse(path);
- handler.getXPathExpr(false);
- handler.getXPathExpr();
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail( path + " -> " + e.getMessage() );
- }
- }
-
- public void testBogusPaths() throws SAXPathException
- {
- XPathReader reader = XPathReaderFactory.createReader();
- JaxenHandler handler = new JaxenHandler();
- handler.setXPathFactory( new DefaultXPathFactory() );
- reader.setXPathHandler( handler );
-
- for ( int i = 0; i < bogusPaths.length; i++ ) {
- String path = bogusPaths[i];
-
- try
- {
- reader.parse(path);
- XPathExpr xpath = handler.getXPathExpr(false);
- fail( "Parsed bogus path as: " + xpath );
- }
- catch (XPathSyntaxException e)
- {
- }
- }
- }
-}
diff --git a/src/java/test/org/jaxen/test/JaxenRuntimeExceptionTest.java b/src/java/test/org/jaxen/test/JaxenRuntimeExceptionTest.java
deleted file mode 100644
index 8a19fa0..0000000
--- a/src/java/test/org/jaxen/test/JaxenRuntimeExceptionTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.jaxen.JaxenException;
-import org.jaxen.JaxenRuntimeException;
-
-import junit.framework.TestCase;
-
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class JaxenRuntimeExceptionTest extends TestCase {
-
- public JaxenRuntimeExceptionTest(String name) {
- super(name);
- }
-
- public void testMessageIsNonNull() {
-
- JaxenException ex = new JaxenException("Hello");
- JaxenRuntimeException rex = new JaxenRuntimeException(ex);
- assertEquals(ex.getMessage(), rex.getMessage());
- assertEquals(ex, rex.getCause());
-
- }
-
- public void testPrintStackTrace() {
- JaxenException cause = new JaxenException("1234");
- JaxenRuntimeException ex = new JaxenRuntimeException(cause);
- StringWriter out = new StringWriter();
- PrintWriter pw = new PrintWriter(out);
- ex.printStackTrace(pw);
- pw.close();
- assertTrue(out.toString().indexOf("Caused by: org.jaxen.JaxenException") > 0);
- assertTrue(out.toString().indexOf("1234") > 0);
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/JaxenTests.java b/src/java/test/org/jaxen/test/JaxenTests.java
deleted file mode 100644
index 0a42953..0000000
--- a/src/java/test/org/jaxen/test/JaxenTests.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect all the Jaxen tests into one suite.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class JaxenTests {
-
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(SAXPathTests.suite());
- result.addTest(FunctionTests.suite());
- result.addTest(CoreTests.suite());
- result.addTest(DOMTests.suite());
- result.addTest(JDOMTests.suite());
- result.addTest(DOM4JTests.suite());
- result.addTest(JavaBeanTests.suite());
- result.addTest(PatternTests.suite());
- result.addTest(BaseTests.suite());
- result.addTest(HelpersTests.suite());
- result.addTest(ExprTests.suite());
- result.addTest(UtilTests.suite());
- return result;
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/LangTest.java b/src/java/test/org/jaxen/test/LangTest.java
deleted file mode 100644
index f12d492..0000000
--- a/src/java/test/org/jaxen/test/LangTest.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class LangTest extends TestCase {
-
- private Document doc;
- private DocumentBuilder builder;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
- public LangTest(String name) {
- super(name);
- }
-
- public void testLangFunction()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//*[lang('en')]");
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "en");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(3, result.size());
- assertEquals(b, result.get(0));
- assertEquals(x2, result.get(1));
- assertEquals(x3, result.get(2));
-
- }
-
- public void testLangFunctionSelectsNothing()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//*[lang('fr')]");
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "en");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(0, result.size());
-
- }
-
- public void testLangFunctionSelectsSubcode()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//*[lang('fr')]");
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "fr-CA");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(3, result.size());
- assertEquals(b, result.get(0));
- assertEquals(x2, result.get(1));
- assertEquals(x3, result.get(2));
-
- }
-
- public void testHyphenRequiredAtEnd()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//*[lang('f')]");
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "fr-CA");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(0, result.size());
-
- }
-
- public void testLangFunctionSelectsEmptyNodeSet()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//*[lang(d)]");
- // This node-set will be empty. Therefore it's the same as the
- // empty string. Therefore it matches all languages.
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "fr-CA");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(0, result.size());
-
- }
-
- public void testLangFunctionSelectsNonEmptyNodeSet()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//*[lang(x)]");
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "fr-CA");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("fr"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(b, result.get(0));
-
- }
-
- public void testLangFunctionAppliedToNonElement()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//text()[lang('fr')]");
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "fr-CA");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("fr"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(2, result.size());
- assertEquals(x2.getFirstChild(), result.get(0));
- assertEquals(x3.getFirstChild(), result.get(1));
-
- }
-
- public void testLangFunctionAppliedToDocument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("lang('fr')");
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "fr-CA");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("fr"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertEquals(Boolean.FALSE, result);
-
- }
-
- public void testLangFunctionSelectsNumber()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//*[lang(3)]");
-
- Element a = doc.createElementNS("", "a");
- Element b = doc.createElementNS("", "b");
- b.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:lang", "fr-CA");
- doc.appendChild(a);
- a.appendChild(b);
- Element x2 = doc.createElementNS("", "x");
- Element x3 = doc.createElementNS("", "x");
- Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(0, result.size());
-
- }
-
- public void testLangFunctionRequiresOneArgument()
- throws JaxenException {
-
- try {
- BaseXPath xpath = new DOMXPath("lang()");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- xpath.selectNodes(doc);
- fail("Allowed empty lang() function");
- }
- catch (FunctionCallException success) {
- assertNotNull(success.getMessage());
- }
-
- }
-
- public void testLangFunctionRequiresAtMostOneArgument()
- throws JaxenException {
-
- try {
- BaseXPath xpath = new DOMXPath("lang('en', 'fr')");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- xpath.selectNodes(doc);
- fail("Allowed empty lang() function");
- }
- catch (FunctionCallException success) {
- assertNotNull(success.getMessage());
- }
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/LastTest.java b/src/java/test/org/jaxen/test/LastTest.java
deleted file mode 100644
index 0195b42..0000000
--- a/src/java/test/org/jaxen/test/LastTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class LastTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
-
- public LastTest(String name) {
- super(name);
- }
-
- // test case for JAXEN-55
- public void testLastFunction()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("//x[position()=last()]");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(2, result.size());
- assertEquals(x3, result.get(0));
- assertEquals(x4, result.get(1));
-
- }
-
- public void testLastFunctionAllowsNoArguments() throws JaxenException
- {
- try
- {
- BaseXPath xpath = new DOMXPath("//x[position()=last(.)]");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- xpath.selectNodes(doc);
- fail("last() function took arguments");
- }
- catch (FunctionCallException e)
- {
- assertEquals("last() requires no arguments.", e.getMessage());
- }
- }
-
-
-
-
-}
diff --git a/src/java/test/org/jaxen/test/LiteralExprTest.java b/src/java/test/org/jaxen/test/LiteralExprTest.java
deleted file mode 100644
index dab2aa5..0000000
--- a/src/java/test/org/jaxen/test/LiteralExprTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/test/LiteralExprTest.java,v 1.2 2007/01/05 18:25:09 elharo Exp $
- * $Revision: 1.2 $
- * $Date: 2007/01/05 18:25:09 $
- *
- * ====================================================================
- *
- * Copyright 2006 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: LiteralExprTest.java,v 1.2 2007/01/05 18:25:09 elharo Exp $
- */
-
-
-
-package org.jaxen.test;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for various kinds of literals.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1.1
- *
- */
-public class LiteralExprTest extends TestCase
-{
-
- public void testStringLiteralContainsDoubleQuote()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("'\"'");
- String expr = xpath.getRootExpr().getText();
- assertEquals("'\"'", expr);
-
- }
-
- public void testStringLiteralContainsSingleQuote()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("\"'\"");
- String expr = xpath.getRootExpr().getText();
- assertEquals("\"'\"", expr);
-
- }
-
- public void testJaxen177()
- throws JaxenException, ParserConfigurationException {
-
- BaseXPath baseXPath = new BaseXPath("//Name[@Attribute = '\"']", null);
- BaseXPath baseXPath2 = new BaseXPath(baseXPath.getRootExpr().getText(), null);
- assertEquals(
- "/descendant-or-self::node()/child::Name[(attribute::Attribute = '\"')]",
- baseXPath2.getRootExpr().getText());
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/LocalNameTest.java b/src/java/test/org/jaxen/test/LocalNameTest.java
deleted file mode 100644
index 7a5858e..0000000
--- a/src/java/test/org/jaxen/test/LocalNameTest.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXException;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class LocalNameTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException, SAXException, IOException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.parse( "xml/basic.xml" );
- }
-
-
- public LocalNameTest(String name) {
- super(name);
- }
-
- public void testLocalNameOfNumber() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "local-name(3)" );
- xpath.selectNodes( doc );
- fail("local-name of non-node-set");
- }
- catch (FunctionCallException e)
- {
- assertEquals("The argument to the local-name function must be a node-set", e.getMessage());
- }
- }
-
- public void testLocalNameWithTwoArguments() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "local-name(/*, //*)" );
- xpath.selectNodes( doc );
- fail("local-name with two arguments");
- }
- catch (FunctionCallException e)
- {
- assertEquals("local-name() requires zero or one argument.", e.getMessage());
- }
- }
-
- public void testLocalNameAllowsNoArguments() throws JaxenException
- {
- XPath xpath = new DOMXPath( "local-name()" );
- String result = (String) xpath.evaluate( doc.getDocumentElement() );
- assertEquals("foo", result);
- }
-
- public void testLocalNameOfCommentIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "local-name(/comment())" );
- Comment c = doc.createComment("test");
- doc.appendChild(c);
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testLocalNameOfEmptyNodeSetIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "local-name(/aaa)" );
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testLocalNameOfProcessingInstructionIsTarget() throws JaxenException
- {
- XPath xpath = new DOMXPath( "local-name(/processing-instruction())" );
- ProcessingInstruction pi = doc.createProcessingInstruction("target", "value");
- doc.appendChild(pi);
- String result = (String) xpath.evaluate(doc);
- assertEquals("target", result);
- }
-
- public void testLocalNameOfAttribute() throws JaxenException
- {
- XPath xpath = new DOMXPath( "local-name(/*/@*)" );
- Attr a = doc.createAttribute("name");
- doc.getDocumentElement().setAttributeNode(a);
- String result = (String) xpath.evaluate(doc);
- assertEquals("name", result);
- }
-
- public void testLocalNameOfTextIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "local-name(/*/text())" );
- Text c = doc.createTextNode("test");
- doc.getDocumentElement().appendChild(c);
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testLocalNameOfNamespaceIsPrefix() throws JaxenException
- {
- XPath xpath = new DOMXPath( "local-name(/*/namespace::node())" );
- String result = (String) xpath.evaluate(doc);
- assertEquals("xml", result);
- }
-
- public void testLocalNameNoArguments()
- {
- try
- {
- XPath xpath = new DOMXPath( "local-name()" );
- List results = xpath.selectNodes( doc );
- assertEquals("", results.get(0));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail( e.getMessage() );
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/MockXPathReader.java b/src/java/test/org/jaxen/test/MockXPathReader.java
deleted file mode 100644
index 0f60cbe..0000000
--- a/src/java/test/org/jaxen/test/MockXPathReader.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import org.jaxen.saxpath.XPathHandler;
-import org.jaxen.saxpath.XPathReader;
-
-
-public class MockXPathReader implements XPathReader
-{
-
- public void parse(String xpath)
- {
- }
-
- public void setXPathHandler(XPathHandler handler)
- {
- }
-
- public XPathHandler getXPathHandler()
- {
- return null;
- }
-}
diff --git a/src/java/test/org/jaxen/test/ModTest.java b/src/java/test/org/jaxen/test/ModTest.java
deleted file mode 100644
index a38fc28..0000000
--- a/src/java/test/org/jaxen/test/ModTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for the remainder function.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1.1
- *
- */
-public class ModTest extends TestCase
-{
-
- public void testModofNonIntegers()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("5.5 mod 2.5");
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- Element root = doc.createElement("root");
- doc.appendChild(root);
-
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(0.5, result.doubleValue(), 0.000001);
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/NameTest.java b/src/java/test/org/jaxen/test/NameTest.java
deleted file mode 100644
index 5aab39d..0000000
--- a/src/java/test/org/jaxen/test/NameTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXException;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class NameTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException, SAXException, IOException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.parse( "xml/basic.xml" );
- }
-
-
- public NameTest(String name) {
- super(name);
- }
-
- public void testNameOfNumber() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "name(3)" );
- xpath.selectNodes( doc );
- fail("name of non-node-set");
- }
- catch (FunctionCallException e)
- {
- assertEquals("The argument to the name function must be a node-set", e.getMessage());
- }
- }
-
- public void testNameWithTwoArguments() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "name(/*, //*)" );
- xpath.selectNodes( doc );
- fail("name with two arguments");
- }
- catch (FunctionCallException e)
- {
- assertEquals("name() requires zero or one argument.", e.getMessage());
- }
- }
-
- public void testNameAllowsNoArguments() throws JaxenException
- {
- XPath xpath = new DOMXPath( "name()" );
- String result = (String) xpath.evaluate( doc.getDocumentElement() );
- assertEquals("foo", result);
- }
-
- public void testNameOfCommentIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "name(/comment())" );
- Comment c = doc.createComment("test");
- doc.appendChild(c);
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testNameOfProcessingInstructionIsTarget() throws JaxenException
- {
- XPath xpath = new DOMXPath( "name(/processing-instruction())" );
- ProcessingInstruction pi = doc.createProcessingInstruction("target", "value");
- doc.appendChild(pi);
- String result = (String) xpath.evaluate(doc);
- assertEquals("target", result);
- }
-
- public void testNameOfAttribute() throws JaxenException
- {
- XPath xpath = new DOMXPath( "name(/*/@*)" );
- Attr a = doc.createAttribute("name");
- doc.getDocumentElement().setAttributeNode(a);
- String result = (String) xpath.evaluate(doc);
- assertEquals("name", result);
- }
-
- public void testNameOfTextIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "name(/*/text())" );
- Text c = doc.createTextNode("test");
- doc.getDocumentElement().appendChild(c);
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testNameOfNamespaceIsPrefix() throws JaxenException
- {
- XPath xpath = new DOMXPath( "name(/*/namespace::node())" );
- String result = (String) xpath.evaluate(doc);
- assertEquals("xml", result);
- }
-
- public void testNameNoArguments()
- {
- try
- {
- XPath xpath = new DOMXPath( "name()" );
- List results = xpath.selectNodes( doc );
- assertEquals("", results.get(0));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail( e.getMessage() );
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/NamespaceTest.java b/src/java/test/org/jaxen/test/NamespaceTest.java
deleted file mode 100644
index 9f38f6e..0000000
--- a/src/java/test/org/jaxen/test/NamespaceTest.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.SimpleNamespaceContext;
-import org.jaxen.UnresolvableException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-
-import junit.framework.TestCase;
-
-public class NamespaceTest extends TestCase {
-
- private org.w3c.dom.Document doc;
-
- public NamespaceTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- doc = factory.newDocumentBuilder().newDocument();
-
- }
-
- public void testMultipleNamespaceAxis() throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElementNS("http://www.example.org", "child");
- child.setAttributeNS("http://www.w3.org/2000/xmlns/" , "xmlns:pre", "value");
- root.appendChild(child);
-
- XPath xpath = new DOMXPath("namespace::node()");
- List result = xpath.selectNodes(child);
- assertEquals(3, result.size());
-
- }
-
- public void testNumberOfNamespaceNodes() throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElementNS("http://www.example.org", "foo:child");
- root.appendChild(child);
-
- XPath xpath = new DOMXPath("//namespace::node()");
- List result = xpath.selectNodes(doc);
- assertEquals(3, result.size());
- // 1 for xml prefix on root; 1 for foo prefix on child; 1 for xml prefix on child
-
- }
-
-
- public void testNamespaceAxis() throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElementNS("http://www.example.org", "foo:child");
- root.appendChild(child);
-
- XPath xpath = new DOMXPath("namespace::node()");
- List result = xpath.selectNodes(child);
- assertEquals(2, result.size());
-
- }
-
-
- public void testUnprefixedNamespaceAxis() throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Element child = doc.createElementNS("http://www.example.org", "child");
- root.appendChild(child);
-
- XPath xpath = new DOMXPath("namespace::node()");
- List result = xpath.selectNodes(child);
- assertEquals(2, result.size());
-
- }
-
-
- public void testNamespaceNodesReadFromAttributes() throws JaxenException {
-
- Element root = doc.createElement("root");
- doc.appendChild(root);
- Attr a = doc.createAttributeNS("http://www.example.org/", "a");
- a.setNodeValue("value");
- root.setAttributeNode(a);
-
- XPath xpath = new DOMXPath("namespace::node()");
- List result = xpath.selectNodes(root);
- // one for the xml prefix; one from the attribute node
- assertEquals(2, result.size());
-
- }
-
-
- public void testUnboundNamespaceUsedInXPathExpression() throws JaxenException {
-
- Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
- XPath xpath = new DOMXPath("/pre:root");
- try {
- xpath.selectNodes(root);
- fail("Used unresolvable prefix");
- }
- catch (UnresolvableException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-
- public void testQueryDefaultNamespace() throws JaxenException {
-
- Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
- XPath xpath = new DOMXPath("/pre:root");
- xpath.addNamespace("pre", "http://www.example.org/");
- List result = xpath.selectNodes(root);
- assertEquals(1, result.size());
-
- }
-
-
- public void testQueryDefaultNamespaceWithContext() throws JaxenException {
-
- Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
- XPath xpath = new DOMXPath("/pre:root");
- SimpleNamespaceContext context = new SimpleNamespaceContext();
- context.addNamespace("pre", "http://www.example.org/");
- xpath.setNamespaceContext(context);
- List result = xpath.selectNodes(root);
- assertEquals(1, result.size());
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/NamespaceURITest.java b/src/java/test/org/jaxen/test/NamespaceURITest.java
deleted file mode 100644
index 88abe37..0000000
--- a/src/java/test/org/jaxen/test/NamespaceURITest.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXException;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class NamespaceURITest extends TestCase {
-
- private Document doc;
- private DocumentBuilder builder;
-
- public void setUp() throws ParserConfigurationException, SAXException, IOException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- builder = factory.newDocumentBuilder();
- doc = builder.parse( "xml/basic.xml" );
- }
-
-
- public NamespaceURITest(String name) {
- super(name);
- }
-
- public void testNamespaceURIOfNumber() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "namespace-uri(3)" );
- xpath.selectNodes( doc );
- fail("namespace-uri of non-node-set");
- }
- catch (FunctionCallException e)
- {
- assertEquals("The argument to the namespace-uri function must be a node-set", e.getMessage());
- }
- }
-
- public void testNamespaceURINoArguments() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri()" );
- List results = xpath.selectNodes( doc );
- assertEquals("", results.get(0));
- }
-
- public void testNamespaceURIOfEmptyNodeSetIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri(/aaa)" );
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testNamespaceURIOfProcessingInstructionIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri(/processing-instruction())" );
- ProcessingInstruction pi = doc.createProcessingInstruction("target", "value");
- doc.appendChild(pi);
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testNamespaceURIOfAttribute() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri(/*/@*)" );
- Attr a = doc.createAttribute("name");
- doc.getDocumentElement().setAttributeNode(a);
- Object result = xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testNamespaceURIOfAttributeInNamespace() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri(/*/@*)" );
- Attr a = doc.createAttributeNS("http://www.w3.org/", "pre:name");
- doc.getDocumentElement().setAttributeNode(a);
- Object result = xpath.evaluate(doc);
- assertEquals("http://www.w3.org/", result);
- }
-
- public void testNamespaceURIOfTextIsEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri(/*/text())" );
- Text c = doc.createTextNode("test");
- doc.getDocumentElement().appendChild(c);
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testNamespaceURIRequiresAtMostOneArgument() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri(/*, /*)" );
- try {
- xpath.evaluate(doc);
- fail("Allowed namespace-uri function with no arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
- public void testNamespaceURIOfNamespaceIsNull() throws JaxenException
- {
- XPath xpath = new DOMXPath( "namespace-uri(/*/namespace::node())" );
- String result = (String) xpath.evaluate(doc);
- assertEquals("", result);
- }
-
- public void testNamespaceURIOfComment()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("namespace-uri(/a/comment())");
- Document document = builder.getDOMImplementation().createDocument(null, "a", null);
- document.getDocumentElement().appendChild(document.createComment("data"));
-
- String result = (String) xpath.evaluate(document);
- assertEquals("", result);
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/NormalizeSpaceTest.java b/src/java/test/org/jaxen/test/NormalizeSpaceTest.java
deleted file mode 100644
index 4ff72f5..0000000
--- a/src/java/test/org/jaxen/test/NormalizeSpaceTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class NormalizeSpaceTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public NormalizeSpaceTest(String name) {
- super(name);
- }
-
- public void testNormalizeSpaceUsesXMLSpaceRulesNotJavaRules() throws JaxenException
- {
- // em space counts as whitespace in Java but not XML
- String data = "\u2003X\u2003";
- XPath xpath = new DOMXPath( "normalize-space('" + data + "')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals(data, result);
- }
-
- public void testNormalizeSpaceUsesXMLSpaceRulesNotJavaRules2() throws JaxenException
- {
- // em space counts as whitespace in Java but not XML
- String data = "\u2003X\u2003";
- XPath xpath = new DOMXPath( "normalize-space(' " + data + " ')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals(data, result);
- }
-
- public void testNormalizeSpaceInContextNode() throws JaxenException
- {
- XPath xpath = new DOMXPath( "normalize-space()" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testNormalizeSpaceRequiresAtMostOneArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("normalize-space('a', 'a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed normalize-space function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/NotTest.java b/src/java/test/org/jaxen/test/NotTest.java
deleted file mode 100644
index e2b404a..0000000
--- a/src/java/test/org/jaxen/test/NotTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class NotTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public NotTest(String name) {
- super(name);
- }
-
- public void testZeroIsFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("not(0)");
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(Boolean.TRUE, result.get(0));
-
- }
-
- public void testOneIsTrue()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("not(1)");
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(Boolean.FALSE, result.get(0));
-
- }
-
- public void testEmptyStringIsFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("not('')");
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(Boolean.TRUE, result.get(0));
-
- }
-
- public void testNaNIsFalse()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("not(0 div 0)");
- Object result = xpath.evaluate(null);
- assertEquals(Boolean.TRUE, result);
-
- }
-
- public void testNonEmptyStringIsTrue()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("not('false')");
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(Boolean.FALSE, result.get(0));
-
- }
-
- public void testNotFunctionRequiresOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("not()");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed not() function with no arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testNotFunctionRequiresExactlyOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("not('', '')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed not() function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/NumberTest.java b/src/java/test/org/jaxen/test/NumberTest.java
deleted file mode 100644
index 12dff02..0000000
--- a/src/java/test/org/jaxen/test/NumberTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.function.NumberFunction;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class NumberTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
-
- public NumberTest(String name) {
- super(name);
- }
-
- // test case for JAXEN-55
- public void testNumberFunctionOperatesOnFirstNodeInDocumentOrder()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("number(//x)");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals(Double.valueOf("2.0"), result.get(0));
-
- }
-
- public void testNumberFunctionOperatesOnContextNode()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("number()");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- a.appendChild(doc.createTextNode("2"));
-
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(2, result.intValue());
-
- }
-
-
- public void testNumberFunctionRequiresAtMostOneArgument()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("number('2.2', '1.2')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed number function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-
- public void testNumberFunctionAppliedToNonNumericString()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("number('Marx')");
-
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(new Double(Double.NaN), result);
-
- }
-
- public void testIsNan() {
- assertTrue(NumberFunction.isNaN(0.0 / 0.0));
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/PatternHandlerTest.java b/src/java/test/org/jaxen/test/PatternHandlerTest.java
deleted file mode 100644
index 2dee268..0000000
--- a/src/java/test/org/jaxen/test/PatternHandlerTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenException;
-import org.jaxen.pattern.Pattern;
-import org.jaxen.pattern.PatternParser;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.XPathSyntaxException;
-
-public class PatternHandlerTest extends TestCase
-{
-
- String[] paths = {
- "foo",
- "*",
- "/",
- "foo/bar",
- "foo//bar",
- "/*/foo",
- "*[@name]",
- "foo/bar[1]",
- "foo[bar=\"contents\"]",
- "foo[bar='contents']",
- "foo|bar",
- "foo/title | bar/title | xyz/title",
- "/foo//*",
- "foo/text()",
- "foo/@*",
- };
-
- String[] bogusPaths = { };
-
- String[] ignore_bogusPaths = {
- // this path is bogus because of a trailing /
- "/foo/bar/",
-
- // This path is bogus because '/' is not division, but
- // rather just the step separator.
- "12 + sum(count(//author),count(//author/attribute::*)) / 2",
- "id()/2",
- "+"
- };
-
- public PatternHandlerTest(String name)
- {
- super( name );
- }
-
- public void testValidPaths() throws JaxenException, SAXPathException
- {
- for ( int i = 0; i < paths.length; i++ ) {
- String path = paths[i];
- PatternParser.parse( path );
- }
- }
-
- public void testBogusPaths() throws JaxenException, SAXPathException
- {
- for ( int i = 0; i < bogusPaths.length; i++ ) {
- String path = bogusPaths[i];
- try
- {
- Pattern pattern = PatternParser.parse( path );
- fail( "Parsed bogus path as: " + pattern );
- }
- catch (XPathSyntaxException e)
- {
- }
- }
-
- }
-}
diff --git a/src/java/test/org/jaxen/test/PatternTests.java b/src/java/test/org/jaxen/test/PatternTests.java
deleted file mode 100644
index 3522da8..0000000
--- a/src/java/test/org/jaxen/test/PatternTests.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect the org.jaxen.pattern tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class PatternTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(PatternHandlerTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/Person.java b/src/java/test/org/jaxen/test/Person.java
deleted file mode 100644
index b4c73e9..0000000
--- a/src/java/test/org/jaxen/test/Person.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.jaxen.test;
-
-import java.util.Set;
-import java.util.HashSet;
-
-public class Person
-{
- private String name;
- private int age;
-
- private Set brothers;
-
- Person(String name, int age)
- {
- this.name = name;
- this.age = age;
- this.brothers = new HashSet();
- }
-
- public String getName()
- {
- return this.name;
- }
-
- public int getAge()
- {
- return this.age;
- }
-
- void addBrother(Person brother)
- {
- this.brothers.add( brother );
- }
-
- public Set getBrothers()
- {
- return this.brothers;
- }
-
- public String toString()
- {
- return "[Person: " + this.name + "]";
- }
-}
diff --git a/src/java/test/org/jaxen/test/PositionTest.java b/src/java/test/org/jaxen/test/PositionTest.java
deleted file mode 100644
index cc6e2cc..0000000
--- a/src/java/test/org/jaxen/test/PositionTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class PositionTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public PositionTest(String name) {
- super(name);
- }
-
- public void testPositionOfNumber() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "position(3)" );
- xpath.selectNodes( doc );
- fail("position() function took arguments");
- }
- catch (FunctionCallException e)
- {
- assertEquals("position() does not take any arguments.", e.getMessage());
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/PrecedingAxisIteratorTest.java b/src/java/test/org/jaxen/test/PrecedingAxisIteratorTest.java
deleted file mode 100644
index 0d052ec..0000000
--- a/src/java/test/org/jaxen/test/PrecedingAxisIteratorTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.util.PrecedingAxisIterator;
-import org.w3c.dom.Document;
-
-import junit.framework.TestCase;
-
-public class PrecedingAxisIteratorTest extends TestCase {
-
- private Iterator iterator;
-
- public PrecedingAxisIteratorTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException, UnsupportedAxisException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- doc.appendChild(doc.createElement("root"));
-
- iterator = new PrecedingAxisIterator(doc, new org.jaxen.dom.DocumentNavigator());
-
- }
-
-
- public void testNoInfiniteLoops() {
-
- try {
- iterator.next();
- fail("Iterated too far");
- }
- catch (NoSuchElementException ex) {
- pass();
- }
-
- }
-
-
- private void pass() {
- // Just to make checkstyle and the like happy
- }
-
- public void testRemove() {
-
- try {
- iterator.remove();
- fail("Removed from descendant axis iterator");
- }
- catch (UnsupportedOperationException ex) {
- pass();
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/PrecedingSiblingAxisIteratorTest.java b/src/java/test/org/jaxen/test/PrecedingSiblingAxisIteratorTest.java
deleted file mode 100644
index ff00ea1..0000000
--- a/src/java/test/org/jaxen/test/PrecedingSiblingAxisIteratorTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.UnsupportedAxisException;
-import org.jaxen.util.PrecedingSiblingAxisIterator;
-import org.w3c.dom.Document;
-
-import junit.framework.TestCase;
-
-public class PrecedingSiblingAxisIteratorTest extends TestCase {
-
- private Iterator iterator;
-
- public PrecedingSiblingAxisIteratorTest(String name) {
- super(name);
- }
-
- protected void setUp() throws ParserConfigurationException, UnsupportedAxisException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
- doc.appendChild(doc.createElement("root"));
-
- iterator = new PrecedingSiblingAxisIterator(doc, new org.jaxen.dom.DocumentNavigator());
-
- }
-
-
- public void testNoInfiniteLoops() {
-
- try {
- iterator.next();
- fail("Iterated too far");
- }
- catch (NoSuchElementException ex) {
- pass();
- }
-
- }
-
-
- private void pass() {
- // Just to make checkstyle and the like happy
- }
-
- public void testRemove() {
-
- try {
- iterator.remove();
- fail("Removed from descendant axis iterator");
- }
- catch (UnsupportedOperationException ex) {
- pass();
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/PriorityTest.java b/src/java/test/org/jaxen/test/PriorityTest.java
deleted file mode 100644
index 0003c51..0000000
--- a/src/java/test/org/jaxen/test/PriorityTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-
-import org.jaxen.JaxenException;
-import org.jaxen.pattern.Pattern;
-import org.jaxen.pattern.PatternParser;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-
-/** Tests the use of priority in the Pattern implementations.
- *
- * @author <a href="mailto:jstrachan at apache.org">James Strachan</a>
- * @version $Revision$
- */
-public class PriorityTest extends TestCase
-{
- public PriorityTest(String name)
- {
- super( name );
- }
-
- public static void main(String[] args)
- {
- TestRunner.run( suite() );
- }
-
- public static Test suite()
- {
- return new TestSuite( PriorityTest.class );
- }
-
- public void setUp()
- {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "" );
- }
-
- public void testDocumentNode() throws Exception
- {
- testPriority( "/", -0.5, Pattern.DOCUMENT_NODE );
- }
-
- public void testNameNode() throws Exception
- {
- testPriority( "foo", 0, Pattern.ELEMENT_NODE );
- }
-
- public void testQNameNode() throws Exception
- {
- testPriority( "foo:bar", 0, Pattern.ELEMENT_NODE );
- }
-
- public void testFilter() throws Exception
- {
- testPriority( "foo[@id='123']", 0.5, Pattern.ELEMENT_NODE );
- }
-
- public void testURI() throws Exception
- {
- testPriority( "foo:*", -0.25, Pattern.ELEMENT_NODE );
- }
-
- public void testNodeType() throws Exception
- {
- testPriority( "text()", -0.5, Pattern.TEXT_NODE );
- }
-
- public void testAttribute() throws Exception
- {
- testPriority( "@*", -0.5, Pattern.ATTRIBUTE_NODE );
- }
-
- public void testAnyNode() throws Exception
- {
- testPriority( "*", -0.5, Pattern.ELEMENT_NODE );
- }
-
- protected void testPriority(String expr, double priority, short nodeType)
- throws JaxenException, SAXPathException
- {
-
- Pattern pattern = PatternParser.parse( expr );
- double d = pattern.getPriority();
- short nt = pattern.getMatchType();
-
- assertEquals( "expr: " + expr,
- new Double( priority ),
- new Double( d ) );
-
- assertEquals( "nodeType: " + expr,
- nodeType,
- nt );
- }
-}
diff --git a/src/java/test/org/jaxen/test/ProcessingInstructionNodeTest.java b/src/java/test/org/jaxen/test/ProcessingInstructionNodeTest.java
deleted file mode 100644
index 2f5750e..0000000
--- a/src/java/test/org/jaxen/test/ProcessingInstructionNodeTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/test/ProcessingInstructionNodeTest.java,v 1.2 2007/01/06 15:39:50 elharo Exp $
- * $Revision: 1.2 $
- * $Date: 2007/01/06 15:39:50 $
- *
- * ====================================================================
- *
- * Copyright 2007 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: ProcessingInstructionNodeTest.java,v 1.2 2007/01/06 15:39:50 elharo Exp $
- */
-
-
-
-package org.jaxen.test;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.dom.DOMXPath;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for processing instruction node-steps.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1.1
- *
- */
-public class ProcessingInstructionNodeTest extends TestCase {
-
- public void testGetText()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("processing-instruction()");
- String expr = xpath.getRootExpr().getText();
- assertEquals("child::processing-instruction()", expr);
-
- }
-
- public void testGetTextWithName()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("processing-instruction('foo')");
- String expr = xpath.getRootExpr().getText();
- assertEquals("child::processing-instruction('foo')", expr);
-
- }
-
- public void testGetTextWithPredicate()
- throws JaxenException, ParserConfigurationException {
-
- DOMXPath xpath = new DOMXPath("processing-instruction('foo')[1 = 1]");
- String expr = xpath.getRootExpr().getText();
- assertEquals("child::processing-instruction('foo')[(1.0 = 1.0)]", expr);
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/RoundTest.java b/src/java/test/org/jaxen/test/RoundTest.java
deleted file mode 100644
index 1465273..0000000
--- a/src/java/test/org/jaxen/test/RoundTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class RoundTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- }
-
-
- public RoundTest(String name) {
- super(name);
- }
-
-
- public void testRound() throws JaxenException {
-
- XPath xpath = new DOMXPath("round(1.5)");
-
- Object result = xpath.evaluate(doc);
- assertEquals(2, ((Double) result).doubleValue(), 0.0001);
-
- }
-
- public void testNegativeRound() throws JaxenException {
-
- XPath xpath = new DOMXPath("round(-1.5)");
-
- Object result = xpath.evaluate(doc);
- assertEquals(-1, ((Double) result).doubleValue(), 0.0001);
-
- }
-
- public void testNaNRoundIsNaN() throws JaxenException {
- XPath xpath = new DOMXPath("round(1.0 div 0.0 - 2.0 div 0.0)");
- double result = ((Double) xpath.evaluate(doc)).doubleValue();
- assertTrue(Double.isNaN(result));
- }
-
- public void testRoundFunctionRequiresAtLeastOneArgument()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("round()");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed round function with no arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testRoundFunctionRequiresAtMostOneArgument()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("round(2.2, 1.2)");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed round function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/SAXPathExceptionTest.java b/src/java/test/org/jaxen/test/SAXPathExceptionTest.java
deleted file mode 100644
index 822b50e..0000000
--- a/src/java/test/org/jaxen/test/SAXPathExceptionTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.jaxen.saxpath.SAXPathException;
-
-import junit.framework.TestCase;
-
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class SAXPathExceptionTest extends TestCase {
-
- public SAXPathExceptionTest(String name) {
- super(name);
- }
-
- public void testMessageIsNonNull() {
- SAXPathException ex = new SAXPathException("Hello");
- assertEquals("Hello", ex.getMessage());
- }
-
- public void testPrintStackTrace() {
- StringIndexOutOfBoundsException cause = new StringIndexOutOfBoundsException("1234");
- SAXPathException ex = new SAXPathException(cause);
- StringWriter out = new StringWriter();
- PrintWriter pw = new PrintWriter(out);
- ex.printStackTrace(pw);
- pw.close();
- assertTrue(out.toString().indexOf("Caused by: java.lang.StringIndexOutOfBoundsException") > 0);
- assertTrue(out.toString().indexOf("1234") > 0);
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/SAXPathTests.java b/src/java/test/org/jaxen/test/SAXPathTests.java
deleted file mode 100644
index 0059b49..0000000
--- a/src/java/test/org/jaxen/test/SAXPathTests.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect the org.jaxen.saxpath.base tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class SAXPathTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTestSuite(SAXPathExceptionTest.class);
- result.addTestSuite(AxisTest.class);
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/SimpleNamespaceContextTest.java b/src/java/test/org/jaxen/test/SimpleNamespaceContextTest.java
deleted file mode 100644
index 8b49998..0000000
--- a/src/java/test/org/jaxen/test/SimpleNamespaceContextTest.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005, 2006 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.SimpleNamespaceContext;
-import org.jaxen.UnsupportedAxisException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for namespace context.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b10
- *
- */
-public class SimpleNamespaceContextTest extends TestCase
-{
-
- /**
- * Need to make sure that changing the map after it's used to create the
- * namespace context does not affect the context. i.e.
- * data encapsulation is not violated.
- */
- public void testMapCopy() {
- Map map = new HashMap();
- SimpleNamespaceContext context = new SimpleNamespaceContext(map);
- map.put("pre", "http://www.example.org/");
- assertNull(context.translateNamespacePrefixToUri("pre"));
- }
-
- public void testCantUseNonStringsAsValues() {
- Map map = new HashMap();
- map.put("key", new Object());
- try {
- new SimpleNamespaceContext(map);
- fail("added non String value to namespace context");
- }
- catch (Exception ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
- public void testCantUseNonStringsAsKeys() {
- Map map = new HashMap();
- map.put(new Object(), "value");
- try {
- new SimpleNamespaceContext(map);
- fail("added non String key to namespace context");
- }
- catch (Exception ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
- public void testContextFromElement() throws ParserConfigurationException, UnsupportedAxisException {
- SimpleNamespaceContext context = new SimpleNamespaceContext();
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document doc = builder.newDocument();
- Element root = doc.createElementNS("http://www.example.org/", "pre:root");
- doc.appendChild(root);
- context.addElementNamespaces(new org.jaxen.dom.DocumentNavigator(), root);
-
- assertEquals("http://www.example.org/", context.translateNamespacePrefixToUri("pre"));
- }
-
- public void testSerialization() throws IOException, ClassNotFoundException {
-
- // construct test object
- SimpleNamespaceContext original = new SimpleNamespaceContext();
- original.addNamespace("a", "http://www.a.com");
- original.addNamespace("b", "http://www.b.com");
-
- // serialize
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(out);
- oos.writeObject(original);
- oos.close();
-
- //deserialize
- byte[] pickled = out.toByteArray();
- InputStream in = new ByteArrayInputStream(pickled);
- ObjectInputStream ois = new ObjectInputStream(in);
- Object o = ois.readObject();
- SimpleNamespaceContext copy = (SimpleNamespaceContext) o;
-
- // test the result
- assertEquals("http://www.a.com", copy.translateNamespacePrefixToUri("a"));
- assertEquals("http://www.b.com", copy.translateNamespacePrefixToUri("b"));
- assertEquals("", "");
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/SimpleVariableContextTest.java b/src/java/test/org/jaxen/test/SimpleVariableContextTest.java
deleted file mode 100644
index ceaaa6f..0000000
--- a/src/java/test/org/jaxen/test/SimpleVariableContextTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2006 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.jaxen.SimpleVariableContext;
-import org.jaxen.UnresolvableException;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for namespace context.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b12
- *
- */
-public class SimpleVariableContextTest extends TestCase
-{
-
- public void testRoundTripSerialization()
- throws IOException, ClassNotFoundException, UnresolvableException {
-
- // construct test object
- SimpleVariableContext original = new SimpleVariableContext();
- original.setVariableValue("s", "String Value");
- original.setVariableValue("x", new Double(3.1415292));
- original.setVariableValue("b", Boolean.TRUE);
-
- // serialize
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(out);
- oos.writeObject(original);
- oos.close();
-
- //deserialize
- byte[] pickled = out.toByteArray();
- InputStream in = new ByteArrayInputStream(pickled);
- ObjectInputStream ois = new ObjectInputStream(in);
- Object o = ois.readObject();
- SimpleVariableContext copy = (SimpleVariableContext) o;
-
- // test the result
- assertEquals("String Value", copy.getVariableValue("", "", "s"));
- assertEquals(new Double(3.1415292), copy.getVariableValue("", "", "x"));
- assertEquals(Boolean.TRUE, copy.getVariableValue("", "", "b"));
- assertEquals("", "");
-
- }
-
- public void testSerializationFormatHasNotChanged()
- throws IOException, ClassNotFoundException, UnresolvableException {
-
- //deserialize
- InputStream in = new FileInputStream("xml/simplevariablecontext.ser");
- ObjectInputStream ois = new ObjectInputStream(in);
- Object o = ois.readObject();
- SimpleVariableContext context = (SimpleVariableContext) o;
-
- // test the result
- assertEquals("String Value", context.getVariableValue("", "", "s"));
- assertEquals(new Double(3.1415292), context.getVariableValue("", "", "x"));
- assertEquals(Boolean.TRUE, context.getVariableValue("", "", "b"));
- assertEquals("", "");
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/SingleObjectIteratorTest.java b/src/java/test/org/jaxen/test/SingleObjectIteratorTest.java
deleted file mode 100644
index 1b9b4c4..0000000
--- a/src/java/test/org/jaxen/test/SingleObjectIteratorTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.jaxen.util.SingleObjectIterator;
-
-import junit.framework.TestCase;
-
-public class SingleObjectIteratorTest extends TestCase {
-
- private Iterator iterator = new SingleObjectIterator(new Object());
-
- public void testNoInfiniteLoops() {
-
- iterator.next();
- try {
- iterator.next();
- fail("Iterated twice");
- }
- catch (NoSuchElementException ex) {
- }
-
- }
-
-
- public void testRemove() {
-
- try {
- iterator.remove();
- fail("Removed from iterator");
- }
- catch (UnsupportedOperationException ex) {
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/SingletonListTest.java b/src/java/test/org/jaxen/test/SingletonListTest.java
deleted file mode 100644
index c92566d..0000000
--- a/src/java/test/org/jaxen/test/SingletonListTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/* $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-package org.jaxen.test;
-
-import java.util.List;
-
-import org.jaxen.util.SingletonList;
-
-import junit.framework.TestCase;
-
-public class SingletonListTest extends TestCase {
-
- public void testIndexOutOfBoundsException() {
-
- List list = new SingletonList(new Object());
- try {
- list.get(1);
- fail("Got element 1");
- }
- catch (IndexOutOfBoundsException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/StartsWithTest.java b/src/java/test/org/jaxen/test/StartsWithTest.java
deleted file mode 100644
index f62801b..0000000
--- a/src/java/test/org/jaxen/test/StartsWithTest.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class StartsWithTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public StartsWithTest(String name) {
- super(name);
- }
-
- public void testStartsWithNumber() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with(33, '3')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testStartsWithString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with('test', 't')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testStartsWithString3() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with('superlative', 'superlative')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testStartsWithNumber2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with(43, '3')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.FALSE, result);
- }
-
- public void testStartsWithString2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with('1234567890', '1234567a')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.FALSE, result);
- }
-
-
- public void testEmptyStringStartsWithNonEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with('', 'a')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.FALSE, result);
- }
-
- public void testEmptyStringStartsWithEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with('', '')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testStartsWithEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "starts-with('a', '')" );
- Boolean result = (Boolean) xpath.evaluate( doc );
- assertEquals(Boolean.TRUE, result);
- }
-
- public void testStartsWithFunctionRequiresAtLeastTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("starts-with('a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed starts-with function with one argument");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testStartsWithFunctionRequiresAtMostTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("starts-with('a', 'a', 'a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed starts-with function with three arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/StringLengthTest.java b/src/java/test/org/jaxen/test/StringLengthTest.java
deleted file mode 100644
index e440f4f..0000000
--- a/src/java/test/org/jaxen/test/StringLengthTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class StringLengthTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public StringLengthTest(String name) {
- super(name);
- }
-
- public void testStringLengthOfNumber() throws JaxenException
- {
- XPath xpath = new DOMXPath( "string-length(3)" );
- Double result = (Double) xpath.evaluate( doc );
- assertEquals(1, result.intValue());
- }
-
- public void testStringLengthOfEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "string-length('')" );
- Double result = (Double) xpath.evaluate( doc );
- assertEquals(0, result.intValue());
- }
-
- public void testStringLengthOfString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "string-length('0123456789')" );
- Double result = (Double) xpath.evaluate( doc );
- assertEquals(10, result.intValue());
- }
-
- public void testStringLengthFunctionOperatesOnContextNode()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("string-length()");
- Double result = (Double) xpath.evaluate( doc );
- assertEquals(0, result.intValue());
-
- }
-
- public void testStringLengthFunctionCountsUnicodeCharactersNotJavaChars()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("string-length('\uD834\uDD00')");
- Double result = (Double) xpath.evaluate( doc );
- assertEquals(1, result.intValue());
-
- }
-
- public void testStringLengthFunctionWithMalformedString()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("string-length('\uD834A\uDD00')");
- try {
- xpath.evaluate( doc );
- fail("Allowed Malformed string");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testStringLengthFunctionRequiresExactlyOneArgument()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("string-length('', '')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed string-length function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/StringTest.java b/src/java/test/org/jaxen/test/StringTest.java
deleted file mode 100644
index 99acc30..0000000
--- a/src/java/test/org/jaxen/test/StringTest.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.dom.DocumentNavigator;
-import org.jaxen.function.StringFunction;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class StringTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- }
-
-
- public StringTest(String name) {
- super(name);
- }
-
- // test case for JAXEN-55
- public void testStringFunctionOperatesOnFirstNodeInDocumentOrder()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("string(//x)");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- org.w3c.dom.Element b = doc.createElementNS("", "b");
- doc.appendChild(a);
- a.appendChild(b);
- org.w3c.dom.Element x2 = doc.createElementNS("", "x");
- org.w3c.dom.Element x3 = doc.createElementNS("", "x");
- org.w3c.dom.Element x4 = doc.createElementNS("", "x");
- a.appendChild(x4);
- b.appendChild(x2);
- b.appendChild(x3);
- x2.appendChild(doc.createTextNode("2"));
- x3.appendChild(doc.createTextNode("3"));
- x4.appendChild(doc.createTextNode("4"));
-
- List result = xpath.selectNodes(doc);
- assertEquals(1, result.size());
- assertEquals("2", result.get(0));
-
- }
-
- public void testStringValueOfComment()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("string(/a/comment())");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
- a.appendChild(doc.createComment("data"));
-
- String result = (String) xpath.evaluate(doc);
- assertEquals("data", result);
-
- }
-
- public void testStringValueOfNull() {
- assertEquals("", StringFunction.evaluate(null, null));
- }
-
- public void testStringValueOfNullWithNonNullNavigator() {
- assertEquals("", StringFunction.evaluate(null, new DocumentNavigator()));
- }
-
- public void testStringValueOfNamespaceNode()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("string(/a/namespace::node())");
- org.w3c.dom.Element a = doc.createElementNS("", "a");
- doc.appendChild(a);
-
- String result = (String) xpath.evaluate(doc);
- assertEquals("http://www.w3.org/XML/1998/namespace", result);
-
- }
-
- public void testSmallNumbersDontUseExponentialNotation() throws JaxenException {
- XPath xpath = new DOMXPath("string(0.0000003)");
- String result = (String) xpath.evaluate(null);
- assertEquals("0.0000003", result);
- }
-
- public void testBigNumbersDontUseExponentialNotation() throws JaxenException {
- XPath xpath = new DOMXPath("string(100000000.5)");
- String result = (String) xpath.evaluate(null);
- assertEquals("100000000.5", result);
- }
-
- public void testStringOfInfinity() throws JaxenException {
- XPath xpath = new DOMXPath("string(1 div 0)");
- String result = (String) xpath.evaluate(null);
- assertEquals("Infinity", result);
- }
-
- public void testStringOfNegativeInfinity() throws JaxenException {
- XPath xpath = new DOMXPath("string(-1 div 0)");
- String result = (String) xpath.evaluate(null);
- assertEquals("-Infinity", result);
- }
-
- public void testStringOfNegativeZero() throws JaxenException {
- XPath xpath = new DOMXPath("string(-0)");
- String result = (String) xpath.evaluate(null);
- assertEquals("0", result);
- }
-
- public void testIntegersAreFormattedAsInts() throws JaxenException {
- XPath xpath = new DOMXPath("string(12)");
- String result = (String) xpath.evaluate(null);
- assertEquals("12", result);
- }
-
- public void testStringFunctionRequiresAtMostOneArgument()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("string('a', 1)");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed string function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-}
diff --git a/src/java/test/org/jaxen/test/SubstringAfterTest.java b/src/java/test/org/jaxen/test/SubstringAfterTest.java
deleted file mode 100644
index 7bff07c..0000000
--- a/src/java/test/org/jaxen/test/SubstringAfterTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class SubstringAfterTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public SubstringAfterTest(String name) {
- super(name);
- }
-
- public void testSubstringAfterNumber() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after(33, '3')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("3", result);
- }
-
- public void testSubstringAfterString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after('test', 'es')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("t", result);
- }
-
- public void testSubstringAfterString4() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after('superlative', 'superlative')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringAfterNumber2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after(43, '0')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringAfterString2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after('1234567890', '1234567a')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
-
- public void testSubstringAfterString3() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after('1234567890', '456')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("7890", result);
- }
-
-
- public void testEmptyStringSubstringAfterNonEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after('', 'a')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testEmptyStringBeforeEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after('', '')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringAfterEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-after('a', '')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("a", result);
- }
-
- public void testSubstringAfterFunctionRequiresAtLeastTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("substring-after('a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed substring-after function with one argument");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testSubstringAfterFunctionRequiresAtMostTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("substring-after('a', 'a', 'a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed substring-after function with three arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/SubstringBeforeTest.java b/src/java/test/org/jaxen/test/SubstringBeforeTest.java
deleted file mode 100644
index 0368cbf..0000000
--- a/src/java/test/org/jaxen/test/SubstringBeforeTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.BaseXPath;
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class SubstringBeforeTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public SubstringBeforeTest(String name) {
- super(name);
- }
-
- public void testSubstringBeforeNumber() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before(33, '3')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringBeforeString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before('test', 'es')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("t", result);
- }
-
- public void testContainsString3() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before('superlative', 'superlative')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringBeforeNumber2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before(43, '0')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringBeforeString2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before('1234567890', '1234567a')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
-
- public void testSubstringBeforeString3() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before('1234567890', '456')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("123", result);
- }
-
-
- public void testEmptyStringSubstringBeforeNonEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before('', 'a')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testEmptyStringBeforeEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before('', '')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringBeforeEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring-before('a', '')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testSubstringBeforeFunctionRequiresAtLeastTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("substring-before('a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed substring-before function with one argument");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testSubstringBeforeFunctionRequiresAtMostTwoArguments()
- throws JaxenException {
-
- BaseXPath xpath = new DOMXPath("substring-before('a', 'a', 'a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed substring-before function with three arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/SubstringTest.java b/src/java/test/org/jaxen/test/SubstringTest.java
deleted file mode 100644
index 12e8dec..0000000
--- a/src/java/test/org/jaxen/test/SubstringTest.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class SubstringTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public SubstringTest(String name) {
- super(name);
- }
-
- public void testSubstringOfNumber() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring(1234, 3)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("34", result);
- }
-
- public void testSubstringOfNumber2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring(1234, 2, 3)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("234", result);
- }
-
- // Unusual tests from XPath spec
-
- public void testUnusualSubstring1() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', 1.5, 2.6)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("234", result);
- }
-
-
- public void testUnusualSubstring2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', 0, 3)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("12", result);
- }
-
-
- public void testUnusualSubstring3() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', 0 div 0, 3)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testUnusualSubstring4() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', 1, 0 div 0)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
- public void testUnusualSubstring5() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', -42, 1 div 0)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("12345", result);
- }
-
- public void testUnusualSubstring6() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', -1 div 0, 1 div 0)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
-
- public void testSubstringOfNaN() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring(0 div 0, 2)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("aN", result);
- }
-
-
- public void testSubstringOfEmptyString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('', 2)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
-
- public void testSubstringWithNegativeLength() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', 2, -3)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
-
- public void testSubstringWithExcessiveLength() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', 2, 32)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("2345", result);
- }
-
-
- public void testSubstringWithNegativeLength2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "substring('12345', 2, -1)" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
- }
-
-
- public void testSubstringFunctionRequiresAtLeastTwoArguments()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring('a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed substring function with one argument");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testNegativeStartNoLength()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring('Hello', -50)");
- String result = (String) xpath.evaluate( doc );
- assertEquals("Hello", result);
-
- }
-
- public void testNegativeStartWithLength()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring('Hello', -50, 20)");
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
-
- }
-
- public void testSubstringFunctionRequiresAtMostThreeArguments()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring('a', 1, 1, 4)");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed substring function with four arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testStringLengthCountsUnicodeCharactersNotJavaChars()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring('A\uD834\uDD00', 1, 2)");
- String result = (String) xpath.evaluate( doc );
- assertEquals("A\uD834\uDD00", result);
-
- }
-
-
- public void testStringLengthIndexesUnicodeCharactersNotJavaChars()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring('A\uD834\uDD00', 3, 1)");
- String result = (String) xpath.evaluate( doc );
- assertEquals("", result);
-
- }
-
-
- public void testStringLengthIndexesAndCountsUnicodeCharactersNotJavaChars()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring('A\uD834\uDD00123', 3, 2)");
- String result = (String) xpath.evaluate( doc );
- assertEquals("12", result);
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/SumTest.java b/src/java/test/org/jaxen/test/SumTest.java
deleted file mode 100644
index 5a1d845..0000000
--- a/src/java/test/org/jaxen/test/SumTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class SumTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public SumTest(String name) {
- super(name);
- }
-
- public void testSumOfNumber() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "sum(3)" );
- xpath.selectNodes( doc );
- fail("sum of non-node-set");
- }
- catch (FunctionCallException e)
- {
- assertEquals("The argument to the sum function must be a node-set", e.getMessage());
- }
- }
-
- public void testSumNoArguments() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "sum()" );
- xpath.selectNodes( doc );
- fail("sum of nothing");
- }
- catch (FunctionCallException e)
- {
- assertEquals("sum() requires one argument.", e.getMessage());
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/TranslateFunctionTest.java b/src/java/test/org/jaxen/test/TranslateFunctionTest.java
deleted file mode 100644
index 587245a..0000000
--- a/src/java/test/org/jaxen/test/TranslateFunctionTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class TranslateFunctionTest extends TestCase {
-
- private Document doc;
-
- protected void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
- public void testTranslate() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('abc', 'b', 'd')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("adc", result);
- }
-
- public void testTranslateIgnoresExtraArguments() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('abc', 'b', 'dghf')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("adc", result);
- }
-
- public void testTranslateFunctionRequiresAtLeastThreeArguments()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("translate('a', 'b')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed translate function with two arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testTranslateRequiresAtMostThreeArguments()
- throws JaxenException {
-
- XPath xpath = new DOMXPath("substring-after('a', 'a', 'a', 'a')");
-
- try {
- xpath.selectNodes(doc);
- fail("Allowed translate function with four arguments");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
-
- }
-
- public void testTranslateStringThatContainsNonBMPChars() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('ab\uD834\uDD00b', 'b', 'd')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("ad\uD834\uDD00d", result);
- }
-
-
- public void testTranslateNonBMPChars() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('ab\uD834\uDD00b', '\uD834\uDD00', 'd')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("abdb", result);
- }
-
-
- public void testTranslateNonBMPChars2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('ab\uD834\uDD00b', '\uD834\uDD00', 'da')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("abdb", result);
- }
-
-
- public void testTranslateWithNonBMPChars() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('abc', 'c', '\uD834\uDD00')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("ab\uD834\uDD00", result);
- }
-
-
- public void testTranslateWithNonBMPChars2() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('abc', 'c', '\uD834\uDD00b')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("ab\uD834\uDD00", result);
- }
-
-
- public void testTranslateWithMalformedSurrogatePair() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('abc', 'c', '\uD834X\uDD00b')" );
- try {
- xpath.evaluate( doc );
- fail("Allowed malformed surrogate pair");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
-
- public void testTranslateWithMissingLowSurrogate() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('abc', 'c', 'AB\uD834X')" );
- try {
- xpath.evaluate( doc );
- fail("Allowed malformed surrogate pair");
- }
- catch (FunctionCallException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
-
- public void testTranslateWithExtraCharsInReplacementString() throws JaxenException
- {
- XPath xpath = new DOMXPath( "translate('abc', 'c', 'def')" );
- String result = (String) xpath.evaluate( doc );
- assertEquals("abd", result);
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/TrueTest.java b/src/java/test/org/jaxen/test/TrueTest.java
deleted file mode 100644
index 7d496e2..0000000
--- a/src/java/test/org/jaxen/test/TrueTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.FunctionCallException;
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class TrueTest extends TestCase {
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.newDocument();
- doc.appendChild(doc.createElement("root"));
- }
-
-
- public TrueTest(String name) {
- super(name);
- }
-
- public void testTrueOfNumber() throws JaxenException
- {
- try
- {
- XPath xpath = new DOMXPath( "true(3)" );
- xpath.selectNodes( doc );
- fail("true() function took arguments");
- }
- catch (FunctionCallException e)
- {
- assertEquals("true() requires no arguments.", e.getMessage());
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/UnresolvableExceptionTest.java b/src/java/test/org/jaxen/test/UnresolvableExceptionTest.java
deleted file mode 100644
index a45da53..0000000
--- a/src/java/test/org/jaxen/test/UnresolvableExceptionTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.UnresolvableException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-
-import junit.framework.TestCase;
-
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class UnresolvableExceptionTest extends TestCase {
-
- public UnresolvableExceptionTest(String name) {
- super(name);
- }
-
- private org.w3c.dom.Document doc;
-
- protected void setUp() throws ParserConfigurationException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- doc = factory.newDocumentBuilder().newDocument();
- doc.appendChild(doc.createElement("foo"));
- }
-
- public void testUnresolvableVariable() throws JaxenException {
-
- try {
- XPath xpath = new DOMXPath("//foo[bar = $var]");
- xpath.evaluate(doc);
- fail("Didn't throw Unresolvable Exception");
- }
- catch (UnresolvableException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
-
- public void testUnresolvableFunction() throws JaxenException {
-
- try {
- XPath xpath = new DOMXPath("nonesuch()");
- xpath.evaluate(doc);
- fail("Didn't throw Unresolvable Exception");
- }
- catch (UnresolvableException ex) {
- assertNotNull(ex.getMessage());
- }
- }
-
-
-
-}
diff --git a/src/java/test/org/jaxen/test/UnsupportedAxisExceptionTest.java b/src/java/test/org/jaxen/test/UnsupportedAxisExceptionTest.java
deleted file mode 100644
index 06ac6d5..0000000
--- a/src/java/test/org/jaxen/test/UnsupportedAxisExceptionTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-
-import org.jaxen.UnsupportedAxisException;
-
-import junit.framework.TestCase;
-
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class UnsupportedAxisExceptionTest extends TestCase {
-
- public UnsupportedAxisExceptionTest(String name) {
- super(name);
- }
-
- public void testMessageIsNonNull() {
-
- UnsupportedAxisException ex = new UnsupportedAxisException("Hello");
- assertEquals("Hello", ex.getMessage());
-
- }
-
-
-}
diff --git a/src/java/test/org/jaxen/test/UtilTests.java b/src/java/test/org/jaxen/test/UtilTests.java
deleted file mode 100644
index 24ae80e..0000000
--- a/src/java/test/org/jaxen/test/UtilTests.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect the org.jaxen.util tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class UtilTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(SingletonListTest.class));
- result.addTest(new TestSuite(SingleObjectIteratorTest.class));
- result.addTest(new TestSuite(AncestorOrSelfAxisIteratorTest.class));
- result.addTest(new TestSuite(DescendantAxisIteratorTest.class));
- result.addTest(new TestSuite(FollowingAxisIteratorTest.class));
- result.addTest(new TestSuite(FollowingSiblingAxisIteratorTest.class));
- result.addTest(new TestSuite(PrecedingAxisIteratorTest.class));
- result.addTest(new TestSuite(PrecedingSiblingAxisIteratorTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/VariableContextTest.java b/src/java/test/org/jaxen/test/VariableContextTest.java
deleted file mode 100644
index 66604bf..0000000
--- a/src/java/test/org/jaxen/test/VariableContextTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-
-package org.jaxen.test;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.SimpleVariableContext;
-import org.jaxen.UnresolvableException;
-import org.jaxen.dom.DOMXPath;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import junit.framework.TestCase;
-
-/**
- * <p>
- * Test for function context.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class VariableContextTest extends TestCase
-{
-
- private Document doc;
-
- public void setUp() throws ParserConfigurationException {
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- doc = factory.newDocumentBuilder().newDocument();
- Element root = doc.createElementNS("http://www.example.org/", "root");
- doc.appendChild(root);
- root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.example.org/");
-
- }
-
-
- public void testUnresolvableVariable() throws JaxenException {
-
- DOMXPath xpath = new DOMXPath("$a/root");
-
- try {
- xpath.evaluate(doc);
- fail("Evaluated nonexistent variable");
- }
- catch (UnresolvableException ex) {
- assertEquals("Variable a", ex.getMessage());
- }
-
- }
-
- public void testGetVariableContext() throws JaxenException {
- DOMXPath xpath = new DOMXPath("/root/child");
- assertNotNull(xpath.getVariableContext());
- }
-
- public void testSetNamespacelessVariable() throws JaxenException {
- SimpleVariableContext context = new SimpleVariableContext();
- context.setVariableValue("foo", "bar");
- assertEquals("bar", context.getVariableValue("", "", "foo"));
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/XOMNavigatorTest.java b/src/java/test/org/jaxen/test/XOMNavigatorTest.java
deleted file mode 100644
index 8d6ec4a..0000000
--- a/src/java/test/org/jaxen/test/XOMNavigatorTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import org.jaxen.Navigator;
-import org.jaxen.xom.DocumentNavigator;
-import nu.xom.Builder;
-
-public class XOMNavigatorTest extends XPathTestBase
-{
- private Builder builder = new Builder();
-
- public XOMNavigatorTest(String name)
- {
- super( name );
- }
-
- public Navigator getNavigator()
- {
- return new DocumentNavigator();
- }
-
- public Object getDocument(String url) throws Exception
- {
- return this.builder.build( url );
- }
-}
diff --git a/src/java/test/org/jaxen/test/XOMPerformance.java b/src/java/test/org/jaxen/test/XOMPerformance.java
deleted file mode 100644
index 1e9335e..0000000
--- a/src/java/test/org/jaxen/test/XOMPerformance.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- $Id$
-
- Copyright 2003 The Werken Company. All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-package org.jaxen.test;
-
-import org.jaxen.xom.XOMXPath;
-
-import nu.xom.Document;
-import nu.xom.Element;
-import nu.xom.Builder;
-
-class XOMPerformance {
-
- public static void main(String[] args) {
-
- try {
- Document doc = new Builder().build("http://www.ibiblio.org/xml/examples/shakespeare/much_ado.xml");
- XOMXPath xpath = new XOMXPath("PLAY/ACT/SCENE/SPEECH/SPEAKER");
-
- long start = System.currentTimeMillis();
-
- int count = 0;
- for (int i = 0; i < 1000; i++) {
- Element speaker = (Element) xpath.selectSingleNode(doc);
- count += (speaker == null ? 0 : 1);
- }
-
- long end = System.currentTimeMillis();
- System.out.println((end - start));
- System.out.println(count);
-
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/XOMTests.java b/src/java/test/org/jaxen/test/XOMTests.java
deleted file mode 100644
index 7d53231..0000000
--- a/src/java/test/org/jaxen/test/XOMTests.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>
- * Collect Jaxen's XOM tests.
- * </p>
- *
- * @author Elliotte Rusty Harold
- * @version 1.1b9
- *
- */
-public class XOMTests {
-
- public static Test suite() {
-
- TestSuite result = new TestSuite();
- result.addTest(new TestSuite(XOMNavigatorTest.class));
- result.addTest(new TestSuite(XOMXPathTest.class));
- return result;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/java/test/org/jaxen/test/XOMXPathTest.java b/src/java/test/org/jaxen/test/XOMXPathTest.java
deleted file mode 100644
index 657d21a..0000000
--- a/src/java/test/org/jaxen/test/XOMXPathTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2003 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-
-import junit.framework.TestCase;
-import nu.xom.Builder;
-import nu.xom.Document;
-import nu.xom.Element;
-import nu.xom.ParsingException;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.xom.XOMXPath;
-
-public class XOMXPathTest extends TestCase
-{
-
- private static final String BASIC_XML = "xml/basic.xml";
-
- public XOMXPathTest(String name)
- {
- super( name );
- }
-
- public void testConstruction() throws JaxenException
- {
- new XOMXPath( "/foo/bar/baz" );
- }
-
- public void testSelection() throws ParsingException, IOException, JaxenException
- {
- XPath xpath = new XOMXPath( "/foo/bar/baz" );
-
- Builder builder = new Builder();
-
- Document doc = builder.build( BASIC_XML );
-
- List results = xpath.selectNodes( doc );
-
- assertEquals( 3,
- results.size() );
-
- Iterator iter = results.iterator();
-
- assertEquals( "baz",
- ((Element)iter.next()).getLocalName() );
-
- assertEquals( "baz",
- ((Element)iter.next()).getLocalName() );
-
- assertEquals( "baz",
- ((Element)iter.next()).getLocalName() );
-
- assertTrue( ! iter.hasNext() );
- }
-}
diff --git a/src/java/test/org/jaxen/test/XPathReaderFactoryTest.java b/src/java/test/org/jaxen/test/XPathReaderFactoryTest.java
deleted file mode 100644
index 23b095e..0000000
--- a/src/java/test/org/jaxen/test/XPathReaderFactoryTest.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.XPathReader;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-
-public class XPathReaderFactoryTest extends TestCase
-{
- public XPathReaderFactoryTest(String name)
- {
- super( name );
- }
-
-
- protected void tearDown() {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY, "" );
- }
-
- public void testDefault() throws SAXPathException
- {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "" );
- XPathReader reader = XPathReaderFactory.createReader();
- assertNotNull( reader );
- }
-
- public void testValidByProperty() throws SAXPathException
- {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "org.jaxen.test.MockXPathReader" );
-
- XPathReader reader = XPathReaderFactory.createReader();
- assertNotNull( reader );
- assertSame( MockXPathReader.class, reader.getClass() );
- }
-
- public void testInvalidByProperty()
- {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "java.lang.String" );
-
- try
- {
- XPathReaderFactory.createReader();
- fail( "Should have thrown SAXPathException" );
- }
- catch (SAXPathException e) {
- // expected and correct
- assertNotNull(e.getMessage());
- }
- }
-
- public void testNonExistantByProperty()
- {
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "i.am.a.class.that.does.not.Exist" );
-
- try
- {
- XPathReaderFactory.createReader();
- fail( "Should have thrown SAXPathException" );
- }
- catch (org.jaxen.saxpath.SAXPathException e)
- {
- // expected and correct
- }
- }
-
- public void testValidExplicit() throws SAXPathException
- {
- XPathReader reader = XPathReaderFactory.createReader( "org.jaxen.test.MockXPathReader" );
- assertNotNull( reader );
- assertSame( MockXPathReader.class, reader.getClass() );
- }
-
- public void testInvalidExplicit()
- {
- try
- {
- XPathReaderFactory.createReader( "java.lang.String" );
- fail( "Should have thrown SAXPathException" );
- }
- catch (org.jaxen.saxpath.SAXPathException e)
- {
- // expected and correct
- }
- }
-
- public void testNonExistantExplicit()
- {
- try
- {
- XPathReaderFactory.createReader( "i.am.a.class.that.does.not.Exist" );
- fail( "Should have thrown SAXPathException" );
- }
- catch (org.jaxen.saxpath.SAXPathException e)
- {
- // expected and correct
- }
- }
-}
diff --git a/src/java/test/org/jaxen/test/XPathReaderTest.java b/src/java/test/org/jaxen/test/XPathReaderTest.java
deleted file mode 100644
index 7d604c9..0000000
--- a/src/java/test/org/jaxen/test/XPathReaderTest.java
+++ /dev/null
@@ -1,472 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import java.io.IOException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPath;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.saxpath.SAXPathException;
-import org.jaxen.saxpath.base.XPathReader;
-import org.jaxen.saxpath.XPathSyntaxException;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-public class XPathReaderTest extends TestCase
-{
- private ConformanceXPathHandler actual;
- private Document doc;
-
- private XPathReader reader;
-
- private String[] paths = {
- "/foo/bar[@a='1' and @b='2']",
- "/foo/bar[@a='1' and @b!='2']",
- "$varname[@a='1']",
- "//attribute::*[.!='crunchy']",
- "'//*[contains(string(text()),\"yada yada\")]'",
- };
-
- private String[][] bogusPaths = {
- new String[]{"chyld::foo", "Expected valid axis name instead of [chyld]"},
- new String[]{"foo/tacos()", "Expected node-type"},
- new String[]{"foo/tacos()", "Expected node-type"},
- new String[]{"*:foo", "Unexpected ':'"},
- new String[]{"/foo/bar[baz", "Expected: ]"},
- new String[]{"/cracker/cheese[(mold > 1) and (sense/taste", "Expected: )"},
- new String[]{"//", "Location path cannot end with //"},
- new String[]{"foo/$variable/foo", "Expected one of '.', '..', '@', '*', <QName>"}
- };
-
- public XPathReaderTest( String name )
- {
- super( name );
- }
-
- public void setUp() throws ParserConfigurationException, SAXException, IOException
- {
- this.reader = new XPathReader();
-
- this.actual = new ConformanceXPathHandler();
-
- this.reader.setXPathHandler( this.actual );
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.parse( "xml/basic.xml" );
-
- }
-
- public void tearDown()
- {
- this.reader = null;
- }
-
- // --------------------------------------------------------------------------------
- // --------------------------------------------------------------------------------
-
-
- public void testPaths() throws SAXPathException
- {
-
- for( int i = 0; i < paths.length; ++i )
- {
- reader.parse( paths[i] );
- }
- }
-
- public void testBogusPaths() throws SAXPathException
- {
-
- for( int i = 0; i < bogusPaths.length; ++i )
- {
- final String[] bogusPath = bogusPaths[i];
-
- try
- {
- reader.parse( bogusPath[0] );
- fail( "Should have thrown XPathSyntaxException for " + bogusPath[0]);
- }
- catch( XPathSyntaxException e )
- {
- assertEquals( bogusPath[1], e.getMessage() );
- }
- }
- }
-
- public void testChildrenOfNumber() throws SAXPathException
- {
- try
- {
- reader.parse( "1/child::test" );
- fail( "Should have thrown XPathSyntaxException for 1/child::test");
- }
- catch( XPathSyntaxException e )
- {
- assertEquals( "Node-set expected", e.getMessage() );
- }
- }
-
- public void testChildIsNumber() throws SAXPathException
- {
- try
- {
- reader.parse( "jane/3" );
- fail( "Should have thrown XPathSyntaxException for jane/3");
- }
- catch( XPathSyntaxException e )
- {
- assertEquals( "Expected one of '.', '..', '@', '*', <QName>", e.getMessage() );
- }
-
- }
-
- public void testNumberOrNumber()
- {
-
- try
- {
- XPath xpath = new DOMXPath( "4 | 5" );
- xpath.selectNodes( doc );
- fail( "Should have thrown XPathSyntaxException for 4 | 5");
- }
- catch( JaxenException e )
- {
- assertEquals( "Unions are only allowed over node-sets", e.getMessage() );
- }
- }
-
- public void testStringOrNumber()
- {
-
- try
- {
- XPath xpath = new DOMXPath( "\"test\" | 5" );
- xpath.selectNodes( doc );
- fail( "Should have thrown XPathSyntaxException for \"test\" | 5");
- }
- catch( JaxenException e )
- {
- assertEquals( "Unions are only allowed over node-sets", e.getMessage() );
- }
- }
-
- public void testStringOrString()
- {
-
- try
- {
- XPath xpath = new DOMXPath( "\"test\" | \"festival\"" );
- xpath.selectNodes( doc );
- fail( "Should have thrown XPathSyntaxException for \"test\" | 5");
- }
- catch( JaxenException e )
- {
- assertEquals( "Unions are only allowed over node-sets", e.getMessage() );
- }
-
- }
-
- public void testUnionofNodesAndNonNodes()
- {
-
- try
- {
- XPath xpath = new DOMXPath( "count(//*) | //* " );
- xpath.selectNodes( doc );
- fail( "Should have thrown XPathSyntaxException for \"count(//*) | //* ");
- }
- catch( JaxenException e )
- {
- assertEquals( "Unions are only allowed over node-sets", e.getMessage() );
- }
- }
-
- public void testValidAxis() throws SAXPathException
- {
- reader.parse( "child::foo" );
- }
-
- public void testInvalidAxis() throws SAXPathException
- {
-
- try
- {
- reader.parse( "chyld::foo" );
- fail( "Should have thrown XPathSyntaxException" );
- }
- catch( XPathSyntaxException ex )
- {
- assertNotNull(ex.getMessage());
- }
-
- }
-
-/* public void testSimpleNameStep() throws SAXPathException
- {
- this.text = "foo";
- this.reader.setUpParse( this.text );
- this.reader.step( );
- this.expected.startNameStep( Axis.CHILD,
- "",
- "foo" );
- this.expected.endNameStep();
- assertEquals( this.expected,
- this.actual );
-
- }
-
- public void testNameStepWithAxisAndPrefix() throws SAXPathException
- {
- this.text = "parent::foo:bar";
- this.reader.setUpParse( this.text );
- this.reader.step( );
- this.expected.startNameStep( Axis.PARENT,
- "foo",
- "bar" );
- this.expected.endNameStep();
- assertEquals( this.expected,
- this.actual );
-
- }
-
- public void testNodeStepWithAxis() throws SAXPathException
- {
-
- this.text = "parent::node()";
- this.reader.setUpParse( this.text );
- this.reader.step();
- this.expected.startAllNodeStep( Axis.PARENT );
- this.expected.endAllNodeStep();
- assertEquals( this.expected,
- this.actual );
-
- }
-
- public void testProcessingInstructionStepWithName() throws SAXPathException
- {
- this.text = "parent::processing-instruction('cheese')";
- this.reader.setUpParse( this.text );
- this.reader.step( );
- this.expected.startProcessingInstructionNodeStep( Axis.PARENT,
- "cheese" );
- this.expected.endProcessingInstructionNodeStep();
- assertEquals( this.expected,
- this.actual );
- }
-
- public void testProcessingInstructionStepNoName() throws SAXPathException
- {
- this.text = "parent::processing-instruction()";
- this.reader.setUpParse( this.text );
- this.reader.step( );
- this.expected.startProcessingInstructionNodeStep( Axis.PARENT,
- "" );
- this.expected.endProcessingInstructionNodeStep();
- assertEquals( this.expected,
- this.actual );
-
- }
-
- public void testAllNodeStep() throws SAXPathException
- {
-
- this.text = "parent::node()";
- this.reader.setUpParse( this.text );
- this.reader.step( );
- this.expected.startAllNodeStep( Axis.PARENT );
- this.expected.endAllNodeStep();
- assertEquals( this.expected,
- this.actual );
-
- }
-
- public void testTextNodeStep() throws SAXPathException
- {
-
- this.text = "parent::text()";
- this.reader.setUpParse( this.text );
- this.reader.step( );
- this.expected.startTextNodeStep( Axis.PARENT );
- this.expected.endTextNodeStep();
- assertEquals( this.expected,
- this.actual );
-
- }
-
- public void testCommentNodeStep() throws SAXPathException
- {
-
- this.text = "parent::comment()";
- this.reader.setUpParse( this.text );
- this.reader.step( );
- this.expected.startCommentNodeStep( Axis.PARENT );
- this.expected.endCommentNodeStep();
- assertEquals( this.expected,
- this.actual );
-
- }*/
-
- public void testLocationPathStartsWithVariable() throws SAXPathException
- {
-
- reader.parse( "$variable/foo" );
-
- }
-
- public void testLocationPathStartsWithParentheses() throws SAXPathException
- {
-
- reader.parse( "(//x)/foo" );
-
- }
-
- /*public void testRelativeLocationPath() throws SAXPathException
- {
-
- this.text = "foo/bar/baz";
- this.reader.setUpParse( this.text );
- this.reader.locationPath( false );
- this.expected.startRelativeLocationPath();
- this.expected.startNameStep( Axis.CHILD,
- "",
- "foo" );
- this.expected.endNameStep();
- this.expected.startNameStep( Axis.CHILD,
- "",
- "bar" );
- this.expected.endNameStep();
- this.expected.startNameStep( Axis.CHILD,
- "",
- "baz" );
- this.expected.endNameStep();
- this.expected.endRelativeLocationPath();
- assertEquals( this.expected,
- this.actual );
-
- }
-
- public void testAbsoluteLocationPath() throws SAXPathException
- {
-
- this.text = "/foo/bar/baz";
- this.reader.setUpParse( this.text );
- this.reader.locationPath( true );
- this.expected.startAbsoluteLocationPath();
- this.expected.startNameStep( Axis.CHILD,
- "",
- "foo" );
- this.expected.endNameStep();
- this.expected.startNameStep( Axis.CHILD,
- "",
- "bar" );
- this.expected.endNameStep();
- this.expected.startNameStep( Axis.CHILD,
- "",
- "baz" );
- this.expected.endNameStep();
- this.expected.endAbsoluteLocationPath();
- assertEquals( this.expected,
- this.actual );
-
- }*/
-
- public void testNoSpaceAfterDiv() throws JaxenException
- {
- XPath xpath = new DOMXPath( "105 div10" );
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(10.5, result.doubleValue(), 0.000001);
- }
-
-
- public void testNoSpaceAfterMod() throws JaxenException
- {
- XPath xpath = new DOMXPath( "105 mod10" );
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(5, result.intValue());
- }
-
-
- public void testNoSpaceAfterPlus() throws JaxenException
- {
- XPath xpath = new DOMXPath( "105 +10" );
- Double result = (Double) xpath.evaluate(doc);
- assertEquals(115, result.intValue());
- }
-
- public void testNoSpaceAfterAnd() throws JaxenException
- {
- XPath xpath = new DOMXPath("true() andfalse()");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertFalse(result.booleanValue());
- }
-
- public void testNoSpaceAfterOr() throws JaxenException
- {
- XPath xpath = new DOMXPath("true() orfalse()");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
- public void testAndImmediatelyFollowedByRelativeLocationPath() throws JaxenException
- {
- XPath xpath = new DOMXPath("true() andfoo");
- Boolean result = (Boolean) xpath.evaluate(doc);
- assertTrue(result.booleanValue());
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/XPathSyntaxExceptionTest.java b/src/java/test/org/jaxen/test/XPathSyntaxExceptionTest.java
deleted file mode 100644
index da9e418..0000000
--- a/src/java/test/org/jaxen/test/XPathSyntaxExceptionTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2005 Elliotte Rusty Harold.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-package org.jaxen.test;
-
-
-import junit.framework.TestCase;
-
-import org.jaxen.JaxenException;
-import org.jaxen.XPathSyntaxException;
-import org.jaxen.dom.*;
-
-/**
- * @author Elliotte Rusty Harold
- *
- */
-public class XPathSyntaxExceptionTest extends TestCase {
-
- public XPathSyntaxExceptionTest(String name) {
- super(name);
- }
-
- public void testGetXPath() throws JaxenException {
-
- try {
- new DOMXPath("///triple slash");
- fail("Bad parsing");
- }
- catch (XPathSyntaxException ex) {
- assertEquals("///triple slash", ex.getXPath());
- }
-
- }
-
- public void testGetPositionMarker() throws JaxenException {
-
- try {
- new DOMXPath("///triple slash");
- fail("Bad parsing");
- }
- catch (XPathSyntaxException ex) {
- assertTrue(ex.getPositionMarker().startsWith(" "));
- assertTrue(ex.getPositionMarker().endsWith("^"));
- }
-
- }
-
- public void testGetMultilineMessage() throws JaxenException {
-
- try {
- new DOMXPath("///triple slash");
- fail("Bad parsing");
- }
- catch (XPathSyntaxException ex) {
- String message = ex.getMultilineMessage();
- assertTrue(message.indexOf("\n///triple slash\n") > 1);
- assertTrue(message.endsWith("^"));
- }
-
- }
-
-}
diff --git a/src/java/test/org/jaxen/test/XPathTestBase.java b/src/java/test/org/jaxen/test/XPathTestBase.java
deleted file mode 100644
index 1f677e4..0000000
--- a/src/java/test/org/jaxen/test/XPathTestBase.java
+++ /dev/null
@@ -1,1730 +0,0 @@
-/*
- * $Header$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- *
- * Copyright 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the Jaxen Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id$
- */
-
-
-package org.jaxen.test;
-
-import junit.framework.TestCase;
-
-import org.jaxen.*;
-import org.jaxen.dom.DOMXPath;
-import org.jaxen.function.StringFunction;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-import org.jaxen.pattern.Pattern;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-public abstract class XPathTestBase extends TestCase
-{
- protected static String VAR_URI = "http://jaxen.org/test-harness/var";
- protected static String TESTS_XML = "xml/test/tests.xml";
-
- protected static boolean verbose = false;
- protected static boolean debug = false;
- private ContextSupport contextSupport;
-
- protected XPathTestBase(String name)
- {
- super(name);
- }
-
- protected void setUp() throws Exception
- {
- this.contextSupport = null;
- System.setProperty(XPathReaderFactory.DRIVER_PROPERTY,
- "");
- log("-----------------------------");
- }
-
- public void log(String text)
- {
- log(verbose,
- text);
- }
-
- private void log(boolean actualVerbose,
- String text)
- {
- if (actualVerbose) System.out.println(text);
- }
-
- private void assertCountXPath(int expectedSize, Object context, String xpathStr) throws JaxenException
- {
- assertCountXPath2(expectedSize, context, xpathStr);
- }
-
- private Object assertCountXPath2(int expectedSize, Object context, String xpathStr) throws JaxenException
- {
- log(debug,
- " Select :: " + xpathStr);
- DOMXPath xpath = new DOMXPath(xpathStr);
- List results = xpath.selectNodes(getContext(context));
- log(debug,
- " Expected Size :: " + expectedSize);
- log(debug,
- " Result Size :: " + results.size());
- if (expectedSize != results.size())
- {
- log(debug,
- " ## FAILED");
- log(debug,
- " ## xpath: " + xpath + " = " + xpath.debug());
- Iterator resultIter = results.iterator();
- while (resultIter.hasNext())
- {
- log(debug,
- " --> " + resultIter.next());
- }
- }
- assertEquals(xpathStr,
- expectedSize,
- results.size());
- assertExprGetTextIdempotent(xpath);
- if (expectedSize > 0)
- {
- return results.get(0);
- }
- return null;
- }
-
- private void assertInvalidXPath(Object context, String xpathStr)
- {
- try
- {
- log(debug,
- " Select :: " + xpathStr);
- DOMXPath xpath = new DOMXPath(xpathStr);
- List results = xpath.selectNodes(getContext(context));
- log(debug,
- " Result Size :: " + results.size());
- fail("An exception was expected.");
- }
- catch (JaxenException e)
- {
- log(debug, " Caught expected exception " + e.getMessage());
- }
- }
-
- private void assertValueOfXPath(String expected, Object context, String xpathStr) throws JaxenException
- {
- DOMXPath xpath = new DOMXPath(xpathStr);
- Object node = xpath.evaluate(getContext(context));
- String result = StringFunction.evaluate(node,
- getNavigator());
- log(debug,
- " Select :: " + xpathStr);
- log(debug,
- " Expected :: " + expected);
- log(debug,
- " Result :: " + result);
- if (!expected.equals(result))
- {
- log(debug,
- " ## FAILED");
- log(debug,
- " ## xpath: " + xpath + " = " + xpath.debug());
- }
- assertEquals(xpathStr,
- expected,
- result);
- assertExprGetTextIdempotent(xpath);
- }
-
- private void assertExprGetTextIdempotent(BaseXPath xpath) throws JaxenException
- {
- assertEquals(0, ExprComparator.EXPR_COMPARATOR.compare(xpath.getRootExpr(),
- new BaseXPath(xpath.getRootExpr().getText(), null).getRootExpr()));
- }
-
- private Context getContext(Object contextNode)
- {
- Context context = new Context(getContextSupport());
- List list = new ArrayList(1);
- list.add(contextNode);
- context.setNodeSet(list);
- return context;
- }
-
- private ContextSupport getContextSupport()
- {
- if (this.contextSupport == null)
- {
- this.contextSupport = new ContextSupport(new SimpleNamespaceContext(),
- XPathFunctionContext.getInstance(),
- new SimpleVariableContext(),
- getNavigator());
- }
- return this.contextSupport;
- }
-
- protected abstract Navigator getNavigator();
- protected abstract Object getDocument(String url) throws Exception;
-
- public void testGetNodeType() throws FunctionCallException, UnsupportedAxisException
- {
- Navigator nav = getNavigator();
- Object document = nav.getDocument("xml/testNamespaces.xml");
- int count = 0;
- Iterator descendantOrSelfAxisIterator = nav.getDescendantOrSelfAxisIterator(document);
- while (descendantOrSelfAxisIterator.hasNext())
- {
- Object node = descendantOrSelfAxisIterator.next();
- Iterator namespaceAxisIterator = nav.getNamespaceAxisIterator(node);
- while (namespaceAxisIterator.hasNext())
- {
- count++;
- assertEquals("Node type mismatch", Pattern.NAMESPACE_NODE, nav.getNodeType(namespaceAxisIterator.next()));
- }
- }
- assertEquals(25, count);
- }
-
-
- /* test for jaxen-24
- */
- public void testJaxen24() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/jaxen24.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/body/div", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "preceding::*[1]");
- assertValueOfXPath("span", context, "local-name(preceding::*[1])");
- }
- }
-
- /* jaxen-58
- */
- public void testJaxen58() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/jaxen24.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(0, context, "//preceding::x");
- assertCountXPath(0, context, "//following::x");
- assertCountXPath(0, context, "/descendant::*/preceding::x");
- assertCountXPath(0, context, "/descendant::node()/preceding::x");
- }
- }
-
- /* test for jaxen-3
- */
- public void testJaxen3() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("abd", context, "string()");
- }
- }
-
- public void testStringFunction1() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/root", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("abd", context, "string()");
- }
- }
-
- public void testStringFunction2() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/root/a", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("a", context, "string()");
- }
- }
-
- public void testStringFunction3() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/root/c", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("d", context, "string()");
- }
- }
-
- /* test for jaxen-3
- */
- public void testJaxen3dupe() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/jaxen3.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "/Configuration/hostname/attrlist/hostname[. = 'CE-A'] ");
- }
- }
-
- /* parser test cases all of which should fail
- */
- public void testForParserErrors() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/numbers.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* repeated xpaths, jaxen-35
- */
- assertInvalidXPath(context, "/numbers numbers");
- /* invalid xpath, jaxen-34
- */
- assertInvalidXPath(context, "/a/b[c > d]efg");
- /* invalid xpath, jaxen-27
- */
- assertInvalidXPath(context, "/inv/child::");
- /* invalid xpath, jaxen-26
- */
- assertInvalidXPath(context, "/invoice/@test[abcd");
- assertInvalidXPath(context, "/invoice/@test[abcd > x");
- /* unterminated string
- */
- assertInvalidXPath(context, "string-length('a");
- /* various edge cases where code threw no exception
- */
- assertInvalidXPath(context, "/descendant::()");
- assertInvalidXPath(context, "(1 + 1");
- // no ! operator
- assertInvalidXPath(context, "!false()");
- }
- }
-
- /* test cases for the use of underscores in names
- */
- public void testUnderscoresInNames() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/underscore.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "/root/@a");
- assertCountXPath(1, context, "/root/@_a");
- assertCountXPath(1, context, "/root/b");
- assertCountXPath(1, context, "/root/_b");
- assertValueOfXPath("1", context, "/root/@a");
- assertValueOfXPath("2", context, "/root/@_a");
- assertValueOfXPath("1", context, "/root/b");
- assertValueOfXPath("2", context, "/root/_b");
- }
- }
-
- /* test cases for the use of = with node-sets
- */
- public void testNodesetEqualsString() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("true", context, "/web-app/servlet/servlet-name = 'file'");
- assertValueOfXPath("true", context, "/web-app/servlet/servlet-name = 'snoop'");
- }
- }
-
- public void testNodesetEqualsNumber() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/numbers.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("true", context, "/numbers/set/nr = '-3'");
- assertValueOfXPath("true", context, "/numbers/set/nr = -3");
- assertValueOfXPath("true", context, "/numbers/set/nr = 24");
- assertValueOfXPath("true", context, "/numbers/set/nr/@value = '9999'");
- assertValueOfXPath("true", context, "/numbers/set/nr/@value = 9999.0");
- assertValueOfXPath("true", context, "/numbers/set/nr/@value = 66");
- }
- }
-
- /* test basic math...
- */
- public void testIntegerArithmetic() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/numbers.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("true", context, "(8 * 2 + 1) = 17");
- assertValueOfXPath("true", context, "(1 + 8 * 2) = 17");
- assertValueOfXPath("true", context, "(7 - 3 + 1) = 5");
- assertValueOfXPath("true", context, "(8 - 4 + 5 - 6) = 3");
- /* left-assoc tests, comments show WRONG evaluation
- */
- /* 3 - 2 - 1 != 2
- */
- assertValueOfXPath("0", context, "3 - 2 - 1");
- /* 8 div 4 div 2 != 4
- */
- assertValueOfXPath("1", context, "8 div 4 div 2");
- /* 3 mod 5 mod 7 != 1
- */
- assertValueOfXPath("3", context, "3 mod 7 mod 5");
- /* 1=(2=2) is true
- */
- assertValueOfXPath("false", context, "1 = 2 = 2");
- /* 2!=(3!=1) => 2!=1 => true, (2!=3)!=1 => 1!=1 => false
- */
- assertValueOfXPath("false", context, "2 != 3 != 1");
- /* 3 > (2 > 1) is true
- */
- assertValueOfXPath("false", context, "3 > 2 > 1");
- /* 3 >= (2 >= 2) is true
- */
- assertValueOfXPath("false", context, "3 >= 2 >= 2");
- /* 1 < (2 < 3) is false
- */
- assertValueOfXPath("true", context, "1 < 2 < 3");
- /* 0 <= (2 <= 3) is true
- */
- assertValueOfXPath("true", context, "2 <= 2 <= 3");
- }
- }
-
- public void testFloatingPointArithmetic() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/numbers.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("true", context, "(8.5 * 2.0 + 1) = 18");
- assertValueOfXPath("true", context, "(1.00 + 8.5 * 2) = 18.0");
- assertValueOfXPath("true", context, "(7.1 - 7.1 + 1.5) = 1.5");
- assertValueOfXPath("true", context, "(8.000 - 4.0 + 5 - 6.00) = 3");
- assertValueOfXPath("0", context, "3.5 - 2.5 - 1.0");
- assertValueOfXPath("1", context, "8.0 div 4.0 div 2.0");
- assertValueOfXPath("3", context, "3.0 mod 7.0 mod 5.0");
- assertValueOfXPath("false", context, "1.5 = 2.3 = 2.3");
- assertValueOfXPath("false", context, "2.1 != 3.2 != 1.9");
- assertValueOfXPath("false", context, "3.8 > 2.7 > 1.6");
- assertValueOfXPath("false", context, "3.4 >= 2.5 >= 2.5");
- assertValueOfXPath("true", context, "1.4 < 2.3 < 3.2");
- assertValueOfXPath("true", context, "2.5 <= 2.5 <= 3.5");
- }
- }
-
- /* test cases for preceding axis with different node types
- */
- public void testPrecedingSiblingAxis() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/pi2.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/a/c", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "//processing-instruction()");
- assertCountXPath(1, context, "preceding-sibling::*");
- assertCountXPath(5, context, "preceding-sibling::node()");
- assertCountXPath(1, context, "preceding-sibling::*[1]");
- assertCountXPath(1, context, "preceding-sibling::processing-instruction()");
- assertValueOfXPath("order-by=\"x\"", context, "preceding-sibling::processing-instruction()");
- assertValueOfXPath("foo", context, "preceding-sibling::*[1]");
- assertValueOfXPath("order-by=\"x\"", context, "preceding-sibling::node()[2]");
- }
- }
-
- public void testVariableLookup() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/id.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- SimpleVariableContext varContext = new SimpleVariableContext();
- varContext.setVariableValue(null, "foobar", "foobar");
- varContext.setVariableValue(null, "foo", "foo");
- getContextSupport().setVariableContext(varContext);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("foobar", context, "$foobar");
- assertCountXPath(1, context, "/foo[@id=$foobar]");
- assertCountXPath(0, context, "/foo[@id='$foobar']");
- assertCountXPath(1, context, "/foo[concat($foo, 'bar')=@id]");
- assertCountXPath(0, context, "CD_Library/artist[@name=$artist]");
- }
- }
-
- public void testAttributeParent() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/id.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* attributes have a parent: their element
- */
- assertCountXPath(1, context, "/foo/@id/parent::foo");
- }
- }
-
- /* attributes can also be used as context nodes
- */
- public void testAttributeAsContext() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/id.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/foo/@id", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "parent::foo");
- }
- }
-
- public void testid53992() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/pi.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(3, context, "//processing-instruction()");
- assertCountXPath(2, context, "//processing-instruction('cheese')");
- Object result = assertCountXPath2(1, context, "//processing-instruction('toast')");
- assertValueOfXPath("is tasty", result, "string()");
- }
- }
-
- /* test evaluate() extension function
- */
- public void testid54032() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/evaluate.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(3, context, "evaluate('//jumps/*')");
- assertCountXPath(1, context, "evaluate('//jumps/object/dog')");
- assertCountXPath(0, context, "evaluate('//jumps/object')/evaluate");
- assertCountXPath(1, context, "evaluate('//jumps/object')/dog");
- assertCountXPath(1, context, "evaluate('//jumps/*')/dog");
- assertCountXPath(1, context, "//metatest[ evaluate(@select) = . ]");
- }
- }
-
- public void testid54082() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/numbers.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/numbers/set[1]", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "*[-3 = .]");
- assertValueOfXPath("true", context, "54 < *");
- assertValueOfXPath("true", context, "55 <= *");
- assertValueOfXPath("false", context, "69 < *");
- assertValueOfXPath("true", context, "-2 > *");
- assertValueOfXPath("true", context, "-3 >= *");
- assertValueOfXPath("false", context, "-4 >= *");
- }
- }
-
- /* TODO
- This context should work, but needs a fixed version of saxpath to parse the right-hand side
- of the greater-than expression.
- <context select="/numbers/set[2]">
- <valueOf select="1 > nr/@value">false</valueOf>
- <valueOf select="55 > nr/@value">false</valueOf>
- <valueOf select="55 >= nr/@value">true</valueOf>
- <valueOf select="1000000 > nr/@value">true</valueOf>
- </context>
-
- */
- /* test sibling axes
- */
- public void testid54145() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/axis.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/root", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(0, context, "preceding-sibling::*");
- }
- }
-
- public void testid54156() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/axis.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/root/a/a.3", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(2, context, "preceding::*");
- }
- }
-
- public void testid54168() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/axis.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/root/a/a.3", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(2, context, "preceding-sibling::*");
- }
- }
-
- public void testid54180() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/axis.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("a.2", context, "name(/root/a/a.3/preceding-sibling::*[1])");
- assertValueOfXPath("a.1", context, "name(/root/a/a.3/preceding-sibling::*[2])");
- }
- }
-
- public void testid54197() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/axis.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("a.4", context, "name(/root/a/a.3/following-sibling::*[1])");
- assertValueOfXPath("a.5", context, "name(/root/a/a.3/following-sibling::*[2])");
- }
- }
-
- public void testid54219() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("snoop", context, "/web-app/servlet[1]/servlet-name");
- assertValueOfXPath("snoop", context, "/web-app/servlet[1]/servlet-name/text()");
- assertValueOfXPath("file", context, "/web-app/servlet[2]/servlet-name");
- assertValueOfXPath("file", context, "/web-app/servlet[2]/servlet-name/text()");
- }
- }
-
- public void testid54249() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/web-app/servlet[1]", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("snoop", context, "servlet-name");
- assertValueOfXPath("snoop", context, "servlet-name/text()");
- }
- }
-
- public void testid54266() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/web-app/servlet[2]/servlet-name", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(3, context, "preceding::*");
- }
- }
-
- public void testid54278() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/web-app/servlet[2]/servlet-name", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(13, context, "following::*");
- }
- }
-
- /* test name
- */
- public void testid54298() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- Object result = assertCountXPath2(1, context, "*");
- assertValueOfXPath("web-app", result, "name()");
- /* NOTE that the child::node() tests only work if the
- XML document does not comments or PIs
-
- */
- result = assertCountXPath2(1, context, "./*");
- assertValueOfXPath("web-app", result, "name()");
- result = assertCountXPath2(1, context, "child::*");
- assertValueOfXPath("web-app", result, "name()");
- result = assertCountXPath2(1, context, "/*");
- assertValueOfXPath("web-app", result, "name()");
- result = assertCountXPath2(1, context, "/child::node()");
- assertValueOfXPath("web-app", result, "name(.)");
- result = assertCountXPath2(1, context, "child::node()");
- assertValueOfXPath("web-app", result, "name(.)");
- /* empty names
- */
- assertValueOfXPath("", context, "name()");
- assertValueOfXPath("", context, "name(.)");
- assertValueOfXPath("", context, "name(parent::*)");
- assertValueOfXPath("", context, "name(/)");
- assertValueOfXPath("", context, "name(/.)");
- assertValueOfXPath("", context, "name(/self::node())");
- /* name of root elemet
- */
- assertValueOfXPath("web-app", context, "name(node())");
- assertValueOfXPath("web-app", context, "name(/node())");
- assertValueOfXPath("web-app", context, "name(/*)");
- assertValueOfXPath("web-app", context, "name(/child::*)");
- assertValueOfXPath("web-app", context, "name(/child::node())");
- assertValueOfXPath("web-app", context, "name(/child::node())");
- assertValueOfXPath("web-app", context, "name(child::node())");
- assertValueOfXPath("web-app", context, "name(./*)");
- assertValueOfXPath("web-app", context, "name(*)");
- }
- }
-
- public void testid54467() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/*", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* empty names
- */
- assertValueOfXPath("", context, "name(..)");
- assertValueOfXPath("", context, "name(parent::node())");
- assertValueOfXPath("", context, "name(parent::*)");
- /* name of root elemet
- */
- assertValueOfXPath("web-app", context, "name()");
- assertValueOfXPath("web-app", context, "name(.)");
- assertValueOfXPath("web-app", context, "name(../*)");
- assertValueOfXPath("web-app", context, "name(../child::node())");
- }
- }
-
- /* test predicates
- */
- public void testid54522() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/nitf.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/nitf/head/docdata", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "doc-id[@regsrc='AP' and @id-string='D76UIMO80']");
- }
- }
-
- public void testid54534() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/nitf.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/nitf/head", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "meta[@name='ap-cycle']");
- assertCountXPath(1, context, "meta[@content='AP']");
- assertCountXPath(8, context, "meta[@name and @content]");
- assertCountXPath(1, context, "meta[@name='ap-cycle' and @content='AP']");
- assertCountXPath(7, context, "meta[@name != 'ap-cycle']");
- }
- }
-
- public void testid54570() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/nitf.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "/nitf/head/meta[@name='ap-cycle']");
- assertCountXPath(1, context, "/nitf/head/meta[@content='AP']");
- assertCountXPath(8, context, "/nitf/head/meta[@name and @content]");
- assertCountXPath(1, context, "/nitf/head/meta[@name='ap-cycle' and @content='AP']");
- assertCountXPath(7, context, "/nitf/head/meta[@name != 'ap-cycle']");
- }
- }
-
- public void testid54614() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/moreover.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "/child::node()");
- assertCountXPath(1, context, "/*");
- assertCountXPath(20, context, "/*/article");
- assertCountXPath(221, context, "//*");
- assertCountXPath(20, context, "//*[local-name()='article']");
- assertCountXPath(20, context, "//article");
- assertCountXPath(20, context, "/*/*[@code]");
- assertCountXPath(1, context, "/moreovernews/article[@code='13563275']");
- DOMXPath xpath = new DOMXPath("/moreovernews/article[@code='13563275']");
- List results = xpath.selectNodes(getContext(context));
- Object result = results.get(0);
- assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url");
- xpath = new DOMXPath("/*/article[@code='13563275']");
- results = xpath.selectNodes(getContext(context));
- result = results.get(0);
- assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url");
- xpath = new DOMXPath("//article[@code='13563275']");
- results = xpath.selectNodes(getContext(context));
- result = results.get(0);
- assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url");
- xpath = new DOMXPath("//*[@code='13563275']");
- results = xpath.selectNodes(getContext(context));
- result = results.get(0);
- assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url");
- xpath = new DOMXPath("/child::node()/child::node()[@code='13563275']");
- results = xpath.selectNodes(getContext(context));
- result = results.get(0);
- assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url");
- xpath = new DOMXPath("/*/*[@code='13563275']");
- results = xpath.selectNodes(getContext(context));
- result = results.get(0);
- assertValueOfXPath("http://c.moreover.com/click/here.pl?x13563273", result, "url");
- }
- }
-
- /* test other node types
- */
- public void testNodeTypes() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/contents.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(3, context, "processing-instruction()");
- assertCountXPath(3, context, "/processing-instruction()");
- assertCountXPath(1, context, "/comment()");
- assertCountXPath(1, context, "comment()");
- assertCountXPath(2, context, "/child::node()/comment()");
- assertCountXPath(2, context, "/*/comment()");
- assertCountXPath(3, context, "//comment()");
- }
- }
-
- /* test positioning
- */
- public void testPositioning() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/fibo.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(9, context, "/*/fibonacci[position() < 10]");
- assertValueOfXPath("196417", context, "sum(//fibonacci)");
- assertValueOfXPath("325", context, "sum(//fibonacci/@index)");
- assertValueOfXPath("1", context, "/*/fibonacci[2]");
- assertValueOfXPath("75025", context, "/*/fibonacci[ count(/*/fibonacci) ]");
- assertValueOfXPath("46368", context, "/*/fibonacci[ count(/*/fibonacci) - 1 ]");
- }
- }
-
- /* test number functions
- */
- /* test Axes
- */
- public void testid54853() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(19, context, "descendant-or-self::*");
- assertCountXPath(19, context, "descendant::*");
- assertCountXPath(19, context, "/descendant::*");
- assertCountXPath(19, context, "/descendant-or-self::*");
- assertCountXPath(2, context, "/descendant::servlet");
- assertCountXPath(2, context, "/descendant-or-self::servlet");
- assertCountXPath(2, context, "descendant-or-self::servlet");
- assertCountXPath(2, context, "descendant::servlet");
- assertCountXPath(2, context, "/*/servlet");
- assertValueOfXPath("2", context, "count(/*/servlet)");
- assertCountXPath(2, context, "//servlet");
- assertValueOfXPath("2", context, "count(//servlet)");
- }
- }
-
- public void testid54932() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/web-app", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(2, context, "/descendant::servlet");
- assertCountXPath(2, context, "/descendant-or-self::servlet");
- assertCountXPath(2, context, "descendant-or-self::servlet");
- assertCountXPath(2, context, "descendant::servlet");
- }
- }
-
- public void testCountFunction() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/much_ado.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(5, context, "/descendant::ACT");
- assertCountXPath(5, context, "descendant::ACT");
- assertValueOfXPath("Much Ado about Nothing", context, "/PLAY/TITLE");
- assertValueOfXPath("4", context, "2+2");
- assertValueOfXPath("21", context, "5 * 4 + 1");
- assertValueOfXPath("5", context, "count(descendant::ACT)");
- assertValueOfXPath("35", context, "10 + count(descendant::ACT) * 5");
- assertValueOfXPath("75", context, "(10 + count(descendant::ACT)) * 5");
- }
- }
-
- public void testCountFunctionMore() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/much_ado.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/PLAY/ACT[2]/SCENE[1]", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(5, context, "/descendant::ACT");
- assertCountXPath(5, context, "../../descendant::ACT");
- assertCountXPath(141, context, "/PLAY/ACT[2]/SCENE[1]/descendant::SPEAKER");
- assertCountXPath(141, context, "descendant::SPEAKER");
- assertValueOfXPath("646", context, "count(descendant::*)+1");
- assertValueOfXPath("142", context, "count(descendant::SPEAKER)+1");
- assertValueOfXPath("2", context, "count(ancestor::*)");
- assertValueOfXPath("1", context, "count(ancestor::PLAY)");
- assertValueOfXPath("3", context, "count(ancestor-or-self::*)");
- assertValueOfXPath("1", context, "count(ancestor-or-self::PLAY)");
- assertValueOfXPath("6", context, "5+count(ancestor::*)-1");
- }
- }
-
- public void testCorrectPredicateApplication() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/much_ado.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* Test correct predicate application
- */
- assertValueOfXPath("5", context, "count(/PLAY/ACT/SCENE[1])");
- }
- }
-
- /* test axis node ordering
- */
- public void testAxisNodeOrdering() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* Reported as Jira issue JAXEN-24
- */
- assertCountXPath(1, context, "//servlet-mapping/preceding::*[1][name()='description']");
- assertCountXPath(1, context, "/web-app/servlet//description/following::*[1][name()='servlet-mapping']");
- assertCountXPath(1, context, "/web-app/servlet//description/following::*[2][name()='servlet-name']");
- }
- }
-
- /* test document function
- */
- public void testDocumentFunction1() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/text.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- Object result = assertCountXPath2(1, context, "document('xml/web.xml')");
- assertValueOfXPath("snoop", result, "/web-app/servlet[1]/servlet-name");
- assertValueOfXPath("snoop", result, "/web-app/servlet[1]/servlet-name/text()");
- assertValueOfXPath("snoop", context, "document('xml/web.xml')/web-app/servlet[1]/servlet-name");
- }
- }
-
- /* Test to check if the context changes when an extension function is used.
- First test is an example, second is the actual test.
-
- */
- public void testDocumentFunctionContextExample() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/text.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/foo/bar/cheese[1]", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("3foo3", context, "concat(./@id,'foo', at id)");
- assertValueOfXPath("3snoop3", context, "concat(./@id,document('xml/web.xml')/web-app/servlet[1]/servlet-name,./@id)");
- }
- }
-
- public void testDocumentFunctionActual() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/message.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("Pruefgebiete", context, "/message/body/data/items/item[name/text()='parentinfo']/value");
- assertValueOfXPath("Pruefgebiete", context, "document('xml/message.xml')/message/body/data/items/item[name/text()='parentinfo']/value");
- }
- }
-
- /* test behaviour of AbsoluteLocationPath
- */
- public void testAbsoluteLocationPaths() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/root/a", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("ab", context, "concat( ., /root/b )");
- assertValueOfXPath("ba", context, "concat( ../b, . )");
- assertValueOfXPath("ba", context, "concat( /root/b, . )");
- assertValueOfXPath("db", context, "concat( /root/c/d, ../b )");
- }
- }
-
- /* test the translate() function
- */
- public void testTranslateFunction() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("", context, "translate( '', '', '' )");
- assertValueOfXPath("abcd", context, "translate( 'abcd', '', '' )");
- assertValueOfXPath("abcd", context, "translate( 'abcd', 'abcd', 'abcd' )");
- assertValueOfXPath("abcd", context, "translate( 'abcd', 'dcba', 'dcba' )");
- assertValueOfXPath("dcba", context, "translate( 'abcd', 'abcd', 'dcba' )");
- assertValueOfXPath("ab", context, "translate( 'abcd', 'abcd', 'ab' )");
- assertValueOfXPath("cd", context, "translate( 'abcd', 'cdab', 'cd' )");
- assertValueOfXPath("xy", context, "translate( 'abcd', 'acbd', 'xy' )");
- assertValueOfXPath("abcd", context, "translate( 'abcd', 'abcdb', 'abcdb' )");
- assertValueOfXPath("abcd", context, "translate( 'abcd', 'abcd', 'abcdb' )");
- }
- }
-
- public void testSubstringFunction() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("234", context, "substring('12345', 1.5, 2.6)");
- assertValueOfXPath("12", context, "substring('12345', 0, 3)");
- assertValueOfXPath("", context, "substring('12345', 0 div 0, 3)");
- assertValueOfXPath("", context, "substring('12345', 1, 0 div 0)");
- assertValueOfXPath("12345", context, "substring('12345', -42, 1 div 0)");
- assertValueOfXPath("", context, "substring('12345', -1 div 0, 1 div 0)");
- assertValueOfXPath("345", context, "substring('12345', 3)");
- assertValueOfXPath("12345", context, "substring('12345',1,15)");
- }
- }
-
- /* Some tests for the normalize-space() function
- */
- public void testNormalizeSpaceFunction() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/simple.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("abc", context, "normalize-space(' abc ')");
- assertValueOfXPath("a b c", context, "normalize-space(' a b c ')");
- assertValueOfXPath("a b c", context, "normalize-space(' a \n b \n c')");
- /* Next test case addresses issue JAXEN-22
- */
- assertValueOfXPath("", context, "normalize-space(' ')");
- /* Next test case addresses issue JAXEN-29
- */
- assertValueOfXPath("", context, "normalize-space('')");
- }
- }
-
- /* test cases for String extension functions
- */
- public void testStringExtensionFunctions() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/web.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/web-app/servlet[1]", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class )");
- assertValueOfXPath("snoopservlet", context, "lower-case( servlet-class )");
- assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class, 'fr' )");
- assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class, 'fr-CA' )");
- assertValueOfXPath("SNOOPSERVLET", context, "upper-case( servlet-class, 'es-ES-Traditional_WIN' )");
- assertValueOfXPath("true", context, "ends-with( servlet-class, 'Servlet' )");
- assertValueOfXPath("false", context, "ends-with( servlet-class, 'S' )");
- }
- }
-
- /* test cases for the lang() function
- */
- public void testLangFunction() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/lang.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(0, context, "/e1/e2[lang('hr')]");
- assertCountXPath(1, context, "/e1/e2/e3[lang('en')]");
- assertCountXPath(1, context, "/e1/e2/e3[lang('en-US')]");
- assertCountXPath(0, context, "/e1/e2/e3[lang('en-GB')]");
- assertCountXPath(2, context, "/e1/e2/e3[lang('hu')]");
- assertCountXPath(0, context, "/e1/e2/e3[lang('hu-HU')]");
- assertCountXPath(1, context, "/e1/e2/e3[lang('es')]");
- assertCountXPath(0, context, "/e1/e2/e3[lang('es-BR')]");
- }
- }
-
- /* test namespace
- */
- public void testNamespacesAgain() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/namespaces.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- SimpleNamespaceContext nsContext = new SimpleNamespaceContext();
- nsContext.addNamespace("alias", "http://fooNamespace/");
- nsContext.addNamespace("bar", "http://barNamespace/");
- nsContext.addNamespace("voo", "http://fooNamespace/");
- nsContext.addNamespace("foo", "http://fooNamespace/");
- getContextSupport().setNamespaceContext(nsContext);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "/*");
- assertCountXPath(1, context, "/foo:a");
- assertCountXPath(1, context, "/foo:a/b");
- assertCountXPath(1, context, "/voo:a/b/c");
- assertCountXPath(1, context, "/voo:a/bar:f");
- assertCountXPath(1, context, "/*[namespace-uri()='http://fooNamespace/' and local-name()='a']");
- assertCountXPath(1, context, "/*[local-name()='a' and namespace-uri()='http://fooNamespace/']/*[local-name()='x' and namespace-uri()='http://fooNamespace/']");
- 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/']");
- }
- }
-
- /* the prefix here and in the document have no relation; it's their
- namespace-uri binding that counts
- */
- public void testPrefixDoesntMatter() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/namespaces.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- SimpleNamespaceContext nsContext = new SimpleNamespaceContext();
- nsContext.addNamespace("foo", "http://somethingElse/");
- getContextSupport().setNamespaceContext(nsContext);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(0, context, "/foo:a/b/c");
- }
- }
-
- /* Jaxen-67, affects Jelly and Maven */
- public void testCDATASectionsAreIncludedInTextNodes() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/cdata.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextPath = new BaseXPath("/p/text()", nav);
- log("Initial Context :: " + contextPath);
- List list = contextPath.selectNodes(document);
- // Depending on the object model, there can be anywhere from
- // 1 to 3 nodes returned here.
- StringBuffer buffer = new StringBuffer(10);
- Iterator iterator = list.iterator();
- while (iterator.hasNext()) {
- buffer.append(StringFunction.evaluate(iterator.next(), nav));
- }
- assertEquals("awhateverb", buffer.toString());
- }
-
- public void testNamespaces() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/namespaces.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- SimpleNamespaceContext nsContext = new SimpleNamespaceContext();
- nsContext.addNamespace("alias", "http://fooNamespace/");
- nsContext.addNamespace("bar", "http://barNamespace/");
- nsContext.addNamespace("foo", "http://fooNamespace/");
- getContextSupport().setNamespaceContext(nsContext);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertValueOfXPath("Hello", context, "/foo:a/b/c");
- assertValueOfXPath("Hey", context, "/foo:a/foo:d/foo:e");
- assertValueOfXPath("Hey3", context, "/foo:a/alias:x/alias:y");
- assertValueOfXPath("Hey3", context, "/foo:a/foo:x/foo:y");
- 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/']");
- }
- }
-
- public void testNoNamespace() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/defaultNamespace.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* NOTE: /a/b/c selects elements in no namespace only!
- */
- assertCountXPath(0, context, "/a/b/c");
- /*
- The following test uses an unbound prefix 'x' and should throw an exception.
- Addresses issue JAXEN-18.
- Turns out this isn't really tested as the test didn't fail when the exception wasn't thrown.
- <test select="/x:a/x:b/x:c" count="0" exception="true"/>
-
- */
- }
- }
-
- public void testNamespaceResolution() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/defaultNamespace.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- SimpleNamespaceContext nsContext = new SimpleNamespaceContext();
- nsContext.addNamespace("dummy", "http://dummyNamespace/");
- getContextSupport().setNamespaceContext(nsContext);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "/dummy:a/dummy:b/dummy:c");
- }
- }
-
- public void testTextNodes() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/text.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(3, context, "/foo/bar/text()");
- assertValueOfXPath("baz", context, "normalize-space(/foo/bar/text())");
- }
- }
-
- public void testNamespaceNodeCounts1() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/testNamespaces.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* the root is not an element, so no namespaces
- */
- assertCountXPath(0, context, "namespace::*");
- assertCountXPath(0, context, "/namespace::*");
- /* must count the default xml: prefix as well
- */
- assertCountXPath(3, context, "/Template/Application1/namespace::*");
- assertCountXPath(3, context, "/Template/Application2/namespace::*");
- /* every element has separate copies
- */
- assertCountXPath(25, context, "//namespace::*");
- }
- }
-
- public void testNamespaceNodeCounts() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/testNamespaces.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/Template/Application1", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* must count the default xml: prefix as well
- */
- assertCountXPath(3, context, "namespace::*");
- assertCountXPath(0, context, "/namespace::*");
- assertCountXPath(3, context, "/Template/Application1/namespace::*");
- assertCountXPath(3, context, "/Template/Application2/namespace::*");
- assertCountXPath(25, context, "//namespace::*");
- assertCountXPath(8, context, "//namespace::xplt");
- /* the name test literally matches the prefix as given in the
- document, and does not use the uri
- */
- assertCountXPath(0, context, "//namespace::somethingelse");
- }
- }
-
- public void testNamespaceNodesHaveParent() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/testNamespaces.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- /* namespace nodes have their element as their parent
- */
- assertCountXPath(1, context, "/Template/namespace::xml/parent::Template");
- }
- }
-
- /* namespace nodes can also be used as context nodes
- */
- public void testNamespaceNodeAsContext() throws JaxenException
- {
- Navigator nav = getNavigator();
- String url = "xml/testNamespaces.xml";
- log("Document [" + url + "]");
- Object document = nav.getDocument(url);
- XPath contextpath = new BaseXPath("/Template/namespace::xml", nav);
- log("Initial Context :: " + contextpath);
- List list = contextpath.selectNodes(document);
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- Object context = iter.next();
- assertCountXPath(1, context, "parent::Template");
- }
- }
-}
\ No newline at end of file
diff --git a/src/latex/intro-slides.tex b/src/latex/intro-slides.tex
deleted file mode 100644
index dd80723..0000000
--- a/src/latex/intro-slides.tex
+++ /dev/null
@@ -1,2676 +0,0 @@
-\documentclass[20pt,landscape,headrule,footrule]{foils}
-
-\usepackage{alltt}
-\usepackage{color}
-\usepackage{pstricks}
-\usepackage{graphicx}
-\usepackage{verbatim}
-
-\setlength{\fboxsep}{0pt}
-\setlength{\foilheadskip}{-30pt}
-
-\begin{document}
-
-\definecolor{highlight}{rgb}{0.6,0.0,0.0}
-\definecolor{grey}{rgb}{0.3,0.3,0.3}
-\definecolor{higreen}{rgb}{0.0,0.6,0.0}
-\definecolor{hipurple}{rgb}{0.6,0.0,0.6}
-
-\renewcommand{\emph}[1]{\textcolor{highlight}{#1}}
-\newcommand{\bemph}[1]{\textbf{\emph{#1}}}
-\newcommand{\hired}[1]{\textcolor{red}{#1}}
-\newcommand{\hipurple}[1]{\textcolor{hipurple}{#1}}
-\newcommand{\hiblue}[1]{\textcolor{blue}{#1}}
-\newcommand{\higreen}[1]{\textcolor{higreen}{#1}}
-\newcommand{\hifade}[1]{\textcolor{grey}{#1}}
-\newcommand{\slide}[1]{\foilhead{\bemph{#1}}}
-\newcommand{\subslide}[1]{\foilhead{\bemph{\small{(#1)}}}}
-\newcommand{\breakslide}[1]{\foilhead{}\vspace{1in}\begin{center}\Huge{\textcolor{highlight}{ #1}}\end{center}}
-\newcommand{\egxpath}[1]{\begin{center}\texttt{#1}\end{center}}
-\newcommand{\egcode}[1]{\begin{center}\texttt{#1}\end{center}}
-\newcommand{\at}[0]{\texttt{\@@}}
-\newcommand{\tag}[1]{\texttt{<#1>}}
-
-\newenvironment{codelisting}%
- {\begin{minipage}{\textwidth}\tiny\begin{alltt}}%
- {\end{alltt}\end{minipage}}
-
-\newcommand{\diagram}[1]{
- \begin{minipage}{\textwidth}
- \begin{center}
- \includegraphics[scale=0.5]{#1}
- \end{center}
- \end{minipage}
-}
-
-\title{\emph{Introduction to XPath\\
- in Java using Jaxen}\\
- \small{SD West 2003}}
-
-\author{Bob McWhirter\\
- \tiny{\emph{The Werken Company}}\\
- \tiny{\texttt{bob at werken.com}}}
-
-\MyLogo{\emph{http://jaxen.org/}}
-
-\leftheader{\emph{Jaxen}}
-
-\maketitle
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Quickest Intro}
-
-\begin{itemize}
- \item Open-Source.
- \item Business-friendly license (ASF/BSD).
- \item Works with most XML object-models.
-\end{itemize}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Open-Source}
-
-Being open-source, \emph{jaxen} has numerous developers working
-on various aspects of the project, from supporting
-additional object-models to seeking out optimization
-opportunities.
-
-Jaxen has existed for about two years, and has over a dozen
-committers, with 2-to-3 active at any point in time. Some
-committers are simply users of \emph{jaxen}, others have created
-custom model adapters, while still others are implementors
-of other open-source XML object-models.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Business-friendly License}
-
-Since \emph{jaxen} uses a license similar to the one used by
-the Apache Software Foundation, there are few restrictions
-on its usage. It may be used in other open-source projects
-or in closed-source commercial products. The only requirement
-is that the code maintains its copyrights.
-
-\begin{center}
-\bemph{That's it!}
-\end{center}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Works with Most XML Object-Models}
-
-\begin{itemize}
- \item \bemph{dom4j}
- James Strachan's dom4j includes direct support\\
- for XPath by using the Jaxen library.
- \item \bemph{JDOM}
- Jason Hunter's JDOM includes optional support\\
- for XPath by using the Jaxen library.
- \item \bemph{W3C DOM}
- Jaxen supports DOM documents.
- \item \bemph{EXML}
- The Mind Electric's EXML 6.0 includes direct \\
- support for XPath by using the Jaxen library.
-\end{itemize}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{History}
-
-The first XPath engine Bob created was \emph{werken.xpath}, and it
-worked only with JDOM. It was based upon an \emph{ANTLR} parser-generator grammar
-and contained numerous bugs. \emph{James Strachan} started the
-\emph{dom4j} project. Initially, we worked with porting
-werken.xpath to dom4j, but maintaining separate codebases proved
-difficult.
-
-And thus, the concept for jaxen was born\dots
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{History - The Beginnings}
-
-Due to issues with the ANTLR-based grammar, \emph{SAXPath}, a
-hand-rolled expression lexer and parser was written. SAXPath parses
-and reports XPath expressions in a manner similar to how SAX works
-for XML content.
-
-Bob McWhirter and James Strachan designed the \emph{Navigator}
-object-model adapter and implemented the core engine. James
-wrote the binding to dom4j while Bob wrote the bindings for
-JDOM and EXML. James Strachan and David Megginson created the
-W3C DOM binding.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{History - Contributors}
-
-Many others contributed patches, optimizations and improvements:
-
-\begin{tabular}{ll}
-\begin{minipage}{4in}
-\small
-\begin{itemize}
- \item \emph{Erwin Boldwidt}
- \item \emph{Eddie McGreal}
- \item \emph{Jan Dvorak}
- \item \emph{Mark A. Belonga}
- \item \emph{Michael Brennan}
- \item \emph{Stephen Colebourne}
-%% \end{itemize}
-%% \end{minipage}
-%% &
-%% \begin{minipage}{4in}
-%% \small
-%% \begin{itemize}
- \item \emph{Paul R. Brown}
- \item \emph{Alex Chaffee}
- \item \emph{Steen Lehmann}
- \item \emph{Attila Szegedi}
- \item \emph{Christian Nentwich}
- \item \emph{Pete Kazmier}
- \item \emph{Jeffrey Brekke}
-\end{itemize}
-\end{minipage}
-\end{tabular}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Jaxen and the XML-InfoSet}
-
-\emph{jaxen}'s flexibility comes from the fact that it works purely
-in terms of the \emph{XML InfoSet} instead of any concrete XML
-representation. This flexibility actually allows jaxen to work with
-non-XML models. The only requirement is that a \emph{Navigator}
-adapter be written to satisfy the subset of the InfoSet required
-by jaxen.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{XML-InfoSet}
-
-The \emph{XML-InfoSet} defines the semantics of XML instead
-of the textual serialization as the original \emph{XML 1.0} spec
-does. The InfoSet recognizes that the true structure is a tree
-with various types of nodes which the spec refers to as ``information
-items''.
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \emph{Document Information Item}
- \item \emph{Element Information Items}
- \item \emph{Attribute Information Items}
- \item \emph{Processing Instruction Information Items}
- \item \emph{Character Information Items}
- \item \emph{Comment Information Items}
- \item \emph{Namespace Information Items}
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Document Info Item}
-
-The \emph{Document} information item is typically modeled in
-XML object-model frameworks by an explicit class such as
-\emph{org.dom4j.Document} or \emph{org.jdom.Document}.
-
-The document information item most importantly contains children,
-including the root element and any comments or processing-instructions
-outside of the root element.
-
-\diagram{infoset-doc}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Element Info Items}
-
-Each tag in an XML document is an element and is represented by the
-Info-Set as an \emph{Element} information item. Once again,
-most XML object-model frameworks represent each element with an
-instance of an element class, such as \emph{org.dom4j.Element}
-or \emph{org.jdom.Element}.
-
-An element information item contains several types of children,
-including attributes, comments, namespace declarations, text context
-and other elements. It also contains information regarding its own
-name and namespace.
-
-\begin{codelisting}
-\hifade{<\hiblue{article} id="mcw03"
- \hiblue{xmlns="http://jaxen.org/example-ns/"}>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Element Info Items - Diagram}
-
-\diagram{infoset-elem}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Attribute Info Items}
-
-Each attribute that does not begin with \emph{xmlns} is represented
-by an \emph{Attribute} information item. Most object-models represent them
-with an explicit attribute class such as \emph{org.dom4j.Attribute}
-or \emph{org.jdom.Attribute}. It contains information regarding
-its own name and namespace.
-
-\begin{codelisting}
-\hifade{<article \hiblue{id="mcw03"}
- xmlns="http://jaxen.org/example-ns/">}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Processing-Instruction Info Items}
-
-Processing-instructions, while not widely used, embody their target
-and the text associated with them. Different object-models represent
-PIs differently, so no generalized statement may be made.
-
-\begin{codelisting}
-\hifade{<?\hiblue{mycompany:insert-random-bugs true}?>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Character Info Items}
-
-The InfoSet defines a \emph{Character} information item for each individual
-text character. The \emph{Navigator} of jaxen works with
-consecutive spans of uninterrupted characters.
-
-\begin{codelisting}
-\hifade{<text>
- \hiblue{jaxen is a fun and exciting way to drive your coworkers insane..}
-</text>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Comment Info Items}
-
-\emph{Comment} information items appear as children of either
-\emph{Document} or \emph{Element} items and contain the textual
-content of the comments themselves.
-
-\begin{codelisting}
-\hifade{
-\hiblue{<!--
- || Comment on the Document information item
- -->}
-<journal xmlns=\"http://jaxen.org/example-ns/\">
- \hiblue{<!--
- || Comment on the Element information item for <journal>
- -->}
-</journal>
-}
-\end{codelisting}
-
-\emph{NOTE:} Due to how the specifications are written, there is no
-guarantee that XML parsed from a file will ever contain comment
-items. Parsers are allowed to discard the comments and so they
-may not be included in your model of choice.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{InfoSet - Namespace Info Items}
-
-The \emph{Namespace} information items contained by \emph{Element}
-items represent all XML namespace bindings in effect at the scope of
-the element.
-
-\begin{codelisting}
-\hifade{<journal \hiblue{xmlns="http://jaxen.org/example-ns-1/"}>
- <art:article \hiblue{xmlns:art="http://jaxen.org/example-ns-2"}>
-}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{What is XPath?}
-
-XPath is a node-addressing expression language for the XML InfoSet.
-
-XPath expressions are used to traverse the graph provided by the
-InfoSet in order to locate any node contained therein.
-
-\begin{itemize}
- \item \emph{Full expression language.}
- \item \emph{Multiple `directions' of traversal.}
- \item \emph{Predicate evaluation for filtering.}
- \item \emph{Extremely extensible.}
-\end{itemize}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Compared to XQuery}
-
-XPath and XQuery vaguely overlap in functionality. XPath 2.0 overlaps
-even more so with XQuery.
-
-In general, XQuery is more rigorously defined, more type-safe, much
-larger, and not finished.
-
-XPath is strictly an addressing language, not a full query language,
-but most people find that it satisfies the 80/20 rule where it
-provides 80\% of the solution for 20\% of the effort.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\breakslide{Simple Expressions}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Math!}
-
-Since XPath is a full expression language, arbitrary arithmetic
-constitutes valid expressions.
-
-\egxpath{42 + 84.2}
-
-\egxpath{10 div 3}
-
-\egxpath{(1 + 3) * 42}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Location Paths}
-
-\emph{Location paths} are the core of the XPath expression
-language with regards to XML documents. A location path is comprised
-of a series of \emph{steps}.
-
-Each step is evaluated, in order, against the results of the previous
-step. The result of each step is a possibly empty set of some nodes
-from the document.
-
-\egxpath{/journal/article/author}
-
-What that means\dots
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic}
-
-An XPath is evaluated in relation to some initial context which typically is a
-\emph{Document} node from an object-model.
-
-Examples of common initial context classes:
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \emph{org.dom4j.Document}
- \item \emph{org.jdom.Document}
- \item \emph{org.w3c.dom.Document}
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic - Example Document}
-Given a document with the structure:
-
-\begin{codelisting}
-<journal>
- <article id="article.1">
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- </article>
- <article id="article.2">
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- </article>
-</journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic - Example XPath}
-Given an XPath expression:
-
-\egxpath{/journal/article/author/last}
-
-Let's walk through how it is evaluated to select all \tag{last}
-elements which are children of \tag{author} elements which in
-turn are children of \tag{article} elements that have a parent
-\tag{journal} element that is the root element of a document.
-
-\dots{}whew\dots
-
-The initial slash character (``\texttt{/}'') indicates that regardless
-of the initial context, the path is an \emph{absolute location path}
-and thus starts at the very top of the document.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic - Journal }
-
-\egxpath{/\hiblue{journal}/article/author/last}
-
-\begin{codelisting}
-\hifade{\hiblue{<journal>}
- <article id="article.1">
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- </article>
- <article id="article.2">
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- </article>
-\hiblue{</journal>}}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic - Article }
-
-\egxpath{/journal/\hiblue{article}/author/last}
-
-\begin{codelisting}
-\hifade{<journal>
- \hiblue{<article id="article.1">}
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
- \hiblue{<article id="article.2">}
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
-</journal>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic - Author }
-
-\egxpath{/journal/article/\hiblue{author}/last}
-
-\begin{codelisting}
-\hifade{<journal>
- <article id="article.1">
- <title>...</title>
- \hiblue{<author>}
- <first>Bob</first>
- <last>McWhirter</last>
- \hiblue{</author>}
- <text>
- </text>
- </article>
- <article id="article.2">
- <title>...</title>
- \hiblue{<author>}
- <first>James</first>
- <last>Strachan</last>
- \hiblue{</author>}
- <text>
- </text>
- </article>
-</journal>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic - Last }
-
-\egxpath{/journal/article/author/\hiblue{last}}
-
-\begin{codelisting}
-\hifade{<journal>
- <article id="article.1">
- <title>...</title>
- <author>
- <first>Bob</first>
- \hiblue{<last>McWhirter</last>}
- </author>
- <text>
- </text>
- </article>
- <article id="article.2">
- <title>...</title>
- <author>
- <first>James</first>
- \hiblue{<last>Strachan</last>}
- /author>
- <text>
- </text>
- </article>
-</journal>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Processing Logic - Results }
-
-The result of evaluating the XPath against the document is a
-\emph{node-set} that contains nodes directly from the original
-object-model. The results are \emph{not copies}.
-
-In this case, the results are two \emph{element} nodes, being
-instances of classes such as:
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \emph{org.dom4j.Element}
- \item \emph{org.jdom.Element}
- \item \emph{org.w3c.dom.Element}
-\end{itemize}
-\end{minipage}
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Attributes}
-
-The previous example demonstrated some of the simplest location
-path expressions possible. Not only can a location path select
-elements, they can also select attributes amongst other items.
-
-A step that begins with the ``\at'' character selects an attribute
-with the given name instead of an element.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Attributes}
-\egxpath{/journal/article/\hiblue{@id}}
-
-This path would select the \texttt{id} attribute node from
-each of the \tag{article} tags. Once again, it selects instances
-of the actual corresponding classes for attributes in the
-target object-model, such as:
-
-\begin{itemize}
- \item \bemph{org.dom4j.Attribute}
- \item \bemph{org.jdom.Attribute}
- \item \bemph{org.w3c.dom.Attr}
-\end{itemize}
-
-The path does \emph{not} select the values of the attributes.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Attributes - Example}
-
-\egxpath{/journal/article/\hiblue{@id}}
-
-\begin{codelisting}
-<journal>
- <article \hiblue{id="article.1"}>
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- </article>
- <article \hiblue{id="article.2"}>
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- </article>
-</journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates}
-
-Sometimes it is desirable to narrow the results of a particular
-step of a location path. This narrowing is the job of a
-\emph{predicate}. Multiple predicates can be chained together
-to further and further constrain the result node set.
-
-\egxpath{/journal/article\hiblue{[@id='article.2']}}
-
-After a step has been evaluated, if a predicate follows, then the
-predicate is evaluated in relation to each member of the node set.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - Base}
-
-\egxpath{\hiblue{/journal/article}[@id='article.2']}
-
-\begin{codelisting}
-<journal>
- \hiblue{<article id="article.1">}
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
- \hiblue{<article id="article.2">}
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
-</journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - 1st article}
-
-\egxpath{/journal/article[\hiblue{@id='article.2'}]}
-
-\begin{codelisting}
-<journal>
- \hiblue{<article \hired{id="article.1"}>}
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
- <article id="article.2">
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- </article>
-</journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - 2nd article}
-
-\egxpath{/journal/article[\hiblue{@id='article.2'}]}
-
-\begin{codelisting}
-<journal>
- <article id="article.1">
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- </article>
- \hiblue{<article \higreen{id="article.2"}>}
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
-</journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - Proximity}
-
-The previous predicate was based upon some \emph{content} as opposed
-to \emph{position} within the document. XPath defines the concept
-of a \emph{proximity predicate} that allows selection of specific
-elements by their location using roughly array notation.
-
-\egxpath{/journal/article[2]}
-
-Selects the second \tag{article} under the \tag{journal} tag. Since
-proximity predicates rely only on the positions of nodes, they are
-\emph{fragile} and do not survive large-scale editing of the
-document.
-
-\emph{NOTE:} Unlike Java, XPath indices begin at \texttt{1} instead
-of \texttt{0}.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - Proximity}
-
-\egxpath{/journal/article[2]}
-
-\begin{codelisting}
-<journal>
- <article id="article.1">
- <title>...</title>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- </article>
- \hiblue{<article id="article.2">}
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
-</journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - Multiple}
-
-Predicates can be chained together to recursively refine the
-selection.
-
-\egxpath{/journal/article\hiblue{[author/last='Strachan'][1]}}
-
-This path would only select the first \tag{article} that was
-written by an author with the last name \texttt{Strachan}.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - Nested}
-
-Predicates contain any arbitrary XPath expression which can
-include other location paths and predicates.
-
-\egxpath{/journal/article\hiblue{[author[1]/last='Strachan']}}
-
-This path would select all \tag{article} elements whose first
-\tag{author} has the \tag{last} name of \texttt{Strachan}.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Location Paths - Predicates - Nested - Example}
-
-\egxpath{/journal/article\hiblue{[author[1]/last='Strachan']}}
-
-\begin{codelisting}
-\tiny
-<journal>
- \hiblue{<article>}
- <title>...</title>
- <author>
- <first>James</first>
- <last>Strachan</last>
- </author>
- <author>
- <first>Bob</first>
- <last>McWhirter</last>
- </author>
- <text>
- </text>
- \hiblue{</article>}
-</journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\breakslide{Jaxen API}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Model Bindings}
-
-Several object-models, such as \emph{dom4j} and \emph{EXML} include
-bindings to the jaxen xpath engine through their own APIs, typically
-in the form of \emph{selectNodes(String xpathExpr)} or
-\emph{selectSingleNode(String xpathExpr)} methods on
-their \emph{Document} and \emph{Element} classes.
-
-Here, we'll address using jaxen directly in conjunction with an
-object-model. Please consult your chosen model's API documentation
-for any native bindings it may have.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{The XPath Classes}
-
-The main interface for working with jaxen XPaths is
-\emph{org.jaxen.XPath}.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface XPath
-\{
- Object evaluate(Object context)
- throws JaxenException;
-
- \dots
-\}
-\end{codelisting}
-
-Each supported object-model has a matching concrete implementation:
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{org.jaxen.dom4j.Dom4jXPath}
- \item \bemph{org.jaxen.jdom.JDOMXPath}
- \item \bemph{org.jaxen.dom.DOMXPath}
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Constructing}
-
-Once the appropriate class has been selected and imported into your
-code, a new instance of the \emph{XPath} class may be created
-using the constructor that takes a string XPath expression.
-
-\begin{codelisting}
-try
-\{
- \hiblue{XPath xpath = new Dom4jXPath( "/journal/article/[author/last='Strachan']" );}
-\}
-catch (JaxenException e)
-\{
- e.printStackTrace();
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation}
-
-Once an \emph{XPath} has been instantiated successfully, it may be
-evaluated against multiple different contexts. The \emph{XPath}
-implementations are thread-safe and so may be cached and shared
-by multiple threads.
-
-\begin{codelisting}
-try
-\{
- \hiblue{XPath xpath = new Dom4jXPath( "/journal/article/[author/last='Strachan']" );}
-
- Document doc = retrieveDocument();
-
- \hiblue{List results = (List) xpath.evaluate( doc );}
-\}
-catch (JaxenException e)
-\{
- e.printStackTrace();
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation - Results}
-
-As noted before, while the XPath is primarily intended for
-manipulating XML, it is a full expression language capable of
-evaluating non-XML-based expressions. The return value of
-\emph{evaluate(...)} is a \emph{java.lang.Object}.
-
-Calling code must cast the result to the appropriate class.
-When working with location paths, the result will always
-be a \emph{java.util.List} which represents the possibly
-empty node set of selected nodes.
-
-The members of the List will be instances of classes from the
-underlying object-model.
-In other cases, it may return \emph{java.lang.Number},
-\emph{java.lang.Boolean}, or \emph{java.lang.String}.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation - Helpers}
-
-The \emph{XPath} interface allows for additional helper methods
-that handle much of the desired conversion and casting.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface XPath
-\{
- String \hiblue{stringValueOf}(Object context)
- throws JaxenException;
-
- boolean \hiblue{booleanValueOf}(Object context)
- throws JaxenException;
-
- boolean \hiblue{numberValueOf}(Object context)
- throws JaxenException;
-
- List \hiblue{selectNodes}(Object context)
- throws JaxenException;
-
- Object \hiblue{selectSingleNode}(Object context)
- throws JaxenException;
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation - stringValueOf}
-
-The \emph{stringValueOf(...)} method performs a normal
-\emph{evaluate(...)} and then follows XPath's rules for
-coercion of the result to a string.
-
-In terms of XPath, this means that the first node is converted to
-its string value and all others are discarded.
-
-\egxpath{/journal/article/author/last}
-
-While this path would select both of the \tag{author} tags,
-only the first would be converted to its string value, which for
-elements, is the complete text content.
-
-This would result in the string \texttt{McWhirter}.
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation - booleanValueOf}
-
-The \emph{booleanValueOf(...)} method performs a normal
-\emph{evaluate(...)} and then follows XPath's rules for
-coercion of the result to a boolean.
-
-An empty result set is interpreted as \texttt{false} while a
-non-empty result set is interpreted as \texttt{true}.
-
-This XPath would return \texttt{true}:
-
-\egxpath{/journal/article/author[last='McWhirter']}
-
-This XPath would return \texttt{false}:
-
-\egxpath{/journal/article/author[last='MacWithier']}
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation - numberValueOf}
-
-The \emph{numberValueOf(...)} method performs a normal
-\emph{evaluate(...)} and then follows XPath's rules for
-coercion of the result to a number.
-
-In terms of XPath, this means that the first node is converted to
-its number value and all others are discarded.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation - selectNodes}
-
-The \emph{selectNodes(...)} method makes sense only for
-XPaths that perform node selection and not arithmetic. It simplifies
-calling code by performing the cast to a \emph{List} on the results
-of \emph{evaluate(...)}.
-
-This XPath would return all \tag{author} elements in a list.
-
-\egxpath{/journal/article/author}
-
-\begin{codelisting}
-try
-\{
- \hiblue{List authors = xpath.selectNodes( "/journal/article/author" );}
-\}
-catch (JaxenException e)
-\{
- e.printStackTrace();
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{The XPath Classes - Evaluation - selectSingleNode}
-
-The \emph{selectSingleNode(...)} method operates similar to
-\emph{selectNodes(...)} but only returns the first member
-of the selected list as an \emph{Object}. Depending on the
-expression, calling code must cast to a class appropriate to
-the object-model being used.
-
-This XPath would return only the first \tag{author} element.
-
-\egxpath{/journal/article/author}
-
-\begin{codelisting}
-try
-\{
- \hiblue{Element firstAuthor = (Element) xpath.selectSingleNode( "/journal/article/author" );}
-\}
-catch (JaxenException e)
-\{
- e.printStackTrace();
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\breakslide{Advanced XPath\\ \& \\ Jaxen}
-
-\begin{center}
-Namespaces - Variables - Functions
-\end{center}
-
-\slide{Namespaces}
-
-In many modern XML documents, XML Namespaces are used to help
-differentiate tags. Multiple tags may have the same name but
-exist in different namespaces. These are considered unique.
-
-\begin{codelisting}
-<\hiblue{soap:Envelope}
- \hiblue{xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"}
- soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
- <soap:Body>
- <\hiblue{mail:Envelope}
- \hiblue{xmlns:mail="http://jaxen.org/example-ns/mail/"}>
- <mail:to>bob at werken.com</mail:to>
- <\hiblue{/mail:Envelope}>
- </soap:Body>
-<\hiblue{/soap:Envelope}>
-\end{codelisting}
-
-Here, two different \tag{Envelope} tags exist.
-
-One exists in the
-\bemph{http://schemas.xmlsoap.org/soap/envelope} namespace
-while
-the other is in the \bemph{http://jaxen.org/example-ns/mail/}
-namespace.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - URIs}
-
-The namespace of an element is a \emph{URI} that does not necessarily
-have to be resolvable or point to any particular type of resource. It
-acts purely as a distinguishing identifier.
-
-It would be unwieldy to affix the namespace URI to each element, so
-XML defines a way to declare a \emph{prefix mapping} for each
-namespace.
-
-This is accomplished by adding a pseudo-attribute to an element.
-
-\begin{codelisting}
-<wj:journal \hiblue{xmlns:wj="http://werken.com/werken-journal/"}>
- <wj:article>
- ...
- </wj:article>
-</wj:journal>
-\end{codelisting}
-
-Any pseudo-attribute that begins with \emph{xmlns} is considered
-to be a namespace prefix mapping within the scope of the element
-upon which it is defined.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Prefix Mapping}
-
-The normal form of a namespace prefix mapping declaration is:
-
-\egcode{\hiblue{xmlns:\$\{PREFIX\}="\$\{URI\}"}}
-
-\egcode{\hifade{<tagname \hiblue{xmlns:myprefix="my-namespace"}>}}
-
-The declaration is available for the tag upon which it is declared
-and any nested child tag. A prefix mapping is not required to be
-used by the tag upon which it is defined, and multiple mappings may
-be declared upon a single tag.
-
-\egcode{\hifade{<\hiblue{a:}tagname \hiblue{xmlns:a="uri-a" xmlns:b="uri-b"}>}}
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Default Mapping}
-
-A \emph{default namespace mapping} can be used to define which
-namespace tags are a part of, unless otherwise specified. The format
-of the default mapping is identical to the prefix mapping, with the
-exception that a prefix is not used.
-
-\egcode{\hiblue{xmlns="\$\{URI\}"}}
-
-\egcode{\hifade{<tagname \hiblue{xmlns="my-namespace"}>}}
-
-In this case, \tag{tagname} has no prefix but a default namespace
-mapping is defined, so \tag{tagname} is a member of
-\texttt{\hiblue{my-namespace}}.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Prefixes Do Not Matter}
-
-The actual prefixes used within a document \bemph{do not matter}.
-Only the mapped namespace URI is important. These three documents
-are semantically identical:
-
-Using the default namespace mapping functionality:
-
-\begin{codelisting}
-<journal xmlns="http://werken.com/werken-journal/">
-</journal>
-\end{codelisting}
-
-Using the prefix namespace mapping functionality:
-
-\begin{codelisting}
-<yak:journal yak:xmlns="http://werken.com/werken-journal/">
-</yak:journal>
-\end{codelisting}
-
-Using the prefix namespace mapping functionality with a different
-prefix:
-
-\begin{codelisting}
-<frobnovich:journal xmlns:frobnovich="http://werken.com/werken-journal/">
-</frobnovich:journal>
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Prefixes - XPath}
-
-Since prefixes do not matter, how do you construct an XPath that
-works with namespaces?
-
-\begin{center}
-\bemph{Using prefixes!}
-\end{center}
-
-Just as each element in a document has a set of prefix-to-namespace
-mappings, an XPath expression may also contain a set of
-prefix-to-namespace mappings.
-
-The only caveat is that XPath has absolutely no concept of a default
-namespace mapping.
-
-\egxpath{\hiblue{j:}journal/\hiblue{j:}article/\hiblue{j:}author/\hiblue{j:}last}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Prefixes - XPath - Mappings}
-
-The XPath specification does not address how prefix namespace mappings
-are created. It only specifies that an XPath is evaluated within the
-scope of a \emph{namespace context} which defines the mappings.
-
-In \emph{XSLT}, the namespace context is composed of all namespace
-mappings in effect within the template \emph{(not the target document)}
-at the point the xpath is used.
-
-\begin{codelisting}
-\hifade{<xsl:template match="\hiblue{wj:author}"
- \hiblue{xmlns:wj="http://werken.com/werken-journal/"}>
- \dots
-</xsl:template>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Prefixes - XPath - Mappings}
-
-The template will match \tag{author} tags in the
-\emph{http://werken.com/werken-journal/} namespace,
-regardless of the actual prefix (or default mapping) used within the
-target document.
-
-\begin{codelisting}
-\hifade{<journal \hiblue{xmlns="http://werken.com/werken-journal/"}>
- <\hiblue{author}>
- \dots
- <\hiblue{/author}>
-</journal>}
-\end{codelisting}
-
-\begin{codelisting}
-\hifade{<yak:journal \hiblue{xmlns:yak="http://werken.com/werken-journal/"}>
- <\hiblue{yak:author}>
- \dots
- <\hiblue{/yak:author}>
-</yak:journal>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Jaxen}
-
-Since jaxen is purely an XPath engine, and not an XSLT engine,
-it follows the specification in mandating nothing about how
-namespace prefix mappings are generated, but simply a \emph{namespace
-context} is available.
-
-This is accomplished through the \bemph{org.jaxen.NamespaceContext}
-interface. It contains but a single method declaration for
-translating a prefix to a namespace URI.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface NamespaceContext
-\{
- \hiblue{String translateNamespacePrefixToUri(String prefix);}
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Jaxen - SimpleNamespaceContext}
-
-Since mapping a prefix to a namespace URI is a perfect job for a
-look-up table, jaxen provides the
-\bemph{org.jaxen.SimpleNamespaceContext}, which is an implementation
-simply backed by a hash-map.
-
-\begin{codelisting}
-package org.jaxen;
-
-public class SimpleNamespaceContext
- implements NamespaceContext
-\{
- public SimpleNamespaceContext() \{ \dots \}
-
- public SimpleNamespaceContext(Map namespaces) \{ \dots \}
-
- public void addNamespace(String prefix,
- String namespaceUri) \{ \dots \}
-
- public String translateNamespacePrefixToUri(String prefix) \{ \dots \}
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Jaxen - Using NamespaceContext}
-
-Each \emph{XPath} has a \emph{NamespaceContext} associated with
-it. The association is made using the \emph{setNamespaceContext(...)}
-method.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface XPath
-\{
- \dots
- \hiblue{void setNamespaceContext(NamespaceContext namespaceContext);}
- \dots
-\}
-\end{codelisting}
-
-Any prefix that is resolvable through the \emph{NamespaceContext} may
-be used within the XPath expression itself.
-If code using the
-\emph{XPath} does not explicitly set a \emph{NamespaceContext} then
-a default context that contains no mappings is used.
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Namespaces - Jaxen - Example}
-
-\begin{codelisting}
-try
-\{
- XPath xpath = new Dom4jXPath( \hiblue{"/j:journal/j:article/j:author"} );
-
- SimpleNamespaceContext nsContext = new SimpleNamespaceContext();
-
- \hiblue{nsContext.addNamespace( "j"
- "http://werken.com/werken-journal/" );
-
- xpath.setNamespaceContext( nsContext );}
-
- Document journalDoc = getJournalEdition( 42 );
-
- List authors = xpath.selectNodes( journalDoc );
-\}
-catch (JaxenException e)
-\{
- e.printStackTrace();
-\}
-
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Variables}
-
-The XPath specification allows for \emph{variables} in expressions
-to allow parameterization at evaluation time.
-
-Similar to the namespace-context, each XPath expression also has a
-variable-context that maps variable names to values.
-
-\egxpath{/journal/article/author[last=\hiblue{\$lastName}]}
-
-Or with namespace support:
-
-\egxpath{/journal/article/author[last=\hiblue{\$myNsPrefix:lastName}]}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Variables - Jaxen - VariableContext}
-
-Parallel to the \emph{NamespaceContext}, jaxen provides an
-interface \emph{VariableContext} and a useful simple implementation.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface VariableContext
-\{
- Object getVariableValue(String namespaceUri,
- String prefix,
- String localName)
- throws UnresolvableException;
-\}
-\end{codelisting}
-
-The three parameters to the \emph{getVariableValue(...)}
-method are:
-
-\begin{minipage}{\textwidth}
-\small
-\begin{enumerate}
- \item \bemph{namespaceUri} The namespace URI associated with the\\
- prefix as determined by the current \emph{NamespaceContext}.
- \item \bemph{prefix} The actual prefix used in the XPath expression.
- \item \bemph{localName} The portion of the variable name that is\\
- not the namespace prefix.
-\end{enumerate}
-\end{minipage}
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Variables - Jaxen - SimpleVariableContext}
-
-A simple implementation of \emph{VariableContext} is provided by
-the sensibly-named \emph{SimpleVariableContext}, which is backed
-by a hash-map.
-
-\begin{codelisting}
-package org.jaxen;
-
-public class SimpleVariableContext
- implements VariableContext
-\{
- public SimpleVariableContext() \{ \dots \}
-
- public void setVariableValue(String namespaceUri,
- String localName,
- Object value) \{ \dots \}
-
- public void setVariableValue(String localName,
- Object value) \{ \dots \}
-
- public Object getVariableValue(String namespaceUri,
- String prefix,
- String localName)
- throws UnresolvableException \{ \dots \}
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Variables - Jaxen - Using VariableContext}
-
-Each \emph{XPath} has a \emph{VariableContext} associated with
-it. The association is made using the \emph{setVariableContext(...)}
-method.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface XPath
-\{
- \dots
- \hiblue{void setVariableContext(VariableContext variableContext);}
- \dots
-\}
-\end{codelisting}
-
-If code using the \emph{XPath} does not explicitly set a
-\emph{VariableContex} then
-a default context that contains no variables is used.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Variables - Jaxen - Example}
-
-\begin{codelisting}
-try
-\{
- XPath xpath = new Dom4jXPath( "/journal/article[author/last=\hiblue{\$lastName}]" );
-
- \hiblue{SimpleVariableContext varContext = new SimpleVariableContext();
-
- varContext.setVariable( "lastName"
- "Strachan" );
-
- xpath.setVariableContext( varContext );}
-
- Document journalDoc = getJournalEdition( 42 );
-
- List strachanArticles = xpath.selectNodes( journalDoc );
-\}
-catch (JaxenException e)
-\{
- e.printStackTrace();
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Functions}
-
-The XPath language supports functions in expressions and provides for
-a core library of functions dealing with strings, numbers, booleans
-and node sets.
-
-Determine the number of articles written by Mr. Strachan:
-
-\egxpath{\hiblue{count(}/journal/article[author/last="Strachan"]\hiblue{)}}
-
-Find the Irish:
-
-\egxpath{/journal/article[\hiblue{starts-with(}author/last,"Mc"\hiblue{)}]}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Functions - Core Library}
-
-The core XPath function library is divided into four groups:
-
-\begin{enumerate}
- \item \bemph{Node set functions}\\
- Functions for working with node-sets.
- Either the implicit current node set or one passed as a parameter.
- \item \bemph{String functions}\\
- Functions for working with strings. Includes type coercions.
- \item \bemph{Boolean functions}\\
- Functions for working with booleans. Includes type coercions.
- \item \bemph{Number functions}\\
- Functions for working with numbers. Includes type coercions.
-\end{enumerate}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Functions - Core Library - Node Set Functions}
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{last()}
- Returns the index of the last item of the current result
- set.
- \egxpath{/journal/article[\hiblue{last()}]}
- \item \bemph{position()}
- Returns the index of the current item in the current result set.
- \egxpath{/journal/article[\hiblue{position()}<3]}
- \item \bemph{count(\textsl{node-set})}
- Returns the number of items in the parameter result set.
- \egxpath{\hiblue{count(/journal/article)}}
- \item \bemph{id(\textsl{object})}
- Returns the elements with the ID specified.
- \egxpath{\hiblue{id("article.1")}/author/last}
-\end{itemize}
-\end{minipage}
-
-\subslide{Functions - Core Library - Node Set Functions}
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{local-name(\textsl{node-set?})}
- Returns the non-namespace portion of the node name of either
- a node set passed as a parameter or the current node in the
- current node set.
- \egxpath{\hiblue{local-name(/wj:journal)}}
- \egxpath{/journal/*[\hiblue{local-name()}="article"]}
- \item \bemph{namespace-uri(\textsl{node-set?})}
- Returns the namespace URI of the node name of either
- a node set passed as a parameter or the current node in the
- current node set.
- \egxpath{\hiblue{namespace-uri(/wj:journal)}}
- \egxpath{/journal/*:*[\hiblue{namespace-uri()}="http://werken.com/werken-journal/"]}
- \item \bemph{name(\textsl{node-set?})}
- Returns the complete textual node name of either a node set
- passed as a parameter or the current node in the current
- node set.
- \egxpath{\hiblue{name(/journal)}}
- \egxpath{/*[\hiblue{name()}="soap:Envelope"]}
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Functions - Core Library - String Functions}
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{string(\textsl{object?})}
- Converts an object (possibly the current context node) to its
- string value.
- \egxpath{/journal/article/author[string()='Strachan']}
- \item \bemph{concat(\textsl{string, string, string*})}
- Concatenate two or more strings together.
- \egxpath{concat(author/salutation, ' ', author/last)}
- \item \bemph{starts-with(\textsl{string, string})}
- Determine if the first argument starts with the second argument
-string.
- \egxpath{/journal/article[starts-with(title, 'Advanced')]}
- \item \bemph{contains(\textsl{string, string})}
- Determine if the first argument contains the second argument
-string.
- \egxpath{/journal/article[contains(title, 'XPath')]}
-\end{itemize}
-\end{minipage}
-
-\subslide{Functions - Core Library - String Functions}
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{substring-before(\textsl{string, string})}
- Retrieve the substring of the first argument that occurs before
- the first occurrence of the second argument string.
- \egxpath{substring-before(/journal/article[1]/date, '/')}
- \item \bemph{substring-after(\textsl{string, string})}
- Retrieve the substring of the first argument that occurs after
- the first occurrence of the second argument string.
- \egxpath{substring-after(/journal/article[1]/date, '/')}
- \item \bemph{substring(\textsl{string, number, number?})}
- Retrieve the substring of the first argument starting at the index
- of the second number argument, for the length of the optional
- third argument.
- \egxpath{substring('McStrachan', 3)}
- \item \bemph{string-length(\textsl{string?})}
- Determine the length of a string, or the current context node
- coerced to a string.
- \egxpath{/journal/article[string-length(author/last) > 9]}
-\end{itemize}
-\end{minipage}
-
-\subslide{Functions - Core Library - String Functions}
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{normalize-space(\textsl{string?})}
- Retrieve the string argument or context node with all space
- normalized, trimming whitespace from the ends and compressing
- consecutive whitespace elements to a single space.
- \egxpath{normalize-space(/journal/article[1]/content)}
- \item \bemph{translate(\textsl{string, string, string})}
- Retrieve the first string argument augmented so that characters
- that occur in the second string argument are replaced by the
- character from the third argument in the same position.
- \egxpath{translate( 'bob', 'abc', 'ZXY' ) XoX}
-
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Functions - Core Library - Boolean Functions}
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{boolean(\textsl{object})}
- Convert the argument to a boolean value.
- \egxpath{boolean(/journal/article/author/last[.='Strachan']}
- \item \bemph{not(\textsl{boolean})}
- Negate a boolean value.
- \egxpath{not(/journal/article/author/last[.='Strachan']}
- \item \bemph{true()}
- Boolean true.
- \item \bemph{false()}
- Boolean false.
- \item \bemph{lang(\textsl{string})}
- Test if the lang, as set by \verb|xml:lang| attributes is
- the language specified.
- \egxpath{/journal/article[1]/content[lang('en')]}
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Functions - Core Library - Number Functions}
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{number(\textsl{object?})}
- Convert the argument or context node to a number value.
- \egxpath{/journal[number(year)=2003]}
- \item \bemph{sum(\textsl{node-set})}
- Sum the values of the node-set.
- \egxpath{sum(/journal/article/author/age)}
- \item \bemph{floor(\textsl{number})}
- Return the largest integer that is not greater than
- the number argument.
- \item \bemph{ceiling(\textsl{number})}
- Return the smallest integer that is not less than the
- number argument.
- \item \bemph{round(\textsl{number})}
- Round the number argument.
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Functions - Function Context}
-
-Like most other things in XPath, there is a \emph{function context}
-that contains the core library of functions. The set of functions available
-within an expression is extensible.
-
-XSLT has added the
-\emph{document(\textsl{url})} function. Other technologies, such as
-\emph{XPointer} and \emph{BPEL4WS} add even more functions to
-the XPath function context.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Functions - Jaxen - Function Context}
-
-An extensible function context is supported in jaxen through the
-\emph{FunctionContext} interface.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface FunctionContext
-\{
- Function getFunction(String namepsaceUri,
- String prefix,
- String localName)
- throws UnresolvableException;
-\}
-\end{codelisting}
-
-The three parameters to the \emph{getFunction(...)}
-method are:
-
-\begin{minipage}{\textwidth}
-\small
-\begin{enumerate}
- \item \bemph{namespaceUri} The namespace URI associated with the\\
- prefix as determined by the current \emph{NamespaceContext}.
- \item \bemph{prefix} The actual prefix used in the XPath expression.
- \item \bemph{localName} The portion of the variable name that is\\
- not the namespace prefix.
-\end{enumerate}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\breakslide{Quick Romp Through Advanced XPath}
-
-\slide{Advanced Axes}
-
-XPath provides many different semantic methods for navigating
-a document. Each direction is an \emph{axis} that defines
-which nodes each \emph{step} will be applied to. Some we
-have already visited.
-
-Each axis allows the effects of a particular step to be
-constrained to a certain set of nodes for matching.
-
-The general syntax for a step with an explicit axis is:
-
-\egxpath{\hiblue{\$\{AXIS\}::}\$\{NAME\}}
-
-\egxpath{/\hiblue{child::}journal/\hiblue{child::}article/\hiblue{attribute::}id}
-\egxpath{\small{/journal/article/@id}}
-
-\subslide{Advanced Axes - Descriptions}
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{child}
- Children of the context node. This is the default implicit axis.
- \item \bemph{descendant}
- Descendent of the context node.
- \item \bemph{parent}
- Parent of the context node.
- \item \bemph{ancestor}
- Ancestors of the context node.
- \item \bemph{following-sibling}
- Following siblings of the context node.
- \item \bemph{preceding-sibling}
- Preceding siblings of the context node.
- \item \bemph{following}
- Nodes following the context node.
- \item \bemph{preceding}
- Nodes preceding the context node.
- \item \bemph{attribute}
- Attributes of the context node. Steps begining with `@' operate
- along the attribute axis.
- \item \bemph{namespace}
- Namespaces of the context node.
- \item \bemph{self}
- The context node.
- \item \bemph{descendant-or-self}
- The context node or its descendants.
- \item \bemph{ancestor-or-self}
- The context node or its ancestors
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples}
-
-In the following slides, the context node will be highlighed
-in \hiblue{blue} and the axis will be demonstrated in
-\hired{red}. When the context node is a part of the axis,
-it will be highlighted in \hipurple{purple}.
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - child}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hiblue{<article id="article.2">}
- \hired{<author>}
- <last></last>
- <first></first>
- \hired{</author>}
- \hiblue{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - descendant}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hiblue{<article id="article.2">
- \hired{<author>
- <last></last>
- <first></first>
- </author>}
- </article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - parent}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- \hired{<journal>}
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hiblue{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hiblue{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hired{</journal>}
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - ancestor}
-
-\begin{codelisting}
-\hifade{\hired{<library>}
- <journal> ... </journal>
- \hired{<journal>}
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hiblue{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hiblue{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hired{</journal>}
- <journal> ... </journal>
-\hired{</library>}}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - following-sibling}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hiblue{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hiblue{</article>}
- \hired{<article id="article.3">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hired{</article>}
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - preceding-sibling}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- \hired{<article id="article.1">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hired{</article>}
- \hiblue{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hiblue{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - following}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hiblue{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hiblue{</article>}
- \hired{<article id="article.3">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hired{</article>}
- </journal>
- \hired{<journal> ... </journal>}
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - preceding}
-
-\begin{codelisting}
-\hifade{<library>
- \hired{<journal> ... </journal>}
- <journal>
- \hired{<article id="article.1">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hired{</article>}
- \hiblue{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hiblue{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - attribute}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hiblue{<article \hired{id="article.2"}>}
- <author>
- <last></last>
- <first></first>
- </author>
- \hiblue{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - self}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hipurple{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hipurple{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - descendant-or-self}
-
-\begin{codelisting}
-\hifade{<library>
- <journal> ... </journal>
- <journal>
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hipurple{<article id="article.2">}
- \hired{<author>
- <last></last>
- <first></first>
- </author>}
- \hipurple{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- </journal>
- <journal> ... </journal>
-</library>}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Advanced Axes - Examples - ancestor-or-self}
-
-\begin{codelisting}
-\hifade{\hired{<library>}
- <journal> ... </journal>
- \hired{<journal>}
- <article id="article.1">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hipurple{<article id="article.2">}
- <author>
- <last></last>
- <first></first>
- </author>
- \hipurple{</article>}
- <article id="article.3">
- <author>
- <last></last>
- <first></first>
- </author>
- </article>
- \hired{</journal>}
- <journal> ... </journal>
-\hired{</library>}}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Node Types}
-
-Most of the previous examples have dealt with elements and attributes,
-but XPath defines several types of nodes that can be matched by
-expressions.
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{comment} Matches any comment node.
- \egxpath{//\hiblue{comment()}}
- \item \bemph{text} Matches text nodes.
- \egxpath{/journal/article/title/\hiblue{text()}}
- \item \bemph{processing-instruction} Matches processing-instructions.
- \egxpath{//\hiblue{processing-instruction( 'template' )}}
- \item \bemph{node} Matches any node.
- \egxpath{/journal/article/author/\hiblue{node()}}
-\end{itemize}
-\end{minipage}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Node Types - Implicit}
-
-Implicit node types addressable by names include:
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{element} The default node-type when performing name-based matches:
- \egxpath{/journal/article/author}
- \item \bemph{attribute} The nodes matched by steps along the
-\emph{attribute} axis.
- \egxpath{/journal/article/attribute::id}
- \egxpath{/journal/article/@id}
- \item \bemph{namespace} The nodes matched by steps along the
-\emph{namespace} axis.
- \egxpath{/journal/namespace::*}
-\end{itemize}
-\end{minipage}
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Abbreviations}
-
-The XPath syntax includes a few abbreviations to make authoring
-expressions easier. Implicitly, the \emph{child} axis is used
-for any name-based matches.
-
-\egxpath{/journal/article}
-\egxpath{/\hiblue{child::}journal/\hiblue{child::}article}
-
-The `@' symbol is used as an abbreviation for the \emph{attribute}
-axis.
-
-\egxpath{/journal/article/\hiblue{@}id}
-\egxpath{/journal/article/\hiblue{attribute::}id}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Abbreviations}
-
-The `.' character is an abbreviation for \emph{self::node()}.
-
-\egxpath{/journal/article[\hiblue{.}/@id='article.1']}
-
-The `//' sequence is an abbreviation for
-\emph{descendant-or-self::node()}
-which allows for matching nodes with arbitrary nodes in-between.
-
-\egxpath{\hiblue{//}author/last[.='Strachan']}
-\egxpath{\hiblue{/descendant-or-self::node()}/author/last[.='Strachan']}
-
-The `*' character matches any element or attribute name.
-
-\egxpath{/journal/\hiblue{*}[author/last='Strachan']}
-\egxpath{/journal/\hiblue{@*}}
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\breakslide{Navigator}
-
-\begin{center}
-Adapting models for XPath
-\end{center}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\slide{Navigation}
-
-Since XPath expression steps are evaluated in relation to a context
-node across a particular axis of `travel', the main aspects of
-navigating an object-model involves iterating over members of an axis.
-
-The \emph{Navigator} interface has a method for each axis in
-the form of:
-
-\begin{center}
-\begin{minipage}{0.8\textwidth}
-\small
-\begin{alltt}
-Iterator get\hiblue{\$\{AXIS\}}AxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-\end{alltt}
-\end{minipage}
-\end{center}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Navigation - Axis Iterators}
-
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface Navigator
-\{
- Iterator getChildAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getDescendantAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getParentAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getAncestorAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getFollowingSiblingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getPrecedingSiblingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-\end{codelisting}
-
-continues\dots
-
-\subslide{Navigator - Axis Iterator - continued}
-
-\dots\ continued
-
-\begin{codelisting}
- Iterator getFollowingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getPrecedingAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getAttributeAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getNamespaceAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getSelfAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getDescendantOrSelfAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-
- Iterator getAncestorOrSelfAxisIterator(Object contextNode)
- throws UnsupportedAxisException;
-\}
-\end{codelisting}
-
-\subslide{Navigation - DefaultNavigator}
-
-Since many of the axes are composite axes that can be synthesized
-from a sub-set, jaxen provides the \emph{DefaultNavigator} which
-is a useful base class for model-specific navigators.
-
-If a model-specific navigator implements
-\emph{getParentAxisIterator(...)}
-then the \emph{DefaultNavigator} can synthesize a useful
-default \emph{getAncestorAxisIterator(...)}.
-
-\subslide{Navigation - DefaultNavigator - Axis Synthesis}
-
-The following axes can be synthesized:
-
-\begin{minipage}{\textwidth}
-\small
-\begin{itemize}
- \item \bemph{descendant} Built from \emph{child} recursively.
- \item \bemph{ancestor} Built from \emph{parent} recursively.
- \item \bemph{self} Completely synthetic.
- \item \bemph{descendant-or-self} Built from \emph{child} recursively.
- \item \bemph{ancestor-or-self} Built from \emph{parent} recursively.
- \item \bemph{following} Built from \emph{parent} and \emph{child}.
- \item \bemph{preceding} Built from \emph{parent} and \emph{child}.
- \item \bemph{following-sibling} Built from \emph{parent} and \emph{child}.
- \item \bemph{preceding-sibling} Built from \emph{parent} and \emph{child}.
-\end{itemize}
-
-Much of the axes are defined by purely providing implementation for
-accessing parent and child relationships.
-\end{minipage}
-
-
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\subslide{Navigation - Node types}
-
-Each method is responsible for inspecting the \emph{contextNode}
-parameter object and returning an \emph{Iterator} over the axis
-in relation to the context-node object. If the object-model as a
-whole does not support a particular axis of travel,
-\emph{UnsupportedAxisException} may be thrown.
-
-The core jaxen engine will ensure that the methods are not called with
-a non-sensical context. For example,
-\emph{getAttributeAxisIterator(...)} will never be called with a
-\emph{comment} node as the parameter.
-
-The \emph{Navigator} provides methods to allow the core engine
-to determine the node's type.
-
-\subslide{Navigation - Node types - Tests}
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface Navigator
-\{
- boolean isDocument(Object object);
-
- boolean isElement(Object object);
-
- boolean isAttribute(Object object);
-
- boolean isNamespace(Object object);
-
- boolean isComment(Object object);
-
- boolean isText(Object object);
-
- boolean isProcessingInstruction(Object object);
-\}
-\end{codelisting}
-
-\subslide{Navigation - Inspection}
-
-The core jaxen engine requires a way to inspect nodes for various
-properties, such as names, namespace URIs, and string values.
-
-\begin{codelisting}
-package org.jaxen;
-
-public interface Navigator
-\{
- String getElementName(Object element);
- String getElementNamespaceUri(Object element);
- String getAttributeName(Object attr);
- String getAttributeNameNamespaceUri(Object attr);
- String getProcessingInstructionTarget(Object pi);
- String getProcessingInstructionData(Object pi);
-
- String getCommentStringValue(Object comment);
- String getElementStringValue(Object element);
- String getAttributeStringValue(Object attr);
- String getNamespaceStringValue(Object ns);
- String getTextStringValue(Object text);
- String getTextStringValue(Object text);
-\}
-\end{codelisting}
-
-\subslide{Navigation - Example Navigator}
-Here are some examples of implementations from the
-\emph{DocumentNavigator} for dom4j.
-
-\subslide{Navigation - Example Navigator - Axis Iterators}
-
-\begin{codelisting}
-public Iterator getChildAxisIterator(Object contextNode)
-\{
- if ( contextNode instanceof Branch )
- \{
- Branch node = (Branch) contextNode;
-
- return node.nodeIterator();
- \}
-
- return null;
-\}
-
-public Iterator getAttributeAxisIterator(Object contextNode)
-\{
- if ( ! ( contextNode instanceof Element ) )
- {
- return null;
- }
-
- Element elem = (Element) contextNode;
-
- return elem.attributeIterator();
-\}
-\end{codelisting}
-
-\subslide{Navigation - Example Navigator - Node Types}
-
-\begin{codelisting}
-public boolean isText(Object obj)
-\{
- return ( obj instanceof Text
- ||
- obj instanceof CDATA );
-\}
-
-public boolean isAttribute(Object obj)
-\{
- return obj instanceof Attribute;
-\}
-
-public boolean isProcessingInstruction(Object obj)
-\{
- return obj instanceof ProcessingInstruction;
-\}
-\end{codelisting}
-
-\subslide{Navigation - Example Navigator - Inspection}
-
-\begin{codelisting}
-public String getAttributeName(Object obj)
-\{
- Attribute attr = (Attribute) obj;
-
- return attr.getName();
-\}
-
-public String getAttributeNamespaceUri(Object obj)
-\{
- Attribute attr = (Attribute) obj;
-
- String uri = attr.getNamespaceURI();
- if ( uri != null && uri.length() == 0 )
- return null;
- else
- return uri;
-\}
-
-public String getNamespaceStringValue(Object obj)
-\{
- Namespace ns = (Namespace) obj;
-
- return ns.getURI();
-\}
-\end{codelisting}
-
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-%% ----------------------------------------------------------------------
-
-\breakslide{Thanks}
-
-I'd particularly wish to thank Pete Kazmier and Jeffrey Brekke
-for their diligent review of this presentation. Any errors that
-remain herein are purely my own responsibility.
-
-\breakslide{Colophon}
-
-\FoilTeX\ \& \LaTeXe\ were used in the production of these
-slides.
-
-Images were produced via \texttt{dia}, exported to \texttt{EPS}
-and converted to \texttt{PDF} for inclusion using
-the \texttt{epstopdf} utility.
-
-This slide deck is 100\% Microsoft-free and produced using
-only open-source software.
-
-\end{document}
-
-
-
diff --git a/xml/axis.xml b/xml/axis.xml
deleted file mode 100644
index bc996c5..0000000
--- a/xml/axis.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<root>
-
- <a>
- <a.1/>
- <a.2/>
- <a.3/>
- <a.4/>
- <a.5/>
- </a>
-
- <b>
- <b.1/>
- <b.2/>
- <b.3/>
- <b.4/>
- <b.5/>
- <b.6/>
- <b.7/>
- <b.8/>
- <b.9/>
- </b>
-
-</root>
diff --git a/xml/basic.xml b/xml/basic.xml
deleted file mode 100644
index 88385fb..0000000
--- a/xml/basic.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<foo>
- <bar>
- <baz/>
- <cheese/>
- <baz/>
- <cheese/>
- <baz/>
- </bar>
-</foo>
diff --git a/xml/basicupdate.xml b/xml/basicupdate.xml
deleted file mode 100644
index 57d458c..0000000
--- a/xml/basicupdate.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<xu:modifications xmlns:xu="http://www.xmldb.org/xupdate">
-
- <xu:append select="/foo/bar/cheese[1]">
- Goudse kaas
- <edam type="jong belegen">Rond</edam>
- </xu:append>
-
- <xu:remove select="/foo/bar/baz[2]"/>
-
- <xu:if test="/foo">
- <xu:insert-before select="/foo/bar/baz[2]">
- <cheese>More cheese!</cheese>
- </xu:insert-before>
- </xu:if>
-
- <xu:insert-before select="/foo/bar/baz[2]">
- <cheese>Even more cheese!</cheese>
- </xu:insert-before>
-
- <xu:if test="/bar">
- <xu:insert-before select="/foo/bar/baz[2]">
- <sausages>No sausages today</sausages>
- </xu:insert-before>
- </xu:if>
-
- <xu:variable
- xmlns:private="http://www.jaxen.org/private"
- name="private:twice">
- <cracker/>
- <!-- champagne -->
- <?oisters with a bit of lemon?>
- </xu:variable>
-
- <xu:variable name="twice" select="'Twice'"/>
-
- <xu:insert-after
- select="/foo/bar"
- xmlns:private="http://www.jaxen.org/private"
- >
- <xu:value-of select="$private:twice"/>
- <xu:value-of select="$private:twice"/>
- <xu:value-of select="$twice"/>
- </xu:insert-after>
-
-</xu:modifications>
diff --git a/xml/cdata.xml b/xml/cdata.xml
deleted file mode 100644
index c0383ff..0000000
--- a/xml/cdata.xml
+++ /dev/null
@@ -1 +0,0 @@
-<p>a<![CDATA[whatever]]>b</p>
\ No newline at end of file
diff --git a/xml/contents.xml b/xml/contents.xml
deleted file mode 100644
index 35e3ac7..0000000
--- a/xml/contents.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="XSL\JavaXML.html.xsl" type="text/xsl"?>
-<?xml-stylesheet href="XSL\JavaXML.wml.xsl" type="text/xsl"
- media="wap"?>
-<?cocoon-process type="xslt"?>
-
-<!-- Java and XML -->
-<JavaXML:Book xmlns:JavaXML="http://www.oreilly.com/catalog/javaxml/"
- xmlns:ora="http://www.oreilly.com"
- xmlns:unused="http://www.unused.com"
- ora:category="Java"
->
- <!-- comment one -->
- <!-- comment two -->
-
- <JavaXML:Title>Java and XML</JavaXML:Title>
- <JavaXML:Contents xmlns:topic="http://www.oreilly.com/topics">
- <JavaXML:Chapter topic:focus="XML">
- <JavaXML:Heading>Introduction</JavaXML:Heading>
- <JavaXML:Topic subSections="7">
- What Is It?
- </JavaXML:Topic>
- <JavaXML:Topic subSections="3">
- How Do I Use It?
- </JavaXML:Topic>
- <JavaXML:Topic subSections="4">
- Why Should I Use It?
- </JavaXML:Topic>
- <JavaXML:Topic subSections="0">
- What's Next?
- </JavaXML:Topic>
- </JavaXML:Chapter>
-
- <JavaXML:Chapter topic:focus="XML">
- <JavaXML:Heading>Creating XML</JavaXML:Heading>
- <JavaXML:Topic subSections="0">An XML Document</JavaXML:Topic>
- <JavaXML:Topic subSections="2">The Header</JavaXML:Topic>
- <JavaXML:Topic subSections="6">The Content</JavaXML:Topic>
- <JavaXML:Topic subSections="1">What's Next?</JavaXML:Topic>
- </JavaXML:Chapter>
-
- <JavaXML:Chapter topic:focus="Java">
- <JavaXML:Heading>Parsing XML</JavaXML:Heading>
- <JavaXML:Topic subSections="3">Getting Prepared</JavaXML:Topic>
- <JavaXML:Topic subSections="3">SAX Readers</JavaXML:Topic>
- <JavaXML:Topic subSections="9">Content Handlers</JavaXML:Topic>
- <JavaXML:Topic subSections="4">Error Handlers</JavaXML:Topic>
- <JavaXML:Topic subSections="0">
- A Better Way to Load a Parser
- </JavaXML:Topic>
- <JavaXML:Topic subSections="4">"Gotcha!"</JavaXML:Topic>
- <JavaXML:Topic subSections="0">What's Next?</JavaXML:Topic>
- </JavaXML:Chapter>
-
- <JavaXML:SectionBreak/>
-
- <JavaXML:Chapter topic:focus="Java">
- <JavaXML:Heading>Web Publishing Frameworks</JavaXML:Heading>
- <JavaXML:Topic subSections="4">Selecting a Framework</JavaXML:Topic>
- <JavaXML:Topic subSections="4">Installation</JavaXML:Topic>
- <JavaXML:Topic subSections="3">
- Using a Publishing Framework
- </JavaXML:Topic>
- <JavaXML:Topic subSections="2">XSP</JavaXML:Topic>
- <JavaXML:Topic subSections="3">Cocoon 2.0 and Beyond</JavaXML:Topic>
- <JavaXML:Topic subSections="0">What's Next?</JavaXML:Topic>
- </JavaXML:Chapter>
- </JavaXML:Contents>
-</JavaXML:Book>
diff --git a/xml/defaultNamespace.xml b/xml/defaultNamespace.xml
deleted file mode 100644
index 1e32981..0000000
--- a/xml/defaultNamespace.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<a xmlns="http://dummyNamespace/">
- <b>
- <c>Hello</c>
- </b>
-</a>
diff --git a/xml/evaluate.xml b/xml/evaluate.xml
deleted file mode 100644
index 90d06bd..0000000
--- a/xml/evaluate.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<evaluate>
- <data>
- <jumps>
- <subject>
- <the/>
- <fox color="brown"/>
- <speed category="quick"/>
- </subject>
- <over/>
- <object>
- <the/>
- <dog color="unspecified"/>
- <speed category="lazy"/>
- </object>
- </jumps>
- </data>
-
- <!-- there is one element with attribute color="brown" should this
- meta-test should succeed -->
-
- <metatest select="//@color">brown</metatest>
-
- <!-- there is no element with attribute category="moderate" -->
- <metatest select="//speed/@category">moderate</metatest>
-
-</evaluate>
diff --git a/xml/fibo.xml b/xml/fibo.xml
deleted file mode 100644
index 9b5d0ec..0000000
--- a/xml/fibo.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Fibonacci_Numbers>
- <fibonacci index="0">0</fibonacci>
- <fibonacci index="1">1</fibonacci>
- <fibonacci index="2">1</fibonacci>
- <fibonacci index="3">2</fibonacci>
- <fibonacci index="4">3</fibonacci>
- <fibonacci index="5">5</fibonacci>
- <fibonacci index="6">8</fibonacci>
- <fibonacci index="7">13</fibonacci>
- <fibonacci index="8">21</fibonacci>
- <fibonacci index="9">34</fibonacci>
- <fibonacci index="10">55</fibonacci>
- <fibonacci index="11">89</fibonacci>
- <fibonacci index="12">144</fibonacci>
- <fibonacci index="13">233</fibonacci>
- <fibonacci index="14">377</fibonacci>
- <fibonacci index="15">610</fibonacci>
- <fibonacci index="16">987</fibonacci>
- <fibonacci index="17">1597</fibonacci>
- <fibonacci index="18">2584</fibonacci>
- <fibonacci index="19">4181</fibonacci>
- <fibonacci index="20">6765</fibonacci>
- <fibonacci index="21">10946</fibonacci>
- <fibonacci index="22">17711</fibonacci>
- <fibonacci index="23">28657</fibonacci>
- <fibonacci index="24">46368</fibonacci>
- <fibonacci index="25">75025</fibonacci>
-</Fibonacci_Numbers>
diff --git a/xml/id.xml b/xml/id.xml
deleted file mode 100644
index 749ab20..0000000
--- a/xml/id.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE foo [
-
-<!ELEMENT foo (bar)>
-<!ATTLIST foo id CDATA #IMPLIED>
-<!ELEMENT bar (#PCDATA|cheese)*>
-<!ATTLIST bar id ID #REQUIRED>
-<!ELEMENT cheese (#PCDATA)>
-<!ATTLIST cheese kind ID #IMPLIED>
-]>
-
-<foo id="foobar">
- <bar id="fb1">
- baz
- <cheese kind="edam">gouda</cheese>
- baz
- <cheese kind="gouda">cheddar</cheese>
- baz
- </bar>
-</foo>
diff --git a/xml/jaxen24.xml b/xml/jaxen24.xml
deleted file mode 100644
index 9b81996..0000000
--- a/xml/jaxen24.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<body><p><span></span></p><div></div></body>
diff --git a/xml/jaxen3.xml b/xml/jaxen3.xml
deleted file mode 100644
index a87723a..0000000
--- a/xml/jaxen3.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration>
- <hostname>
- <val>2</val>
- <attrlist>
- <hostname>CE-A</hostname>
- </attrlist>
- </hostname>
- <hostname>
- <val>1</val>
- <attrlist>
- <hostname>CE-B</hostname>
- </attrlist>
- </hostname>
-</Configuration>
diff --git a/xml/lang.xml b/xml/lang.xml
deleted file mode 100644
index 49b45db..0000000
--- a/xml/lang.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<e1 xml:lang="hr">
- <e2 xml:lang="en-US">
- <e3/>
- </e2>
- <e2 xml:lang="hu">
- <e3/>
- <e3/>
- <e3 xml:lang="es"/>
- </e2>
-</e1>
\ No newline at end of file
diff --git a/xml/message.xml b/xml/message.xml
deleted file mode 100644
index 3b81df2..0000000
--- a/xml/message.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<message>
- <header>
- <service>lookupformservice</service>
- <connectionid>9</connectionid>
- <appid>stammdaten</appid>
- <action>new</action>
- </header>
- <body>
- <data>
- <items>
- <item>
- <name>iteminfo</name>
- <value>ELE</value>
- </item>
- <item>
- <name>parentinfo</name>
- <value>Pruefgebiete</value>
- </item>
- <item>
- <name>id</name>
- <value>1</value>
- </item>
- </items>
- </data>
- </body>
-</message>
diff --git a/xml/moreover.xml b/xml/moreover.xml
deleted file mode 100644
index 38d4c4f..0000000
--- a/xml/moreover.xml
+++ /dev/null
@@ -1,244 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
- <moreovernews>
- <article code="13563275">
- <url>http://c.moreover.com/click/here.pl?x13563273</url>
- <headline_text>e-Commerce Operators Present Version 1.0 of the XML Standard</headline_text>
- <source>StockAccess</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.stockaccess.com/index.html</document_url>
- <harvest_time>Dec 24 2000 6:28AM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13560996">
- <url>http://c.moreover.com/click/here.pl?x13560995</url>
- <headline_text>W3C Publishes XML Protocol Requirements Document</headline_text>
- <source>Xml</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.xml.com/</document_url>
- <harvest_time>Dec 24 2000 12:22AM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13553522">
- <url>http://c.moreover.com/click/here.pl?x13553521</url>
- <headline_text>Prowler: Open Source XML-Based Content Management Framework</headline_text>
- <source>Xml</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.xml.com/</document_url>
- <harvest_time>Dec 23 2000 2:05PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13549014">
- <url>http://c.moreover.com/click/here.pl?x13549013</url>
- <headline_text>The Middleware Company Debuts Public Training Courses in Ejb, J2ee And Xml</headline_text>
- <source>Java Industry Connection</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://industry.java.sun.com/javanews/more/hotnews/</document_url>
- <harvest_time>Dec 23 2000 12:15PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13544468">
- <url>http://c.moreover.com/click/here.pl?x13544467</url>
- <headline_text>Revised Working Draft for the W3C XML Information Set</headline_text>
- <source>Xml</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.xml.com/</document_url>
- <harvest_time>Dec 23 2000 5:50AM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13534837">
- <url>http://c.moreover.com/click/here.pl?x13534836</url>
- <headline_text>XML: Its The Great Peacemaker</headline_text>
- <source>ZDNet</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.zdnet.com/intweek/</document_url>
- <harvest_time>Dec 22 2000 9:05PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13533486">
- <url>http://c.moreover.com/click/here.pl?x13533485</url>
- <headline_text>Project eL - The XML Leningrad Codex Markup Project</headline_text>
- <source>Xml</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.xml.com/</document_url>
- <harvest_time>Dec 22 2000 8:34PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13533489">
- <url>http://c.moreover.com/click/here.pl?x13533488</url>
- <headline_text>XML Linking Language (XLink) and XML Base Specifications Issued as W3C Proposed Recommenda</headline_text>
- <source>Xml</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.xml.com/</document_url>
- <harvest_time>Dec 22 2000 8:34PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13533493">
- <url>http://c.moreover.com/click/here.pl?x13533492</url>
- <headline_text>W3C Releases XHTML Basic Specification as a W3C Recommendation</headline_text>
- <source>Xml</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.xml.com/</document_url>
- <harvest_time>Dec 22 2000 8:34PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13521835">
- <url>http://c.moreover.com/click/here.pl?x13521827</url>
- <headline_text>Java, Xml And Oracle9i(TM) Make A Great Team</headline_text>
- <source>Java Industry Connection</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://industry.java.sun.com/javanews/more/hotnews/</document_url>
- <harvest_time>Dec 22 2000 3:21PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13512020">
- <url>http://c.moreover.com/click/here.pl?x13511233</url>
- <headline_text>Competing initiatives to vie for security standard</headline_text>
- <source>ZDNet</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.zdnet.com/eweek/filters/news/</document_url>
- <harvest_time>Dec 22 2000 10:54AM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13492401">
- <url>http://c.moreover.com/click/here.pl?x13492397</url>
- <headline_text>Oracle Provides Developers with Great Xml Reading This Holiday Season</headline_text>
- <source>Java Industry Connection</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://industry.java.sun.com/javanews/more/hotnews/</document_url>
- <harvest_time>Dec 21 2000 8:08PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13491296">
- <url>http://c.moreover.com/click/here.pl?x13491292</url>
- <headline_text>XML as the great peacemaker - Extensible Markup Language Accomplished The Seemingly Impossible This Year: It B</headline_text>
- <source>Hospitality Net</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.hospitalitynet.org/news/list.htm?c=2000</document_url>
- <harvest_time>Dec 21 2000 7:45PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13484761">
- <url>http://c.moreover.com/click/here.pl?x13484758</url>
- <headline_text>XML as the great peacemaker</headline_text>
- <source>CNET</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://news.cnet.com/news/0-1003.html?tag=st.ne.1002.dir.1003</document_url>
- <harvest_time>Dec 21 2000 4:41PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13480897">
- <url>http://c.moreover.com/click/here.pl?x13480896</url>
- <headline_text>COOP Switzerland Selects Mercator as Integration Platform</headline_text>
- <source>Stockhouse Canada</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.stockhouse.ca/news/</document_url>
- <harvest_time>Dec 21 2000 1:55PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13471024">
- <url>http://c.moreover.com/click/here.pl?x13471023</url>
- <headline_text>Competing XML Specs Move Toward a Union</headline_text>
- <source>Internet World</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://www.internetworld.com/</document_url>
- <harvest_time>Dec 21 2000 11:14AM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13452281">
- <url>http://c.moreover.com/click/here.pl?x13452280</url>
- <headline_text>Next-generation XHTML stripped down for handhelds</headline_text>
- <source>CNET</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://news.cnet.com/news/0-1005.html?tag=st.ne.1002.dir.1005</document_url>
- <harvest_time>Dec 20 2000 9:11PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13451791">
- <url>http://c.moreover.com/click/here.pl?x13451789</url>
- <headline_text>Xml Powers Oracle9i(TM) Dynamic Services</headline_text>
- <source>Java Industry Connection</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://industry.java.sun.com/javanews/more/hotnews/</document_url>
- <harvest_time>Dec 20 2000 9:05PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13442098">
- <url>http://c.moreover.com/click/here.pl?x13442097</url>
- <headline_text>XML DOM reference guide</headline_text>
- <source>ASPWire</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://aspwire.com/</document_url>
- <harvest_time>Dec 20 2000 6:26PM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- <article code="13424118">
- <url>http://c.moreover.com/click/here.pl?x13424117</url>
- <headline_text>Repeat/Xqsite And Bowstreet Team to Deliver Integrated Xml Solutions</headline_text>
- <source>Java Industry Connection</source>
- <media_type>text</media_type>
- <cluster>moreover...</cluster>
- <tagline> </tagline>
- <document_url>http://industry.java.sun.com/javanews/more/hotnews/</document_url>
- <harvest_time>Dec 20 2000 9:04AM</harvest_time>
- <access_registration> </access_registration>
- <access_status> </access_status>
- </article>
- </moreovernews>
-
diff --git a/xml/much_ado.xml b/xml/much_ado.xml
deleted file mode 100644
index f008fad..0000000
--- a/xml/much_ado.xml
+++ /dev/null
@@ -1,6850 +0,0 @@
-<?xml version="1.0"?>
-<PLAY>
-<TITLE>Much Ado about Nothing</TITLE>
-
-<FM>
-<P>Text placed in the public domain by Moby Lexical Tools, 1992.</P>
-<P>SGML markup by Jon Bosak, 1992-1994.</P>
-<P>XML version by Jon Bosak, 1996-1998.</P>
-<P>This work may be freely copied and distributed worldwide.</P>
-</FM>
-
-
-<PERSONAE>
-<TITLE>Dramatis Personae</TITLE>
-
-<PERSONA>DON PEDRO, prince of Arragon.</PERSONA>
-<PERSONA>DON JOHN, his bastard brother.</PERSONA>
-<PERSONA>CLAUDIO, a young lord of Florence.</PERSONA>
-<PERSONA>BENEDICK, a young lord of Padua.</PERSONA>
-<PERSONA>LEONATO, governor of Messina.</PERSONA>
-<PERSONA>ANTONIO, his brother.</PERSONA>
-<PERSONA>BALTHASAR, attendant on Don Pedro.</PERSONA>
-
-<PGROUP>
-<PERSONA>CONRADE</PERSONA>
-<PERSONA>BORACHIO</PERSONA>
-<GRPDESCR>followers of Don John.</GRPDESCR>
-</PGROUP>
-
-<PERSONA>FRIAR FRANCIS</PERSONA>
-<PERSONA>DOGBERRY, a constable.</PERSONA>
-<PERSONA>VERGES, a headborough.</PERSONA>
-<PERSONA>A Sexton.</PERSONA>
-<PERSONA>A Boy.</PERSONA>
-<PERSONA>HERO, daughter to Leonato.</PERSONA>
-<PERSONA>BEATRICE, niece to Leonato.</PERSONA>
-
-<PGROUP>
-<PERSONA>MARGARET</PERSONA>
-<PERSONA>URSULA</PERSONA>
-<GRPDESCR>gentlewomen attending on Hero.</GRPDESCR>
-</PGROUP>
-
-<PERSONA>Messengers, Watch, Attendants, &c. </PERSONA>
-</PERSONAE>
-
-<SCNDESCR>SCENE Messina.</SCNDESCR>
-
-<PLAYSUBT>MUCH ADO ABOUT NOTHING</PLAYSUBT>
-
-<ACT><TITLE>ACT I</TITLE>
-
-<SCENE><TITLE>SCENE I. Before LEONATO'S house.</TITLE>
-<STAGEDIR>Enter LEONATO, HERO, and BEATRICE, with a
-Messenger</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I learn in this letter that Don Peter of Arragon</LINE>
-<LINE>comes this night to Messina.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>He is very near by this: he was not three leagues off</LINE>
-<LINE>when I left him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>How many gentlemen have you lost in this action?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>But few of any sort, and none of name.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>A victory is twice itself when the achiever brings</LINE>
-<LINE>home full numbers. I find here that Don Peter hath</LINE>
-<LINE>bestowed much honour on a young Florentine called Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>Much deserved on his part and equally remembered by</LINE>
-<LINE>Don Pedro: he hath borne himself beyond the</LINE>
-<LINE>promise of his age, doing, in the figure of a lamb,</LINE>
-<LINE>the feats of a lion: he hath indeed better</LINE>
-<LINE>bettered expectation than you must expect of me to</LINE>
-<LINE>tell you how.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>He hath an uncle here in Messina will be very much</LINE>
-<LINE>glad of it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>I have already delivered him letters, and there</LINE>
-<LINE>appears much joy in him; even so much that joy could</LINE>
-<LINE>not show itself modest enough without a badge of</LINE>
-<LINE>bitterness.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Did he break out into tears?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>In great measure.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>A kind overflow of kindness: there are no faces</LINE>
-<LINE>truer than those that are so washed. How much</LINE>
-<LINE>better is it to weep at joy than to joy at weeping!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I pray you, is Signior Mountanto returned from the</LINE>
-<LINE>wars or no?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>I know none of that name, lady: there was none such</LINE>
-<LINE>in the army of any sort.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>What is he that you ask for, niece?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>My cousin means Signior Benedick of Padua.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>O, he's returned; and as pleasant as ever he was.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>He set up his bills here in Messina and challenged</LINE>
-<LINE>Cupid at the flight; and my uncle's fool, reading</LINE>
-<LINE>the challenge, subscribed for Cupid, and challenged</LINE>
-<LINE>him at the bird-bolt. I pray you, how many hath he</LINE>
-<LINE>killed and eaten in these wars? But how many hath</LINE>
-<LINE>he killed? for indeed I promised to eat all of his killing.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Faith, niece, you tax Signior Benedick too much;</LINE>
-<LINE>but he'll be meet with you, I doubt it not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>He hath done good service, lady, in these wars.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>You had musty victual, and he hath holp to eat it:</LINE>
-<LINE>he is a very valiant trencherman; he hath an</LINE>
-<LINE>excellent stomach.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>And a good soldier too, lady.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>And a good soldier to a lady: but what is he to a lord?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>A lord to a lord, a man to a man; stuffed with all</LINE>
-<LINE>honourable virtues.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>It is so, indeed; he is no less than a stuffed man:</LINE>
-<LINE>but for the stuffing,--well, we are all mortal.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>You must not, sir, mistake my niece. There is a</LINE>
-<LINE>kind of merry war betwixt Signior Benedick and her:</LINE>
-<LINE>they never meet but there's a skirmish of wit</LINE>
-<LINE>between them.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Alas! he gets nothing by that. In our last</LINE>
-<LINE>conflict four of his five wits went halting off, and</LINE>
-<LINE>now is the whole man governed with one: so that if</LINE>
-<LINE>he have wit enough to keep himself warm, let him</LINE>
-<LINE>bear it for a difference between himself and his</LINE>
-<LINE>horse; for it is all the wealth that he hath left,</LINE>
-<LINE>to be known a reasonable creature. Who is his</LINE>
-<LINE>companion now? He hath every month a new sworn brother.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>Is't possible?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Very easily possible: he wears his faith but as</LINE>
-<LINE>the fashion of his hat; it ever changes with the</LINE>
-<LINE>next block.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>I see, lady, the gentleman is not in your books.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>No; an he were, I would burn my study. But, I pray</LINE>
-<LINE>you, who is his companion? Is there no young</LINE>
-<LINE>squarer now that will make a voyage with him to the devil?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>He is most in the company of the right noble Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>O Lord, he will hang upon him like a disease: he</LINE>
-<LINE>is sooner caught than the pestilence, and the taker</LINE>
-<LINE>runs presently mad. God help the noble Claudio! if</LINE>
-<LINE>he have caught the Benedick, it will cost him a</LINE>
-<LINE>thousand pound ere a' be cured.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>I will hold friends with you, lady.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Do, good friend.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>You will never run mad, niece.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>No, not till a hot January.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>Don Pedro is approached.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter DON PEDRO, DON JOHN, CLAUDIO, BENEDICK,
-and BALTHASAR</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Good Signior Leonato, you are come to meet your</LINE>
-<LINE>trouble: the fashion of the world is to avoid</LINE>
-<LINE>cost, and you encounter it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Never came trouble to my house in the likeness of</LINE>
-<LINE>your grace: for trouble being gone, comfort should</LINE>
-<LINE>remain; but when you depart from me, sorrow abides</LINE>
-<LINE>and happiness takes his leave.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>You embrace your charge too willingly. I think this</LINE>
-<LINE>is your daughter.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Her mother hath many times told me so.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Were you in doubt, sir, that you asked her?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Signior Benedick, no; for then were you a child.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>You have it full, Benedick: we may guess by this</LINE>
-<LINE>what you are, being a man. Truly, the lady fathers</LINE>
-<LINE>herself. Be happy, lady; for you are like an</LINE>
-<LINE>honourable father.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>If Signior Leonato be her father, she would not</LINE>
-<LINE>have his head on her shoulders for all Messina, as</LINE>
-<LINE>like him as she is.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I wonder that you will still be talking, Signior</LINE>
-<LINE>Benedick: nobody marks you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>What, my dear Lady Disdain! are you yet living?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Is it possible disdain should die while she hath</LINE>
-<LINE>such meet food to feed it as Signior Benedick?</LINE>
-<LINE>Courtesy itself must convert to disdain, if you come</LINE>
-<LINE>in her presence.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Then is courtesy a turncoat. But it is certain I</LINE>
-<LINE>am loved of all ladies, only you excepted: and I</LINE>
-<LINE>would I could find in my heart that I had not a hard</LINE>
-<LINE>heart; for, truly, I love none.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>A dear happiness to women: they would else have</LINE>
-<LINE>been troubled with a pernicious suitor. I thank God</LINE>
-<LINE>and my cold blood, I am of your humour for that: I</LINE>
-<LINE>had rather hear my dog bark at a crow than a man</LINE>
-<LINE>swear he loves me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>God keep your ladyship still in that mind! so some</LINE>
-<LINE>gentleman or other shall 'scape a predestinate</LINE>
-<LINE>scratched face.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Scratching could not make it worse, an 'twere such</LINE>
-<LINE>a face as yours were.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Well, you are a rare parrot-teacher.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>A bird of my tongue is better than a beast of yours.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I would my horse had the speed of your tongue, and</LINE>
-<LINE>so good a continuer. But keep your way, i' God's</LINE>
-<LINE>name; I have done.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>You always end with a jade's trick: I know you of old.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>That is the sum of all, Leonato. Signior Claudio</LINE>
-<LINE>and Signior Benedick, my dear friend Leonato hath</LINE>
-<LINE>invited you all. I tell him we shall stay here at</LINE>
-<LINE>the least a month; and he heartily prays some</LINE>
-<LINE>occasion may detain us longer. I dare swear he is no</LINE>
-<LINE>hypocrite, but prays from his heart.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>If you swear, my lord, you shall not be forsworn.</LINE>
-<STAGEDIR>To DON JOHN</STAGEDIR>
-<LINE>Let me bid you welcome, my lord: being reconciled to</LINE>
-<LINE>the prince your brother, I owe you all duty.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I thank you: I am not of many words, but I thank</LINE>
-<LINE>you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Please it your grace lead on?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Your hand, Leonato; we will go together.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt all except BENEDICK and CLAUDIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Benedick, didst thou note the daughter of Signior Leonato?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I noted her not; but I looked on her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Is she not a modest young lady?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Do you question me, as an honest man should do, for</LINE>
-<LINE>my simple true judgment; or would you have me speak</LINE>
-<LINE>after my custom, as being a professed tyrant to their sex?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>No; I pray thee speak in sober judgment.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Why, i' faith, methinks she's too low for a high</LINE>
-<LINE>praise, too brown for a fair praise and too little</LINE>
-<LINE>for a great praise: only this commendation I can</LINE>
-<LINE>afford her, that were she other than she is, she</LINE>
-<LINE>were unhandsome; and being no other but as she is, I</LINE>
-<LINE>do not like her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Thou thinkest I am in sport: I pray thee tell me</LINE>
-<LINE>truly how thou likest her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Would you buy her, that you inquire after her?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Can the world buy such a jewel?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Yea, and a case to put it into. But speak you this</LINE>
-<LINE>with a sad brow? or do you play the flouting Jack,</LINE>
-<LINE>to tell us Cupid is a good hare-finder and Vulcan a</LINE>
-<LINE>rare carpenter? Come, in what key shall a man take</LINE>
-<LINE>you, to go in the song?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>In mine eye she is the sweetest lady that ever I</LINE>
-<LINE>looked on.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I can see yet without spectacles and I see no such</LINE>
-<LINE>matter: there's her cousin, an she were not</LINE>
-<LINE>possessed with a fury, exceeds her as much in beauty</LINE>
-<LINE>as the first of May doth the last of December. But I</LINE>
-<LINE>hope you have no intent to turn husband, have you?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I would scarce trust myself, though I had sworn the</LINE>
-<LINE>contrary, if Hero would be my wife.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Is't come to this? In faith, hath not the world</LINE>
-<LINE>one man but he will wear his cap with suspicion?</LINE>
-<LINE>Shall I never see a bachelor of three-score again?</LINE>
-<LINE>Go to, i' faith; an thou wilt needs thrust thy neck</LINE>
-<LINE>into a yoke, wear the print of it and sigh away</LINE>
-<LINE>Sundays. Look Don Pedro is returned to seek you.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Re-enter DON PEDRO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>What secret hath held you here, that you followed</LINE>
-<LINE>not to Leonato's?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I would your grace would constrain me to tell.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I charge thee on thy allegiance.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>You hear, Count Claudio: I can be secret as a dumb</LINE>
-<LINE>man; I would have you think so; but, on my</LINE>
-<LINE>allegiance, mark you this, on my allegiance. He is</LINE>
-<LINE>in love. With who? now that is your grace's part.</LINE>
-<LINE>Mark how short his answer is;--With Hero, Leonato's</LINE>
-<LINE>short daughter.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If this were so, so were it uttered.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Like the old tale, my lord: 'it is not so, nor</LINE>
-<LINE>'twas not so, but, indeed, God forbid it should be</LINE>
-<LINE>so.'</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If my passion change not shortly, God forbid it</LINE>
-<LINE>should be otherwise.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Amen, if you love her; for the lady is very well worthy.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>You speak this to fetch me in, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>By my troth, I speak my thought.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And, in faith, my lord, I spoke mine.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>And, by my two faiths and troths, my lord, I spoke mine.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>That I love her, I feel.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>That she is worthy, I know.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>That I neither feel how she should be loved nor</LINE>
-<LINE>know how she should be worthy, is the opinion that</LINE>
-<LINE>fire cannot melt out of me: I will die in it at the stake.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Thou wast ever an obstinate heretic in the despite</LINE>
-<LINE>of beauty.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And never could maintain his part but in the force</LINE>
-<LINE>of his will.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>That a woman conceived me, I thank her; that she</LINE>
-<LINE>brought me up, I likewise give her most humble</LINE>
-<LINE>thanks: but that I will have a recheat winded in my</LINE>
-<LINE>forehead, or hang my bugle in an invisible baldrick,</LINE>
-<LINE>all women shall pardon me. Because I will not do</LINE>
-<LINE>them the wrong to mistrust any, I will do myself the</LINE>
-<LINE>right to trust none; and the fine is, for the which</LINE>
-<LINE>I may go the finer, I will live a bachelor.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I shall see thee, ere I die, look pale with love.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>With anger, with sickness, or with hunger, my lord,</LINE>
-<LINE>not with love: prove that ever I lose more blood</LINE>
-<LINE>with love than I will get again with drinking, pick</LINE>
-<LINE>out mine eyes with a ballad-maker's pen and hang me</LINE>
-<LINE>up at the door of a brothel-house for the sign of</LINE>
-<LINE>blind Cupid.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Well, if ever thou dost fall from this faith, thou</LINE>
-<LINE>wilt prove a notable argument.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>If I do, hang me in a bottle like a cat and shoot</LINE>
-<LINE>at me; and he that hits me, let him be clapped on</LINE>
-<LINE>the shoulder, and called Adam.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Well, as time shall try: 'In time the savage bull</LINE>
-<LINE>doth bear the yoke.'</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>The savage bull may; but if ever the sensible</LINE>
-<LINE>Benedick bear it, pluck off the bull's horns and set</LINE>
-<LINE>them in my forehead: and let me be vilely painted,</LINE>
-<LINE>and in such great letters as they write 'Here is</LINE>
-<LINE>good horse to hire,' let them signify under my sign</LINE>
-<LINE>'Here you may see Benedick the married man.'</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If this should ever happen, thou wouldst be horn-mad.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Nay, if Cupid have not spent all his quiver in</LINE>
-<LINE>Venice, thou wilt quake for this shortly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I look for an earthquake too, then.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Well, you temporize with the hours. In the</LINE>
-<LINE>meantime, good Signior Benedick, repair to</LINE>
-<LINE>Leonato's: commend me to him and tell him I will</LINE>
-<LINE>not fail him at supper; for indeed he hath made</LINE>
-<LINE>great preparation.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I have almost matter enough in me for such an</LINE>
-<LINE>embassage; and so I commit you--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>To the tuition of God: From my house, if I had it,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>The sixth of July: Your loving friend, Benedick.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Nay, mock not, mock not. The body of your</LINE>
-<LINE>discourse is sometime guarded with fragments, and</LINE>
-<LINE>the guards are but slightly basted on neither: ere</LINE>
-<LINE>you flout old ends any further, examine your</LINE>
-<LINE>conscience: and so I leave you.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>My liege, your highness now may do me good.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>My love is thine to teach: teach it but how,</LINE>
-<LINE>And thou shalt see how apt it is to learn</LINE>
-<LINE>Any hard lesson that may do thee good.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Hath Leonato any son, my lord?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>No child but Hero; she's his only heir.</LINE>
-<LINE>Dost thou affect her, Claudio?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>O, my lord,</LINE>
-<LINE>When you went onward on this ended action,</LINE>
-<LINE>I look'd upon her with a soldier's eye,</LINE>
-<LINE>That liked, but had a rougher task in hand</LINE>
-<LINE>Than to drive liking to the name of love:</LINE>
-<LINE>But now I am return'd and that war-thoughts</LINE>
-<LINE>Have left their places vacant, in their rooms</LINE>
-<LINE>Come thronging soft and delicate desires,</LINE>
-<LINE>All prompting me how fair young Hero is,</LINE>
-<LINE>Saying, I liked her ere I went to wars.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Thou wilt be like a lover presently</LINE>
-<LINE>And tire the hearer with a book of words.</LINE>
-<LINE>If thou dost love fair Hero, cherish it,</LINE>
-<LINE>And I will break with her and with her father,</LINE>
-<LINE>And thou shalt have her. Was't not to this end</LINE>
-<LINE>That thou began'st to twist so fine a story?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>How sweetly you do minister to love,</LINE>
-<LINE>That know love's grief by his complexion!</LINE>
-<LINE>But lest my liking might too sudden seem,</LINE>
-<LINE>I would have salved it with a longer treatise.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>What need the bridge much broader than the flood?</LINE>
-<LINE>The fairest grant is the necessity.</LINE>
-<LINE>Look, what will serve is fit: 'tis once, thou lovest,</LINE>
-<LINE>And I will fit thee with the remedy.</LINE>
-<LINE>I know we shall have revelling to-night:</LINE>
-<LINE>I will assume thy part in some disguise</LINE>
-<LINE>And tell fair Hero I am Claudio,</LINE>
-<LINE>And in her bosom I'll unclasp my heart</LINE>
-<LINE>And take her hearing prisoner with the force</LINE>
-<LINE>And strong encounter of my amorous tale:</LINE>
-<LINE>Then after to her father will I break;</LINE>
-<LINE>And the conclusion is, she shall be thine.</LINE>
-<LINE>In practise let us put it presently.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE II. A room in LEONATO's house.</TITLE>
-<STAGEDIR>Enter LEONATO and ANTONIO, meeting</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>How now, brother! Where is my cousin, your son?</LINE>
-<LINE>hath he provided this music?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>He is very busy about it. But, brother, I can tell</LINE>
-<LINE>you strange news that you yet dreamt not of.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Are they good?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>As the event stamps them: but they have a good</LINE>
-<LINE>cover; they show well outward. The prince and Count</LINE>
-<LINE>Claudio, walking in a thick-pleached alley in mine</LINE>
-<LINE>orchard, were thus much overheard by a man of mine:</LINE>
-<LINE>the prince discovered to Claudio that he loved my</LINE>
-<LINE>niece your daughter and meant to acknowledge it</LINE>
-<LINE>this night in a dance: and if he found her</LINE>
-<LINE>accordant, he meant to take the present time by the</LINE>
-<LINE>top and instantly break with you of it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Hath the fellow any wit that told you this?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>A good sharp fellow: I will send for him; and</LINE>
-<LINE>question him yourself.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>No, no; we will hold it as a dream till it appear</LINE>
-<LINE>itself: but I will acquaint my daughter withal,</LINE>
-<LINE>that she may be the better prepared for an answer,</LINE>
-<LINE>if peradventure this be true. Go you and tell her of it.</LINE>
-<STAGEDIR>Enter Attendants</STAGEDIR>
-<LINE>Cousins, you know what you have to do. O, I cry you</LINE>
-<LINE>mercy, friend; go you with me, and I will use your</LINE>
-<LINE>skill. Good cousin, have a care this busy time.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE III. The same.</TITLE>
-<STAGEDIR>Enter DON JOHN and CONRADE</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>What the good-year, my lord! why are you thus out</LINE>
-<LINE>of measure sad?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>There is no measure in the occasion that breeds;</LINE>
-<LINE>therefore the sadness is without limit.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>You should hear reason.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>And when I have heard it, what blessing brings it?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>If not a present remedy, at least a patient</LINE>
-<LINE>sufferance.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I wonder that thou, being, as thou sayest thou art,</LINE>
-<LINE>born under Saturn, goest about to apply a moral</LINE>
-<LINE>medicine to a mortifying mischief. I cannot hide</LINE>
-<LINE>what I am: I must be sad when I have cause and smile</LINE>
-<LINE>at no man's jests, eat when I have stomach and wait</LINE>
-<LINE>for no man's leisure, sleep when I am drowsy and</LINE>
-<LINE>tend on no man's business, laugh when I am merry and</LINE>
-<LINE>claw no man in his humour.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Yea, but you must not make the full show of this</LINE>
-<LINE>till you may do it without controlment. You have of</LINE>
-<LINE>late stood out against your brother, and he hath</LINE>
-<LINE>ta'en you newly into his grace; where it is</LINE>
-<LINE>impossible you should take true root but by the</LINE>
-<LINE>fair weather that you make yourself: it is needful</LINE>
-<LINE>that you frame the season for your own harvest.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I had rather be a canker in a hedge than a rose in</LINE>
-<LINE>his grace, and it better fits my blood to be</LINE>
-<LINE>disdained of all than to fashion a carriage to rob</LINE>
-<LINE>love from any: in this, though I cannot be said to</LINE>
-<LINE>be a flattering honest man, it must not be denied</LINE>
-<LINE>but I am a plain-dealing villain. I am trusted with</LINE>
-<LINE>a muzzle and enfranchised with a clog; therefore I</LINE>
-<LINE>have decreed not to sing in my cage. If I had my</LINE>
-<LINE>mouth, I would bite; if I had my liberty, I would do</LINE>
-<LINE>my liking: in the meantime let me be that I am and</LINE>
-<LINE>seek not to alter me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Can you make no use of your discontent?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I make all use of it, for I use it only.</LINE>
-<LINE>Who comes here?</LINE>
-<STAGEDIR>Enter BORACHIO</STAGEDIR>
-<LINE>What news, Borachio?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>I came yonder from a great supper: the prince your</LINE>
-<LINE>brother is royally entertained by Leonato: and I</LINE>
-<LINE>can give you intelligence of an intended marriage.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Will it serve for any model to build mischief on?</LINE>
-<LINE>What is he for a fool that betroths himself to</LINE>
-<LINE>unquietness?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Marry, it is your brother's right hand.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Who? the most exquisite Claudio?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Even he.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>A proper squire! And who, and who? which way looks</LINE>
-<LINE>he?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Marry, on Hero, the daughter and heir of Leonato.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>A very forward March-chick! How came you to this?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Being entertained for a perfumer, as I was smoking a</LINE>
-<LINE>musty room, comes me the prince and Claudio, hand</LINE>
-<LINE>in hand in sad conference: I whipt me behind the</LINE>
-<LINE>arras; and there heard it agreed upon that the</LINE>
-<LINE>prince should woo Hero for himself, and having</LINE>
-<LINE>obtained her, give her to Count Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Come, come, let us thither: this may prove food to</LINE>
-<LINE>my displeasure. That young start-up hath all the</LINE>
-<LINE>glory of my overthrow: if I can cross him any way, I</LINE>
-<LINE>bless myself every way. You are both sure, and will assist me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>To the death, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Let us to the great supper: their cheer is the</LINE>
-<LINE>greater that I am subdued. Would the cook were of</LINE>
-<LINE>my mind! Shall we go prove what's to be done?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>We'll wait upon your lordship.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-</ACT>
-
-<ACT><TITLE>ACT II</TITLE>
-
-<SCENE><TITLE>SCENE I. A hall in LEONATO'S house.</TITLE>
-<STAGEDIR>Enter LEONATO, ANTONIO, HERO, BEATRICE, and others</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Was not Count John here at supper?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>I saw him not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>How tartly that gentleman looks! I never can see</LINE>
-<LINE>him but I am heart-burned an hour after.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>He is of a very melancholy disposition.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>He were an excellent man that were made just in the</LINE>
-<LINE>midway between him and Benedick: the one is too</LINE>
-<LINE>like an image and says nothing, and the other too</LINE>
-<LINE>like my lady's eldest son, evermore tattling.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Then half Signior Benedick's tongue in Count John's</LINE>
-<LINE>mouth, and half Count John's melancholy in Signior</LINE>
-<LINE>Benedick's face,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>With a good leg and a good foot, uncle, and money</LINE>
-<LINE>enough in his purse, such a man would win any woman</LINE>
-<LINE>in the world, if a' could get her good-will.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>By my troth, niece, thou wilt never get thee a</LINE>
-<LINE>husband, if thou be so shrewd of thy tongue.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>In faith, she's too curst.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Too curst is more than curst: I shall lessen God's</LINE>
-<LINE>sending that way; for it is said, 'God sends a curst</LINE>
-<LINE>cow short horns;' but to a cow too curst he sends none.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>So, by being too curst, God will send you no horns.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Just, if he send me no husband; for the which</LINE>
-<LINE>blessing I am at him upon my knees every morning and</LINE>
-<LINE>evening. Lord, I could not endure a husband with a</LINE>
-<LINE>beard on his face: I had rather lie in the woollen.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>You may light on a husband that hath no beard.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>What should I do with him? dress him in my apparel</LINE>
-<LINE>and make him my waiting-gentlewoman? He that hath a</LINE>
-<LINE>beard is more than a youth, and he that hath no</LINE>
-<LINE>beard is less than a man: and he that is more than</LINE>
-<LINE>a youth is not for me, and he that is less than a</LINE>
-<LINE>man, I am not for him: therefore, I will even take</LINE>
-<LINE>sixpence in earnest of the bear-ward, and lead his</LINE>
-<LINE>apes into hell.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Well, then, go you into hell?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>No, but to the gate; and there will the devil meet</LINE>
-<LINE>me, like an old cuckold, with horns on his head, and</LINE>
-<LINE>say 'Get you to heaven, Beatrice, get you to</LINE>
-<LINE>heaven; here's no place for you maids:' so deliver</LINE>
-<LINE>I up my apes, and away to Saint Peter for the</LINE>
-<LINE>heavens; he shows me where the bachelors sit, and</LINE>
-<LINE>there live we as merry as the day is long.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE><STAGEDIR>To HERO</STAGEDIR> Well, niece, I trust you will be ruled</LINE>
-<LINE>by your father.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Yes, faith; it is my cousin's duty to make curtsy</LINE>
-<LINE>and say 'Father, as it please you.' But yet for all</LINE>
-<LINE>that, cousin, let him be a handsome fellow, or else</LINE>
-<LINE>make another curtsy and say 'Father, as it please</LINE>
-<LINE>me.'</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Well, niece, I hope to see you one day fitted with a husband.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Not till God make men of some other metal than</LINE>
-<LINE>earth. Would it not grieve a woman to be</LINE>
-<LINE>overmastered with a pierce of valiant dust? to make</LINE>
-<LINE>an account of her life to a clod of wayward marl?</LINE>
-<LINE>No, uncle, I'll none: Adam's sons are my brethren;</LINE>
-<LINE>and, truly, I hold it a sin to match in my kindred.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Daughter, remember what I told you: if the prince</LINE>
-<LINE>do solicit you in that kind, you know your answer.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>The fault will be in the music, cousin, if you be</LINE>
-<LINE>not wooed in good time: if the prince be too</LINE>
-<LINE>important, tell him there is measure in every thing</LINE>
-<LINE>and so dance out the answer. For, hear me, Hero:</LINE>
-<LINE>wooing, wedding, and repenting, is as a Scotch jig,</LINE>
-<LINE>a measure, and a cinque pace: the first suit is hot</LINE>
-<LINE>and hasty, like a Scotch jig, and full as</LINE>
-<LINE>fantastical; the wedding, mannerly-modest, as a</LINE>
-<LINE>measure, full of state and ancientry; and then comes</LINE>
-<LINE>repentance and, with his bad legs, falls into the</LINE>
-<LINE>cinque pace faster and faster, till he sink into his grave.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Cousin, you apprehend passing shrewdly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I have a good eye, uncle; I can see a church by daylight.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>The revellers are entering, brother: make good room.</LINE>
-</SPEECH>
-
-<STAGEDIR>All put on their masks</STAGEDIR>
-<STAGEDIR>Enter DON PEDRO, CLAUDIO, BENEDICK, BALTHASAR,
-DON JOHN, BORACHIO, MARGARET, URSULA and others, masked</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Lady, will you walk about with your friend?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>So you walk softly and look sweetly and say nothing,</LINE>
-<LINE>I am yours for the walk; and especially when I walk away.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>With me in your company?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>I may say so, when I please.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>And when please you to say so?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>When I like your favour; for God defend the lute</LINE>
-<LINE>should be like the case!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>My visor is Philemon's roof; within the house is Jove.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Why, then, your visor should be thatched.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Speak low, if you speak love.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Drawing her aside</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>Well, I would you did like me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>So would not I, for your own sake; for I have many</LINE>
-<LINE>ill-qualities.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>Which is one?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>I say my prayers aloud.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>I love you the better: the hearers may cry, Amen.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>God match me with a good dancer!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>Amen.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>And God keep him out of my sight when the dance is</LINE>
-<LINE>done! Answer, clerk.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>No more words: the clerk is answered.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>I know you well enough; you are Signior Antonio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>At a word, I am not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>I know you by the waggling of your head.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>To tell you true, I counterfeit him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>You could never do him so ill-well, unless you were</LINE>
-<LINE>the very man. Here's his dry hand up and down: you</LINE>
-<LINE>are he, you are he.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>At a word, I am not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Come, come, do you think I do not know you by your</LINE>
-<LINE>excellent wit? can virtue hide itself? Go to,</LINE>
-<LINE>mum, you are he: graces will appear, and there's an</LINE>
-<LINE>end.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Will you not tell me who told you so?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>No, you shall pardon me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Nor will you not tell me who you are?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Not now.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>That I was disdainful, and that I had my good wit</LINE>
-<LINE>out of the 'Hundred Merry Tales:'--well this was</LINE>
-<LINE>Signior Benedick that said so.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>What's he?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I am sure you know him well enough.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Not I, believe me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Did he never make you laugh?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I pray you, what is he?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Why, he is the prince's jester: a very dull fool;</LINE>
-<LINE>only his gift is in devising impossible slanders:</LINE>
-<LINE>none but libertines delight in him; and the</LINE>
-<LINE>commendation is not in his wit, but in his villany;</LINE>
-<LINE>for he both pleases men and angers them, and then</LINE>
-<LINE>they laugh at him and beat him. I am sure he is in</LINE>
-<LINE>the fleet: I would he had boarded me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>When I know the gentleman, I'll tell him what you say.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Do, do: he'll but break a comparison or two on me;</LINE>
-<LINE>which, peradventure not marked or not laughed at,</LINE>
-<LINE>strikes him into melancholy; and then there's a</LINE>
-<LINE>partridge wing saved, for the fool will eat no</LINE>
-<LINE>supper that night.</LINE>
-<STAGEDIR>Music</STAGEDIR>
-<LINE>We must follow the leaders.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>In every good thing.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Nay, if they lead to any ill, I will leave them at</LINE>
-<LINE>the next turning.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Dance. Then exeunt all except DON JOHN, BORACHIO,
-and CLAUDIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Sure my brother is amorous on Hero and hath</LINE>
-<LINE>withdrawn her father to break with him about it.</LINE>
-<LINE>The ladies follow her and but one visor remains.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>And that is Claudio: I know him by his bearing.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Are not you Signior Benedick?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>You know me well; I am he.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Signior, you are very near my brother in his love:</LINE>
-<LINE>he is enamoured on Hero; I pray you, dissuade him</LINE>
-<LINE>from her: she is no equal for his birth: you may</LINE>
-<LINE>do the part of an honest man in it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>How know you he loves her?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I heard him swear his affection.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>So did I too; and he swore he would marry her to-night.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Come, let us to the banquet.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt DON JOHN and BORACHIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Thus answer I in the name of Benedick,</LINE>
-<LINE>But hear these ill news with the ears of Claudio.</LINE>
-<LINE>'Tis certain so; the prince wooes for himself.</LINE>
-<LINE>Friendship is constant in all other things</LINE>
-<LINE>Save in the office and affairs of love:</LINE>
-<LINE>Therefore, all hearts in love use their own tongues;</LINE>
-<LINE>Let every eye negotiate for itself</LINE>
-<LINE>And trust no agent; for beauty is a witch</LINE>
-<LINE>Against whose charms faith melteth into blood.</LINE>
-<LINE>This is an accident of hourly proof,</LINE>
-<LINE>Which I mistrusted not. Farewell, therefore, Hero!</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Re-enter BENEDICK</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Count Claudio?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Yea, the same.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Come, will you go with me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Whither?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Even to the next willow, about your own business,</LINE>
-<LINE>county. What fashion will you wear the garland of?</LINE>
-<LINE>about your neck, like an usurer's chain? or under</LINE>
-<LINE>your arm, like a lieutenant's scarf? You must wear</LINE>
-<LINE>it one way, for the prince hath got your Hero.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I wish him joy of her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Why, that's spoken like an honest drovier: so they</LINE>
-<LINE>sell bullocks. But did you think the prince would</LINE>
-<LINE>have served you thus?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I pray you, leave me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Ho! now you strike like the blind man: 'twas the</LINE>
-<LINE>boy that stole your meat, and you'll beat the post.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If it will not be, I'll leave you.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Alas, poor hurt fowl! now will he creep into sedges.</LINE>
-<LINE>But that my Lady Beatrice should know me, and not</LINE>
-<LINE>know me! The prince's fool! Ha? It may be I go</LINE>
-<LINE>under that title because I am merry. Yea, but so I</LINE>
-<LINE>am apt to do myself wrong; I am not so reputed: it</LINE>
-<LINE>is the base, though bitter, disposition of Beatrice</LINE>
-<LINE>that puts the world into her person and so gives me</LINE>
-<LINE>out. Well, I'll be revenged as I may.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Re-enter DON PEDRO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Now, signior, where's the count? did you see him?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Troth, my lord, I have played the part of Lady Fame.</LINE>
-<LINE>I found him here as melancholy as a lodge in a</LINE>
-<LINE>warren: I told him, and I think I told him true,</LINE>
-<LINE>that your grace had got the good will of this young</LINE>
-<LINE>lady; and I offered him my company to a willow-tree,</LINE>
-<LINE>either to make him a garland, as being forsaken, or</LINE>
-<LINE>to bind him up a rod, as being worthy to be whipped.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>To be whipped! What's his fault?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>The flat transgression of a schoolboy, who, being</LINE>
-<LINE>overjoyed with finding a birds' nest, shows it his</LINE>
-<LINE>companion, and he steals it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Wilt thou make a trust a transgression? The</LINE>
-<LINE>transgression is in the stealer.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Yet it had not been amiss the rod had been made,</LINE>
-<LINE>and the garland too; for the garland he might have</LINE>
-<LINE>worn himself, and the rod he might have bestowed on</LINE>
-<LINE>you, who, as I take it, have stolen his birds' nest.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I will but teach them to sing, and restore them to</LINE>
-<LINE>the owner.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>If their singing answer your saying, by my faith,</LINE>
-<LINE>you say honestly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>The Lady Beatrice hath a quarrel to you: the</LINE>
-<LINE>gentleman that danced with her told her she is much</LINE>
-<LINE>wronged by you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>O, she misused me past the endurance of a block!</LINE>
-<LINE>an oak but with one green leaf on it would have</LINE>
-<LINE>answered her; my very visor began to assume life and</LINE>
-<LINE>scold with her. She told me, not thinking I had been</LINE>
-<LINE>myself, that I was the prince's jester, that I was</LINE>
-<LINE>duller than a great thaw; huddling jest upon jest</LINE>
-<LINE>with such impossible conveyance upon me that I stood</LINE>
-<LINE>like a man at a mark, with a whole army shooting at</LINE>
-<LINE>me. She speaks poniards, and every word stabs:</LINE>
-<LINE>if her breath were as terrible as her terminations,</LINE>
-<LINE>there were no living near her; she would infect to</LINE>
-<LINE>the north star. I would not marry her, though she</LINE>
-<LINE>were endowed with all that Adam bad left him before</LINE>
-<LINE>he transgressed: she would have made Hercules have</LINE>
-<LINE>turned spit, yea, and have cleft his club to make</LINE>
-<LINE>the fire too. Come, talk not of her: you shall find</LINE>
-<LINE>her the infernal Ate in good apparel. I would to God</LINE>
-<LINE>some scholar would conjure her; for certainly, while</LINE>
-<LINE>she is here, a man may live as quiet in hell as in a</LINE>
-<LINE>sanctuary; and people sin upon purpose, because they</LINE>
-<LINE>would go thither; so, indeed, all disquiet, horror</LINE>
-<LINE>and perturbation follows her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Look, here she comes.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter CLAUDIO, BEATRICE, HERO, and LEONATO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Will your grace command me any service to the</LINE>
-<LINE>world's end? I will go on the slightest errand now</LINE>
-<LINE>to the Antipodes that you can devise to send me on;</LINE>
-<LINE>I will fetch you a tooth-picker now from the</LINE>
-<LINE>furthest inch of Asia, bring you the length of</LINE>
-<LINE>Prester John's foot, fetch you a hair off the great</LINE>
-<LINE>Cham's beard, do you any embassage to the Pigmies,</LINE>
-<LINE>rather than hold three words' conference with this</LINE>
-<LINE>harpy. You have no employment for me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>None, but to desire your good company.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>O God, sir, here's a dish I love not: I cannot</LINE>
-<LINE>endure my Lady Tongue.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Come, lady, come; you have lost the heart of</LINE>
-<LINE>Signior Benedick.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Indeed, my lord, he lent it me awhile; and I gave</LINE>
-<LINE>him use for it, a double heart for his single one:</LINE>
-<LINE>marry, once before he won it of me with false dice,</LINE>
-<LINE>therefore your grace may well say I have lost it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>You have put him down, lady, you have put him down.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>So I would not he should do me, my lord, lest I</LINE>
-<LINE>should prove the mother of fools. I have brought</LINE>
-<LINE>Count Claudio, whom you sent me to seek.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Why, how now, count! wherefore are you sad?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Not sad, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>How then? sick?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Neither, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>The count is neither sad, nor sick, nor merry, nor</LINE>
-<LINE>well; but civil count, civil as an orange, and</LINE>
-<LINE>something of that jealous complexion.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I' faith, lady, I think your blazon to be true;</LINE>
-<LINE>though, I'll be sworn, if he be so, his conceit is</LINE>
-<LINE>false. Here, Claudio, I have wooed in thy name, and</LINE>
-<LINE>fair Hero is won: I have broke with her father,</LINE>
-<LINE>and his good will obtained: name the day of</LINE>
-<LINE>marriage, and God give thee joy!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Count, take of me my daughter, and with her my</LINE>
-<LINE>fortunes: his grace hath made the match, and an</LINE>
-<LINE>grace say Amen to it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Speak, count, 'tis your cue.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Silence is the perfectest herald of joy: I were</LINE>
-<LINE>but little happy, if I could say how much. Lady, as</LINE>
-<LINE>you are mine, I am yours: I give away myself for</LINE>
-<LINE>you and dote upon the exchange.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Speak, cousin; or, if you cannot, stop his mouth</LINE>
-<LINE>with a kiss, and let not him speak neither.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>In faith, lady, you have a merry heart.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Yea, my lord; I thank it, poor fool, it keeps on</LINE>
-<LINE>the windy side of care. My cousin tells him in his</LINE>
-<LINE>ear that he is in her heart.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And so she doth, cousin.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Good Lord, for alliance! Thus goes every one to the</LINE>
-<LINE>world but I, and I am sunburnt; I may sit in a</LINE>
-<LINE>corner and cry heigh-ho for a husband!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Lady Beatrice, I will get you one.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I would rather have one of your father's getting.</LINE>
-<LINE>Hath your grace ne'er a brother like you? Your</LINE>
-<LINE>father got excellent husbands, if a maid could come by them.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Will you have me, lady?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>No, my lord, unless I might have another for</LINE>
-<LINE>working-days: your grace is too costly to wear</LINE>
-<LINE>every day. But, I beseech your grace, pardon me: I</LINE>
-<LINE>was born to speak all mirth and no matter.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Your silence most offends me, and to be merry best</LINE>
-<LINE>becomes you; for, out of question, you were born in</LINE>
-<LINE>a merry hour.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>No, sure, my lord, my mother cried; but then there</LINE>
-<LINE>was a star danced, and under that was I born.</LINE>
-<LINE>Cousins, God give you joy!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Niece, will you look to those things I told you of?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I cry you mercy, uncle. By your grace's pardon.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>By my troth, a pleasant-spirited lady.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>There's little of the melancholy element in her, my</LINE>
-<LINE>lord: she is never sad but when she sleeps, and</LINE>
-<LINE>not ever sad then; for I have heard my daughter say,</LINE>
-<LINE>she hath often dreamed of unhappiness and waked</LINE>
-<LINE>herself with laughing.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>She cannot endure to hear tell of a husband.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>O, by no means: she mocks all her wooers out of suit.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>She were an excellent wife for Benedict.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>O Lord, my lord, if they were but a week married,</LINE>
-<LINE>they would talk themselves mad.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>County Claudio, when mean you to go to church?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>To-morrow, my lord: time goes on crutches till love</LINE>
-<LINE>have all his rites.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Not till Monday, my dear son, which is hence a just</LINE>
-<LINE>seven-night; and a time too brief, too, to have all</LINE>
-<LINE>things answer my mind.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Come, you shake the head at so long a breathing:</LINE>
-<LINE>but, I warrant thee, Claudio, the time shall not go</LINE>
-<LINE>dully by us. I will in the interim undertake one of</LINE>
-<LINE>Hercules' labours; which is, to bring Signior</LINE>
-<LINE>Benedick and the Lady Beatrice into a mountain of</LINE>
-<LINE>affection the one with the other. I would fain have</LINE>
-<LINE>it a match, and I doubt not but to fashion it, if</LINE>
-<LINE>you three will but minister such assistance as I</LINE>
-<LINE>shall give you direction.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>My lord, I am for you, though it cost me ten</LINE>
-<LINE>nights' watchings.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And I, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>And you too, gentle Hero?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>I will do any modest office, my lord, to help my</LINE>
-<LINE>cousin to a good husband.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>And Benedick is not the unhopefullest husband that</LINE>
-<LINE>I know. Thus far can I praise him; he is of a noble</LINE>
-<LINE>strain, of approved valour and confirmed honesty. I</LINE>
-<LINE>will teach you how to humour your cousin, that she</LINE>
-<LINE>shall fall in love with Benedick; and I, with your</LINE>
-<LINE>two helps, will so practise on Benedick that, in</LINE>
-<LINE>despite of his quick wit and his queasy stomach, he</LINE>
-<LINE>shall fall in love with Beatrice. If we can do this,</LINE>
-<LINE>Cupid is no longer an archer: his glory shall be</LINE>
-<LINE>ours, for we are the only love-gods. Go in with me,</LINE>
-<LINE>and I will tell you my drift.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE II. The same.</TITLE>
-<STAGEDIR>Enter DON JOHN and BORACHIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>It is so; the Count Claudio shall marry the</LINE>
-<LINE>daughter of Leonato.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Yea, my lord; but I can cross it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Any bar, any cross, any impediment will be</LINE>
-<LINE>medicinable to me: I am sick in displeasure to him,</LINE>
-<LINE>and whatsoever comes athwart his affection ranges</LINE>
-<LINE>evenly with mine. How canst thou cross this marriage?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Not honestly, my lord; but so covertly that no</LINE>
-<LINE>dishonesty shall appear in me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Show me briefly how.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>I think I told your lordship a year since, how much</LINE>
-<LINE>I am in the favour of Margaret, the waiting</LINE>
-<LINE>gentlewoman to Hero.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I remember.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>I can, at any unseasonable instant of the night,</LINE>
-<LINE>appoint her to look out at her lady's chamber window.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>What life is in that, to be the death of this marriage?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>The poison of that lies in you to temper. Go you to</LINE>
-<LINE>the prince your brother; spare not to tell him that</LINE>
-<LINE>he hath wronged his honour in marrying the renowned</LINE>
-<LINE>Claudio--whose estimation do you mightily hold</LINE>
-<LINE>up--to a contaminated stale, such a one as Hero.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>What proof shall I make of that?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Proof enough to misuse the prince, to vex Claudio,</LINE>
-<LINE>to undo Hero and kill Leonato. Look you for any</LINE>
-<LINE>other issue?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Only to despite them, I will endeavour any thing.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Go, then; find me a meet hour to draw Don Pedro and</LINE>
-<LINE>the Count Claudio alone: tell them that you know</LINE>
-<LINE>that Hero loves me; intend a kind of zeal both to the</LINE>
-<LINE>prince and Claudio, as,--in love of your brother's</LINE>
-<LINE>honour, who hath made this match, and his friend's</LINE>
-<LINE>reputation, who is thus like to be cozened with the</LINE>
-<LINE>semblance of a maid,--that you have discovered</LINE>
-<LINE>thus. They will scarcely believe this without trial:</LINE>
-<LINE>offer them instances; which shall bear no less</LINE>
-<LINE>likelihood than to see me at her chamber-window,</LINE>
-<LINE>hear me call Margaret Hero, hear Margaret term me</LINE>
-<LINE>Claudio; and bring them to see this the very night</LINE>
-<LINE>before the intended wedding,--for in the meantime I</LINE>
-<LINE>will so fashion the matter that Hero shall be</LINE>
-<LINE>absent,--and there shall appear such seeming truth</LINE>
-<LINE>of Hero's disloyalty that jealousy shall be called</LINE>
-<LINE>assurance and all the preparation overthrown.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Grow this to what adverse issue it can, I will put</LINE>
-<LINE>it in practise. Be cunning in the working this, and</LINE>
-<LINE>thy fee is a thousand ducats.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Be you constant in the accusation, and my cunning</LINE>
-<LINE>shall not shame me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I will presently go learn their day of marriage.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE III. LEONATO'S orchard.</TITLE>
-<STAGEDIR>Enter BENEDICK</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Boy!</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter Boy</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>Boy</SPEAKER>
-<LINE>Signior?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>In my chamber-window lies a book: bring it hither</LINE>
-<LINE>to me in the orchard.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Boy</SPEAKER>
-<LINE>I am here already, sir.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I know that; but I would have thee hence, and here again.</LINE>
-<STAGEDIR>Exit Boy</STAGEDIR>
-<LINE>I do much wonder that one man, seeing how much</LINE>
-<LINE>another man is a fool when he dedicates his</LINE>
-<LINE>behaviors to love, will, after he hath laughed at</LINE>
-<LINE>such shallow follies in others, become the argument</LINE>
-<LINE>of his own scorn by failing in love: and such a man</LINE>
-<LINE>is Claudio. I have known when there was no music</LINE>
-<LINE>with him but the drum and the fife; and now had he</LINE>
-<LINE>rather hear the tabour and the pipe: I have known</LINE>
-<LINE>when he would have walked ten mile a-foot to see a</LINE>
-<LINE>good armour; and now will he lie ten nights awake,</LINE>
-<LINE>carving the fashion of a new doublet. He was wont to</LINE>
-<LINE>speak plain and to the purpose, like an honest man</LINE>
-<LINE>and a soldier; and now is he turned orthography; his</LINE>
-<LINE>words are a very fantastical banquet, just so many</LINE>
-<LINE>strange dishes. May I be so converted and see with</LINE>
-<LINE>these eyes? I cannot tell; I think not: I will not</LINE>
-<LINE>be sworn, but love may transform me to an oyster; but</LINE>
-<LINE>I'll take my oath on it, till he have made an oyster</LINE>
-<LINE>of me, he shall never make me such a fool. One woman</LINE>
-<LINE>is fair, yet I am well; another is wise, yet I am</LINE>
-<LINE>well; another virtuous, yet I am well; but till all</LINE>
-<LINE>graces be in one woman, one woman shall not come in</LINE>
-<LINE>my grace. Rich she shall be, that's certain; wise,</LINE>
-<LINE>or I'll none; virtuous, or I'll never cheapen her;</LINE>
-<LINE>fair, or I'll never look on her; mild, or come not</LINE>
-<LINE>near me; noble, or not I for an angel; of good</LINE>
-<LINE>discourse, an excellent musician, and her hair shall</LINE>
-<LINE>be of what colour it please God. Ha! the prince and</LINE>
-<LINE>Monsieur Love! I will hide me in the arbour.</LINE>
-</SPEECH>
-
-<STAGEDIR>Withdraws</STAGEDIR>
-<STAGEDIR>Enter DON PEDRO, CLAUDIO, and LEONATO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Come, shall we hear this music?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Yea, my good lord. How still the evening is,</LINE>
-<LINE>As hush'd on purpose to grace harmony!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>See you where Benedick hath hid himself?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>O, very well, my lord: the music ended,</LINE>
-<LINE>We'll fit the kid-fox with a pennyworth.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter BALTHASAR with Music</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Come, Balthasar, we'll hear that song again.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>O, good my lord, tax not so bad a voice</LINE>
-<LINE>To slander music any more than once.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>It is the witness still of excellency</LINE>
-<LINE>To put a strange face on his own perfection.</LINE>
-<LINE>I pray thee, sing, and let me woo no more.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>Because you talk of wooing, I will sing;</LINE>
-<LINE>Since many a wooer doth commence his suit</LINE>
-<LINE>To her he thinks not worthy, yet he wooes,</LINE>
-<LINE>Yet will he swear he loves.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Now, pray thee, come;</LINE>
-<LINE>Or, if thou wilt hold longer argument,</LINE>
-<LINE>Do it in notes.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>Note this before my notes;</LINE>
-<LINE>There's not a note of mine that's worth the noting.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Why, these are very crotchets that he speaks;</LINE>
-<LINE>Note, notes, forsooth, and nothing.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Air</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Now, divine air! now is his soul ravished! Is it</LINE>
-<LINE>not strange that sheeps' guts should hale souls out</LINE>
-<LINE>of men's bodies? Well, a horn for my money, when</LINE>
-<LINE>all's done.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>The Song</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>Sigh no more, ladies, sigh no more,</LINE>
-<LINE>Men were deceivers ever,</LINE>
-<LINE>One foot in sea and one on shore,</LINE>
-<LINE>To one thing constant never:</LINE>
-<LINE>Then sigh not so, but let them go,</LINE>
-<LINE>And be you blithe and bonny,</LINE>
-<LINE>Converting all your sounds of woe</LINE>
-<LINE>Into Hey nonny, nonny.</LINE>
-<LINE>Sing no more ditties, sing no moe,</LINE>
-<LINE>Of dumps so dull and heavy;</LINE>
-<LINE>The fraud of men was ever so,</LINE>
-<LINE>Since summer first was leafy:</LINE>
-<LINE>Then sigh not so, &c.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>By my troth, a good song.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>And an ill singer, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Ha, no, no, faith; thou singest well enough for a shift.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>An he had been a dog that should have howled thus,</LINE>
-<LINE>they would have hanged him: and I pray God his bad</LINE>
-<LINE>voice bode no mischief. I had as lief have heard the</LINE>
-<LINE>night-raven, come what plague could have come after</LINE>
-<LINE>it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Yea, marry, dost thou hear, Balthasar? I pray thee,</LINE>
-<LINE>get us some excellent music; for to-morrow night we</LINE>
-<LINE>would have it at the Lady Hero's chamber-window.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BALTHASAR</SPEAKER>
-<LINE>The best I can, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Do so: farewell.</LINE>
-<STAGEDIR>Exit BALTHASAR</STAGEDIR>
-<LINE>Come hither, Leonato. What was it you told me of</LINE>
-<LINE>to-day, that your niece Beatrice was in love with</LINE>
-<LINE>Signior Benedick?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>O, ay: stalk on. stalk on; the fowl sits. I did</LINE>
-<LINE>never think that lady would have loved any man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>No, nor I neither; but most wonderful that she</LINE>
-<LINE>should so dote on Signior Benedick, whom she hath in</LINE>
-<LINE>all outward behaviors seemed ever to abhor.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Is't possible? Sits the wind in that corner?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>By my troth, my lord, I cannot tell what to think</LINE>
-<LINE>of it but that she loves him with an enraged</LINE>
-<LINE>affection: it is past the infinite of thought.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>May be she doth but counterfeit.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Faith, like enough.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>O God, counterfeit! There was never counterfeit of</LINE>
-<LINE>passion came so near the life of passion as she</LINE>
-<LINE>discovers it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Why, what effects of passion shows she?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Bait the hook well; this fish will bite.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>What effects, my lord? She will sit you, you heard</LINE>
-<LINE>my daughter tell you how.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>She did, indeed.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>How, how, pray you? You amaze me: I would have I</LINE>
-<LINE>thought her spirit had been invincible against all</LINE>
-<LINE>assaults of affection.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I would have sworn it had, my lord; especially</LINE>
-<LINE>against Benedick.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I should think this a gull, but that the</LINE>
-<LINE>white-bearded fellow speaks it: knavery cannot,</LINE>
-<LINE>sure, hide himself in such reverence.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>He hath ta'en the infection: hold it up.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Hath she made her affection known to Benedick?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>No; and swears she never will: that's her torment.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>'Tis true, indeed; so your daughter says: 'Shall</LINE>
-<LINE>I,' says she, 'that have so oft encountered him</LINE>
-<LINE>with scorn, write to him that I love him?'</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>This says she now when she is beginning to write to</LINE>
-<LINE>him; for she'll be up twenty times a night, and</LINE>
-<LINE>there will she sit in her smock till she have writ a</LINE>
-<LINE>sheet of paper: my daughter tells us all.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Now you talk of a sheet of paper, I remember a</LINE>
-<LINE>pretty jest your daughter told us of.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>O, when she had writ it and was reading it over, she</LINE>
-<LINE>found Benedick and Beatrice between the sheet?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>That.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>O, she tore the letter into a thousand halfpence;</LINE>
-<LINE>railed at herself, that she should be so immodest</LINE>
-<LINE>to write to one that she knew would flout her; 'I</LINE>
-<LINE>measure him,' says she, 'by my own spirit; for I</LINE>
-<LINE>should flout him, if he writ to me; yea, though I</LINE>
-<LINE>love him, I should.'</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Then down upon her knees she falls, weeps, sobs,</LINE>
-<LINE>beats her heart, tears her hair, prays, curses; 'O</LINE>
-<LINE>sweet Benedick! God give me patience!'</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>She doth indeed; my daughter says so: and the</LINE>
-<LINE>ecstasy hath so much overborne her that my daughter</LINE>
-<LINE>is sometime afeared she will do a desperate outrage</LINE>
-<LINE>to herself: it is very true.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>It were good that Benedick knew of it by some</LINE>
-<LINE>other, if she will not discover it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>To what end? He would make but a sport of it and</LINE>
-<LINE>torment the poor lady worse.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>An he should, it were an alms to hang him. She's an</LINE>
-<LINE>excellent sweet lady; and, out of all suspicion,</LINE>
-<LINE>she is virtuous.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And she is exceeding wise.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>In every thing but in loving Benedick.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>O, my lord, wisdom and blood combating in so tender</LINE>
-<LINE>a body, we have ten proofs to one that blood hath</LINE>
-<LINE>the victory. I am sorry for her, as I have just</LINE>
-<LINE>cause, being her uncle and her guardian.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I would she had bestowed this dotage on me: I would</LINE>
-<LINE>have daffed all other respects and made her half</LINE>
-<LINE>myself. I pray you, tell Benedick of it, and hear</LINE>
-<LINE>what a' will say.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Were it good, think you?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Hero thinks surely she will die; for she says she</LINE>
-<LINE>will die, if he love her not, and she will die, ere</LINE>
-<LINE>she make her love known, and she will die, if he woo</LINE>
-<LINE>her, rather than she will bate one breath of her</LINE>
-<LINE>accustomed crossness.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>She doth well: if she should make tender of her</LINE>
-<LINE>love, 'tis very possible he'll scorn it; for the</LINE>
-<LINE>man, as you know all, hath a contemptible spirit.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>He is a very proper man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>He hath indeed a good outward happiness.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Before God! and, in my mind, very wise.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>He doth indeed show some sparks that are like wit.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And I take him to be valiant.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>As Hector, I assure you: and in the managing of</LINE>
-<LINE>quarrels you may say he is wise; for either he</LINE>
-<LINE>avoids them with great discretion, or undertakes</LINE>
-<LINE>them with a most Christian-like fear.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>If he do fear God, a' must necessarily keep peace:</LINE>
-<LINE>if he break the peace, he ought to enter into a</LINE>
-<LINE>quarrel with fear and trembling.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>And so will he do; for the man doth fear God,</LINE>
-<LINE>howsoever it seems not in him by some large jests</LINE>
-<LINE>he will make. Well I am sorry for your niece. Shall</LINE>
-<LINE>we go seek Benedick, and tell him of her love?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Never tell him, my lord: let her wear it out with</LINE>
-<LINE>good counsel.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Nay, that's impossible: she may wear her heart out first.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Well, we will hear further of it by your daughter:</LINE>
-<LINE>let it cool the while. I love Benedick well; and I</LINE>
-<LINE>could wish he would modestly examine himself, to see</LINE>
-<LINE>how much he is unworthy so good a lady.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>My lord, will you walk? dinner is ready.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If he do not dote on her upon this, I will never</LINE>
-<LINE>trust my expectation.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Let there be the same net spread for her; and that</LINE>
-<LINE>must your daughter and her gentlewomen carry. The</LINE>
-<LINE>sport will be, when they hold one an opinion of</LINE>
-<LINE>another's dotage, and no such matter: that's the</LINE>
-<LINE>scene that I would see, which will be merely a</LINE>
-<LINE>dumb-show. Let us send her to call him in to dinner.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt DON PEDRO, CLAUDIO, and LEONATO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE><STAGEDIR>Coming forward</STAGEDIR> This can be no trick: the</LINE>
-<LINE>conference was sadly borne. They have the truth of</LINE>
-<LINE>this from Hero. They seem to pity the lady: it</LINE>
-<LINE>seems her affections have their full bent. Love me!</LINE>
-<LINE>why, it must be requited. I hear how I am censured:</LINE>
-<LINE>they say I will bear myself proudly, if I perceive</LINE>
-<LINE>the love come from her; they say too that she will</LINE>
-<LINE>rather die than give any sign of affection. I did</LINE>
-<LINE>never think to marry: I must not seem proud: happy</LINE>
-<LINE>are they that hear their detractions and can put</LINE>
-<LINE>them to mending. They say the lady is fair; 'tis a</LINE>
-<LINE>truth, I can bear them witness; and virtuous; 'tis</LINE>
-<LINE>so, I cannot reprove it; and wise, but for loving</LINE>
-<LINE>me; by my troth, it is no addition to her wit, nor</LINE>
-<LINE>no great argument of her folly, for I will be</LINE>
-<LINE>horribly in love with her. I may chance have some</LINE>
-<LINE>odd quirks and remnants of wit broken on me,</LINE>
-<LINE>because I have railed so long against marriage: but</LINE>
-<LINE>doth not the appetite alter? a man loves the meat</LINE>
-<LINE>in his youth that he cannot endure in his age.</LINE>
-<LINE>Shall quips and sentences and these paper bullets of</LINE>
-<LINE>the brain awe a man from the career of his humour?</LINE>
-<LINE>No, the world must be peopled. When I said I would</LINE>
-<LINE>die a bachelor, I did not think I should live till I</LINE>
-<LINE>were married. Here comes Beatrice. By this day!</LINE>
-<LINE>she's a fair lady: I do spy some marks of love in</LINE>
-<LINE>her.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter BEATRICE</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Against my will I am sent to bid you come in to dinner.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Fair Beatrice, I thank you for your pains.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I took no more pains for those thanks than you take</LINE>
-<LINE>pains to thank me: if it had been painful, I would</LINE>
-<LINE>not have come.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>You take pleasure then in the message?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Yea, just so much as you may take upon a knife's</LINE>
-<LINE>point and choke a daw withal. You have no stomach,</LINE>
-<LINE>signior: fare you well.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Ha! 'Against my will I am sent to bid you come in</LINE>
-<LINE>to dinner;' there's a double meaning in that 'I took</LINE>
-<LINE>no more pains for those thanks than you took pains</LINE>
-<LINE>to thank me.' that's as much as to say, Any pains</LINE>
-<LINE>that I take for you is as easy as thanks. If I do</LINE>
-<LINE>not take pity of her, I am a villain; if I do not</LINE>
-<LINE>love her, I am a Jew. I will go get her picture.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-</SCENE>
-
-</ACT>
-
-<ACT><TITLE>ACT III</TITLE>
-
-<SCENE><TITLE>SCENE I. LEONATO'S garden.</TITLE>
-<STAGEDIR>Enter HERO, MARGARET, and URSULA</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Good Margaret, run thee to the parlor;</LINE>
-<LINE>There shalt thou find my cousin Beatrice</LINE>
-<LINE>Proposing with the prince and Claudio:</LINE>
-<LINE>Whisper her ear and tell her, I and Ursula</LINE>
-<LINE>Walk in the orchard and our whole discourse</LINE>
-<LINE>Is all of her; say that thou overheard'st us;</LINE>
-<LINE>And bid her steal into the pleached bower,</LINE>
-<LINE>Where honeysuckles, ripen'd by the sun,</LINE>
-<LINE>Forbid the sun to enter, like favourites,</LINE>
-<LINE>Made proud by princes, that advance their pride</LINE>
-<LINE>Against that power that bred it: there will she hide her,</LINE>
-<LINE>To listen our purpose. This is thy office;</LINE>
-<LINE>Bear thee well in it and leave us alone.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>I'll make her come, I warrant you, presently.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Now, Ursula, when Beatrice doth come,</LINE>
-<LINE>As we do trace this alley up and down,</LINE>
-<LINE>Our talk must only be of Benedick.</LINE>
-<LINE>When I do name him, let it be thy part</LINE>
-<LINE>To praise him more than ever man did merit:</LINE>
-<LINE>My talk to thee must be how Benedick</LINE>
-<LINE>Is sick in love with Beatrice. Of this matter</LINE>
-<LINE>Is little Cupid's crafty arrow made,</LINE>
-<LINE>That only wounds by hearsay.</LINE>
-<STAGEDIR>Enter BEATRICE, behind</STAGEDIR>
-<LINE>Now begin;</LINE>
-<LINE>For look where Beatrice, like a lapwing, runs</LINE>
-<LINE>Close by the ground, to hear our conference.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>The pleasant'st angling is to see the fish</LINE>
-<LINE>Cut with her golden oars the silver stream,</LINE>
-<LINE>And greedily devour the treacherous bait:</LINE>
-<LINE>So angle we for Beatrice; who even now</LINE>
-<LINE>Is couched in the woodbine coverture.</LINE>
-<LINE>Fear you not my part of the dialogue.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Then go we near her, that her ear lose nothing</LINE>
-<LINE>Of the false sweet bait that we lay for it.</LINE>
-<STAGEDIR>Approaching the bower</STAGEDIR>
-<LINE>No, truly, Ursula, she is too disdainful;</LINE>
-<LINE>I know her spirits are as coy and wild</LINE>
-<LINE>As haggerds of the rock.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>But are you sure</LINE>
-<LINE>That Benedick loves Beatrice so entirely?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>So says the prince and my new-trothed lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>And did they bid you tell her of it, madam?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>They did entreat me to acquaint her of it;</LINE>
-<LINE>But I persuaded them, if they loved Benedick,</LINE>
-<LINE>To wish him wrestle with affection,</LINE>
-<LINE>And never to let Beatrice know of it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Why did you so? Doth not the gentleman</LINE>
-<LINE>Deserve as full as fortunate a bed</LINE>
-<LINE>As ever Beatrice shall couch upon?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>O god of love! I know he doth deserve</LINE>
-<LINE>As much as may be yielded to a man:</LINE>
-<LINE>But Nature never framed a woman's heart</LINE>
-<LINE>Of prouder stuff than that of Beatrice;</LINE>
-<LINE>Disdain and scorn ride sparkling in her eyes,</LINE>
-<LINE>Misprising what they look on, and her wit</LINE>
-<LINE>Values itself so highly that to her</LINE>
-<LINE>All matter else seems weak: she cannot love,</LINE>
-<LINE>Nor take no shape nor project of affection,</LINE>
-<LINE>She is so self-endeared.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Sure, I think so;</LINE>
-<LINE>And therefore certainly it were not good</LINE>
-<LINE>She knew his love, lest she make sport at it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Why, you speak truth. I never yet saw man,</LINE>
-<LINE>How wise, how noble, young, how rarely featured,</LINE>
-<LINE>But she would spell him backward: if fair-faced,</LINE>
-<LINE>She would swear the gentleman should be her sister;</LINE>
-<LINE>If black, why, Nature, drawing of an antique,</LINE>
-<LINE>Made a foul blot; if tall, a lance ill-headed;</LINE>
-<LINE>If low, an agate very vilely cut;</LINE>
-<LINE>If speaking, why, a vane blown with all winds;</LINE>
-<LINE>If silent, why, a block moved with none.</LINE>
-<LINE>So turns she every man the wrong side out</LINE>
-<LINE>And never gives to truth and virtue that</LINE>
-<LINE>Which simpleness and merit purchaseth.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Sure, sure, such carping is not commendable.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>No, not to be so odd and from all fashions</LINE>
-<LINE>As Beatrice is, cannot be commendable:</LINE>
-<LINE>But who dare tell her so? If I should speak,</LINE>
-<LINE>She would mock me into air; O, she would laugh me</LINE>
-<LINE>Out of myself, press me to death with wit.</LINE>
-<LINE>Therefore let Benedick, like cover'd fire,</LINE>
-<LINE>Consume away in sighs, waste inwardly:</LINE>
-<LINE>It were a better death than die with mocks,</LINE>
-<LINE>Which is as bad as die with tickling.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Yet tell her of it: hear what she will say.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>No; rather I will go to Benedick</LINE>
-<LINE>And counsel him to fight against his passion.</LINE>
-<LINE>And, truly, I'll devise some honest slanders</LINE>
-<LINE>To stain my cousin with: one doth not know</LINE>
-<LINE>How much an ill word may empoison liking.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>O, do not do your cousin such a wrong.</LINE>
-<LINE>She cannot be so much without true judgment--</LINE>
-<LINE>Having so swift and excellent a wit</LINE>
-<LINE>As she is prized to have--as to refuse</LINE>
-<LINE>So rare a gentleman as Signior Benedick.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>He is the only man of Italy.</LINE>
-<LINE>Always excepted my dear Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>I pray you, be not angry with me, madam,</LINE>
-<LINE>Speaking my fancy: Signior Benedick,</LINE>
-<LINE>For shape, for bearing, argument and valour,</LINE>
-<LINE>Goes foremost in report through Italy.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Indeed, he hath an excellent good name.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>His excellence did earn it, ere he had it.</LINE>
-<LINE>When are you married, madam?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Why, every day, to-morrow. Come, go in:</LINE>
-<LINE>I'll show thee some attires, and have thy counsel</LINE>
-<LINE>Which is the best to furnish me to-morrow.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>She's limed, I warrant you: we have caught her, madam.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>If it proves so, then loving goes by haps:</LINE>
-<LINE>Some Cupid kills with arrows, some with traps.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt HERO and URSULA</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE><STAGEDIR>Coming forward</STAGEDIR></LINE>
-<LINE>What fire is in mine ears? Can this be true?</LINE>
-<LINE>Stand I condemn'd for pride and scorn so much?</LINE>
-<LINE>Contempt, farewell! and maiden pride, adieu!</LINE>
-<LINE>No glory lives behind the back of such.</LINE>
-<LINE>And, Benedick, love on; I will requite thee,</LINE>
-<LINE>Taming my wild heart to thy loving hand:</LINE>
-<LINE>If thou dost love, my kindness shall incite thee</LINE>
-<LINE>To bind our loves up in a holy band;</LINE>
-<LINE>For others say thou dost deserve, and I</LINE>
-<LINE>Believe it better than reportingly.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE II. A room in LEONATO'S house</TITLE>
-<STAGEDIR>Enter DON PEDRO, CLAUDIO, BENEDICK, and LEONATO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I do but stay till your marriage be consummate, and</LINE>
-<LINE>then go I toward Arragon.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I'll bring you thither, my lord, if you'll</LINE>
-<LINE>vouchsafe me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Nay, that would be as great a soil in the new gloss</LINE>
-<LINE>of your marriage as to show a child his new coat</LINE>
-<LINE>and forbid him to wear it. I will only be bold</LINE>
-<LINE>with Benedick for his company; for, from the crown</LINE>
-<LINE>of his head to the sole of his foot, he is all</LINE>
-<LINE>mirth: he hath twice or thrice cut Cupid's</LINE>
-<LINE>bow-string and the little hangman dare not shoot at</LINE>
-<LINE>him; he hath a heart as sound as a bell and his</LINE>
-<LINE>tongue is the clapper, for what his heart thinks his</LINE>
-<LINE>tongue speaks.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Gallants, I am not as I have been.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>So say I methinks you are sadder.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I hope he be in love.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Hang him, truant! there's no true drop of blood in</LINE>
-<LINE>him, to be truly touched with love: if he be sad,</LINE>
-<LINE>he wants money.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I have the toothache.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Draw it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Hang it!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>You must hang it first, and draw it afterwards.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>What! sigh for the toothache?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Where is but a humour or a worm.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Well, every one can master a grief but he that has</LINE>
-<LINE>it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Yet say I, he is in love.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>There is no appearance of fancy in him, unless it be</LINE>
-<LINE>a fancy that he hath to strange disguises; as, to be</LINE>
-<LINE>a Dutchman today, a Frenchman to-morrow, or in the</LINE>
-<LINE>shape of two countries at once, as, a German from</LINE>
-<LINE>the waist downward, all slops, and a Spaniard from</LINE>
-<LINE>the hip upward, no doublet. Unless he have a fancy</LINE>
-<LINE>to this foolery, as it appears he hath, he is no</LINE>
-<LINE>fool for fancy, as you would have it appear he is.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If he be not in love with some woman, there is no</LINE>
-<LINE>believing old signs: a' brushes his hat o'</LINE>
-<LINE>mornings; what should that bode?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Hath any man seen him at the barber's?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>No, but the barber's man hath been seen with him,</LINE>
-<LINE>and the old ornament of his cheek hath already</LINE>
-<LINE>stuffed tennis-balls.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Indeed, he looks younger than he did, by the loss of a beard.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Nay, a' rubs himself with civet: can you smell him</LINE>
-<LINE>out by that?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>That's as much as to say, the sweet youth's in love.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>The greatest note of it is his melancholy.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And when was he wont to wash his face?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Yea, or to paint himself? for the which, I hear</LINE>
-<LINE>what they say of him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Nay, but his jesting spirit; which is now crept into</LINE>
-<LINE>a lute-string and now governed by stops.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Indeed, that tells a heavy tale for him: conclude,</LINE>
-<LINE>conclude he is in love.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Nay, but I know who loves him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>That would I know too: I warrant, one that knows him not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Yes, and his ill conditions; and, in despite of</LINE>
-<LINE>all, dies for him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>She shall be buried with her face upwards.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Yet is this no charm for the toothache. Old</LINE>
-<LINE>signior, walk aside with me: I have studied eight</LINE>
-<LINE>or nine wise words to speak to you, which these</LINE>
-<LINE>hobby-horses must not hear.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt BENEDICK and LEONATO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>For my life, to break with him about Beatrice.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>'Tis even so. Hero and Margaret have by this</LINE>
-<LINE>played their parts with Beatrice; and then the two</LINE>
-<LINE>bears will not bite one another when they meet.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter DON JOHN</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>My lord and brother, God save you!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Good den, brother.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>If your leisure served, I would speak with you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>In private?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>If it please you: yet Count Claudio may hear; for</LINE>
-<LINE>what I would speak of concerns him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>What's the matter?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE><STAGEDIR>To CLAUDIO</STAGEDIR> Means your lordship to be married</LINE>
-<LINE>to-morrow?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>You know he does.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I know not that, when he knows what I know.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If there be any impediment, I pray you discover it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>You may think I love you not: let that appear</LINE>
-<LINE>hereafter, and aim better at me by that I now will</LINE>
-<LINE>manifest. For my brother, I think he holds you</LINE>
-<LINE>well, and in dearness of heart hath holp to effect</LINE>
-<LINE>your ensuing marriage;--surely suit ill spent and</LINE>
-<LINE>labour ill bestowed.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Why, what's the matter?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I came hither to tell you; and, circumstances</LINE>
-<LINE>shortened, for she has been too long a talking of,</LINE>
-<LINE>the lady is disloyal.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Who, Hero?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Even she; Leonato's Hero, your Hero, every man's Hero:</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Disloyal?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>The word is too good to paint out her wickedness; I</LINE>
-<LINE>could say she were worse: think you of a worse</LINE>
-<LINE>title, and I will fit her to it. Wonder not till</LINE>
-<LINE>further warrant: go but with me to-night, you shall</LINE>
-<LINE>see her chamber-window entered, even the night</LINE>
-<LINE>before her wedding-day: if you love her then,</LINE>
-<LINE>to-morrow wed her; but it would better fit your honour</LINE>
-<LINE>to change your mind.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>May this be so?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I will not think it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>If you dare not trust that you see, confess not</LINE>
-<LINE>that you know: if you will follow me, I will show</LINE>
-<LINE>you enough; and when you have seen more and heard</LINE>
-<LINE>more, proceed accordingly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If I see any thing to-night why I should not marry</LINE>
-<LINE>her to-morrow in the congregation, where I should</LINE>
-<LINE>wed, there will I shame her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>And, as I wooed for thee to obtain her, I will join</LINE>
-<LINE>with thee to disgrace her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>I will disparage her no farther till you are my</LINE>
-<LINE>witnesses: bear it coldly but till midnight, and</LINE>
-<LINE>let the issue show itself.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>O day untowardly turned!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>O mischief strangely thwarting!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>O plague right well prevented! so will you say when</LINE>
-<LINE>you have seen the sequel.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE III. A street.</TITLE>
-<STAGEDIR>Enter DOGBERRY and VERGES with the Watch</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Are you good men and true?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Yea, or else it were pity but they should suffer</LINE>
-<LINE>salvation, body and soul.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Nay, that were a punishment too good for them, if</LINE>
-<LINE>they should have any allegiance in them, being</LINE>
-<LINE>chosen for the prince's watch.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Well, give them their charge, neighbour Dogberry.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>First, who think you the most desertless man to be</LINE>
-<LINE>constable?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>First Watchman</SPEAKER>
-<LINE>Hugh Otecake, sir, or George Seacole; for they can</LINE>
-<LINE>write and read.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Come hither, neighbour Seacole. God hath blessed</LINE>
-<LINE>you with a good name: to be a well-favoured man is</LINE>
-<LINE>the gift of fortune; but to write and read comes by nature.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Second Watchman</SPEAKER>
-<LINE>Both which, master constable,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>You have: I knew it would be your answer. Well,</LINE>
-<LINE>for your favour, sir, why, give God thanks, and make</LINE>
-<LINE>no boast of it; and for your writing and reading,</LINE>
-<LINE>let that appear when there is no need of such</LINE>
-<LINE>vanity. You are thought here to be the most</LINE>
-<LINE>senseless and fit man for the constable of the</LINE>
-<LINE>watch; therefore bear you the lantern. This is your</LINE>
-<LINE>charge: you shall comprehend all vagrom men; you are</LINE>
-<LINE>to bid any man stand, in the prince's name.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Second Watchman</SPEAKER>
-<LINE>How if a' will not stand?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Why, then, take no note of him, but let him go; and</LINE>
-<LINE>presently call the rest of the watch together and</LINE>
-<LINE>thank God you are rid of a knave.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>If he will not stand when he is bidden, he is none</LINE>
-<LINE>of the prince's subjects.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>True, and they are to meddle with none but the</LINE>
-<LINE>prince's subjects. You shall also make no noise in</LINE>
-<LINE>the streets; for, for the watch to babble and to</LINE>
-<LINE>talk is most tolerable and not to be endured.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE>We will rather sleep than talk: we know what</LINE>
-<LINE>belongs to a watch.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Why, you speak like an ancient and most quiet</LINE>
-<LINE>watchman; for I cannot see how sleeping should</LINE>
-<LINE>offend: only, have a care that your bills be not</LINE>
-<LINE>stolen. Well, you are to call at all the</LINE>
-<LINE>ale-houses, and bid those that are drunk get them to bed.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE>How if they will not?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Why, then, let them alone till they are sober: if</LINE>
-<LINE>they make you not then the better answer, you may</LINE>
-<LINE>say they are not the men you took them for.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE>Well, sir.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>If you meet a thief, you may suspect him, by virtue</LINE>
-<LINE>of your office, to be no true man; and, for such</LINE>
-<LINE>kind of men, the less you meddle or make with them,</LINE>
-<LINE>why the more is for your honesty.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE>If we know him to be a thief, shall we not lay</LINE>
-<LINE>hands on him?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Truly, by your office, you may; but I think they</LINE>
-<LINE>that touch pitch will be defiled: the most peaceable</LINE>
-<LINE>way for you, if you do take a thief, is to let him</LINE>
-<LINE>show himself what he is and steal out of your company.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>You have been always called a merciful man, partner.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Truly, I would not hang a dog by my will, much more</LINE>
-<LINE>a man who hath any honesty in him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>If you hear a child cry in the night, you must call</LINE>
-<LINE>to the nurse and bid her still it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE>How if the nurse be asleep and will not hear us?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Why, then, depart in peace, and let the child wake</LINE>
-<LINE>her with crying; for the ewe that will not hear her</LINE>
-<LINE>lamb when it baes will never answer a calf when he bleats.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>'Tis very true.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>This is the end of the charge:--you, constable, are</LINE>
-<LINE>to present the prince's own person: if you meet the</LINE>
-<LINE>prince in the night, you may stay him.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Nay, by'r our lady, that I think a' cannot.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Five shillings to one on't, with any man that knows</LINE>
-<LINE>the statutes, he may stay him: marry, not without</LINE>
-<LINE>the prince be willing; for, indeed, the watch ought</LINE>
-<LINE>to offend no man; and it is an offence to stay a</LINE>
-<LINE>man against his will.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>By'r lady, I think it be so.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Ha, ha, ha! Well, masters, good night: an there be</LINE>
-<LINE>any matter of weight chances, call up me: keep your</LINE>
-<LINE>fellows' counsels and your own; and good night.</LINE>
-<LINE>Come, neighbour.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE>Well, masters, we hear our charge: let us go sit here</LINE>
-<LINE>upon the church-bench till two, and then all to bed.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>One word more, honest neighbours. I pray you watch</LINE>
-<LINE>about Signior Leonato's door; for the wedding being</LINE>
-<LINE>there to-morrow, there is a great coil to-night.</LINE>
-<LINE>Adieu: be vigitant, I beseech you.</LINE>
-</SPEECH>
-
-<STAGEDIR>Exeunt DOGBERRY and VERGES</STAGEDIR>
-<STAGEDIR>Enter BORACHIO and CONRADE</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>What Conrade!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE><STAGEDIR>Aside</STAGEDIR> Peace! stir not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Conrade, I say!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Here, man; I am at thy elbow.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Mass, and my elbow itched; I thought there would a</LINE>
-<LINE>scab follow.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>I will owe thee an answer for that: and now forward</LINE>
-<LINE>with thy tale.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Stand thee close, then, under this pent-house, for</LINE>
-<LINE>it drizzles rain; and I will, like a true drunkard,</LINE>
-<LINE>utter all to thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE><STAGEDIR>Aside</STAGEDIR> Some treason, masters: yet stand close.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Therefore know I have earned of Don John a thousand ducats.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Is it possible that any villany should be so dear?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Thou shouldst rather ask if it were possible any</LINE>
-<LINE>villany should be so rich; for when rich villains</LINE>
-<LINE>have need of poor ones, poor ones may make what</LINE>
-<LINE>price they will.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>I wonder at it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>That shows thou art unconfirmed. Thou knowest that</LINE>
-<LINE>the fashion of a doublet, or a hat, or a cloak, is</LINE>
-<LINE>nothing to a man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Yes, it is apparel.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>I mean, the fashion.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Yes, the fashion is the fashion.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Tush! I may as well say the fool's the fool. But</LINE>
-<LINE>seest thou not what a deformed thief this fashion</LINE>
-<LINE>is?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE><STAGEDIR>Aside</STAGEDIR> I know that Deformed; a' has been a vile</LINE>
-<LINE>thief this seven year; a' goes up and down like a</LINE>
-<LINE>gentleman: I remember his name.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Didst thou not hear somebody?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>No; 'twas the vane on the house.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Seest thou not, I say, what a deformed thief this</LINE>
-<LINE>fashion is? how giddily a' turns about all the hot</LINE>
-<LINE>bloods between fourteen and five-and-thirty?</LINE>
-<LINE>sometimes fashioning them like Pharaoh's soldiers</LINE>
-<LINE>in the reeky painting, sometime like god Bel's</LINE>
-<LINE>priests in the old church-window, sometime like the</LINE>
-<LINE>shaven Hercules in the smirched worm-eaten tapestry,</LINE>
-<LINE>where his codpiece seems as massy as his club?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>All this I see; and I see that the fashion wears</LINE>
-<LINE>out more apparel than the man. But art not thou</LINE>
-<LINE>thyself giddy with the fashion too, that thou hast</LINE>
-<LINE>shifted out of thy tale into telling me of the fashion?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Not so, neither: but know that I have to-night</LINE>
-<LINE>wooed Margaret, the Lady Hero's gentlewoman, by the</LINE>
-<LINE>name of Hero: she leans me out at her mistress'</LINE>
-<LINE>chamber-window, bids me a thousand times good</LINE>
-<LINE>night,--I tell this tale vilely:--I should first</LINE>
-<LINE>tell thee how the prince, Claudio and my master,</LINE>
-<LINE>planted and placed and possessed by my master Don</LINE>
-<LINE>John, saw afar off in the orchard this amiable encounter.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>And thought they Margaret was Hero?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Two of them did, the prince and Claudio; but the</LINE>
-<LINE>devil my master knew she was Margaret; and partly</LINE>
-<LINE>by his oaths, which first possessed them, partly by</LINE>
-<LINE>the dark night, which did deceive them, but chiefly</LINE>
-<LINE>by my villany, which did confirm any slander that</LINE>
-<LINE>Don John had made, away went Claudio enraged; swore</LINE>
-<LINE>he would meet her, as he was appointed, next morning</LINE>
-<LINE>at the temple, and there, before the whole</LINE>
-<LINE>congregation, shame her with what he saw o'er night</LINE>
-<LINE>and send her home again without a husband.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>First Watchman</SPEAKER>
-<LINE>We charge you, in the prince's name, stand!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Second Watchman</SPEAKER>
-<LINE>Call up the right master constable. We have here</LINE>
-<LINE>recovered the most dangerous piece of lechery that</LINE>
-<LINE>ever was known in the commonwealth.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>First Watchman</SPEAKER>
-<LINE>And one Deformed is one of them: I know him; a'</LINE>
-<LINE>wears a lock.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Masters, masters,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Second Watchman</SPEAKER>
-<LINE>You'll be made bring Deformed forth, I warrant you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Masters,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>First Watchman</SPEAKER>
-<LINE>Never speak: we charge you let us obey you to go with us.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>We are like to prove a goodly commodity, being taken</LINE>
-<LINE>up of these men's bills.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>A commodity in question, I warrant you. Come, we'll obey you.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE IV. HERO's apartment.</TITLE>
-<STAGEDIR>Enter HERO, MARGARET, and URSULA</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Good Ursula, wake my cousin Beatrice, and desire</LINE>
-<LINE>her to rise.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>I will, lady.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>And bid her come hither.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Well.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Troth, I think your other rabato were better.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>No, pray thee, good Meg, I'll wear this.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>By my troth, 's not so good; and I warrant your</LINE>
-<LINE>cousin will say so.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>My cousin's a fool, and thou art another: I'll wear</LINE>
-<LINE>none but this.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>I like the new tire within excellently, if the hair</LINE>
-<LINE>were a thought browner; and your gown's a most rare</LINE>
-<LINE>fashion, i' faith. I saw the Duchess of Milan's</LINE>
-<LINE>gown that they praise so.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>O, that exceeds, they say.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>By my troth, 's but a night-gown in respect of</LINE>
-<LINE>yours: cloth o' gold, and cuts, and laced with</LINE>
-<LINE>silver, set with pearls, down sleeves, side sleeves,</LINE>
-<LINE>and skirts, round underborne with a bluish tinsel:</LINE>
-<LINE>but for a fine, quaint, graceful and excellent</LINE>
-<LINE>fashion, yours is worth ten on 't.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>God give me joy to wear it! for my heart is</LINE>
-<LINE>exceeding heavy.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>'Twill be heavier soon by the weight of a man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Fie upon thee! art not ashamed?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Of what, lady? of speaking honourably? Is not</LINE>
-<LINE>marriage honourable in a beggar? Is not your lord</LINE>
-<LINE>honourable without marriage? I think you would have</LINE>
-<LINE>me say, 'saving your reverence, a husband:' and bad</LINE>
-<LINE>thinking do not wrest true speaking, I'll offend</LINE>
-<LINE>nobody: is there any harm in 'the heavier for a</LINE>
-<LINE>husband'? None, I think, and it be the right husband</LINE>
-<LINE>and the right wife; otherwise 'tis light, and not</LINE>
-<LINE>heavy: ask my Lady Beatrice else; here she comes.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter BEATRICE</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Good morrow, coz.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Good morrow, sweet Hero.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Why how now? do you speak in the sick tune?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I am out of all other tune, methinks.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Clap's into 'Light o' love;' that goes without a</LINE>
-<LINE>burden: do you sing it, and I'll dance it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Ye light o' love, with your heels! then, if your</LINE>
-<LINE>husband have stables enough, you'll see he shall</LINE>
-<LINE>lack no barns.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>O illegitimate construction! I scorn that with my heels.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>'Tis almost five o'clock, cousin; tis time you were</LINE>
-<LINE>ready. By my troth, I am exceeding ill: heigh-ho!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>For a hawk, a horse, or a husband?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>For the letter that begins them all, H.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Well, and you be not turned Turk, there's no more</LINE>
-<LINE>sailing by the star.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>What means the fool, trow?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Nothing I; but God send every one their heart's desire!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>These gloves the count sent me; they are an</LINE>
-<LINE>excellent perfume.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I am stuffed, cousin; I cannot smell.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>A maid, and stuffed! there's goodly catching of cold.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>O, God help me! God help me! how long have you</LINE>
-<LINE>professed apprehension?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Even since you left it. Doth not my wit become me rarely?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>It is not seen enough, you should wear it in your</LINE>
-<LINE>cap. By my troth, I am sick.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Get you some of this distilled Carduus Benedictus,</LINE>
-<LINE>and lay it to your heart: it is the only thing for a qualm.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>There thou prickest her with a thistle.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Benedictus! why Benedictus? you have some moral in</LINE>
-<LINE>this Benedictus.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Moral! no, by my troth, I have no moral meaning; I</LINE>
-<LINE>meant, plain holy-thistle. You may think perchance</LINE>
-<LINE>that I think you are in love: nay, by'r lady, I am</LINE>
-<LINE>not such a fool to think what I list, nor I list</LINE>
-<LINE>not to think what I can, nor indeed I cannot think,</LINE>
-<LINE>if I would think my heart out of thinking, that you</LINE>
-<LINE>are in love or that you will be in love or that you</LINE>
-<LINE>can be in love. Yet Benedick was such another, and</LINE>
-<LINE>now is he become a man: he swore he would never</LINE>
-<LINE>marry, and yet now, in despite of his heart, he eats</LINE>
-<LINE>his meat without grudging: and how you may be</LINE>
-<LINE>converted I know not, but methinks you look with</LINE>
-<LINE>your eyes as other women do.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>What pace is this that thy tongue keeps?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Not a false gallop.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Re-enter URSULA</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Madam, withdraw: the prince, the count, Signior</LINE>
-<LINE>Benedick, Don John, and all the gallants of the</LINE>
-<LINE>town, are come to fetch you to church.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Help to dress me, good coz, good Meg, good Ursula.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE V. Another room in LEONATO'S house.</TITLE>
-<STAGEDIR>Enter LEONATO, with DOGBERRY and VERGES</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>What would you with me, honest neighbour?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Marry, sir, I would have some confidence with you</LINE>
-<LINE>that decerns you nearly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Brief, I pray you; for you see it is a busy time with me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Marry, this it is, sir.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Yes, in truth it is, sir.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>What is it, my good friends?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Goodman Verges, sir, speaks a little off the</LINE>
-<LINE>matter: an old man, sir, and his wits are not so</LINE>
-<LINE>blunt as, God help, I would desire they were; but,</LINE>
-<LINE>in faith, honest as the skin between his brows.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Yes, I thank God I am as honest as any man living</LINE>
-<LINE>that is an old man and no honester than I.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Comparisons are odorous: palabras, neighbour Verges.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Neighbours, you are tedious.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>It pleases your worship to say so, but we are the</LINE>
-<LINE>poor duke's officers; but truly, for mine own part,</LINE>
-<LINE>if I were as tedious as a king, I could find it in</LINE>
-<LINE>my heart to bestow it all of your worship.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>All thy tediousness on me, ah?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Yea, an 'twere a thousand pound more than 'tis; for</LINE>
-<LINE>I hear as good exclamation on your worship as of any</LINE>
-<LINE>man in the city; and though I be but a poor man, I</LINE>
-<LINE>am glad to hear it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>And so am I.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I would fain know what you have to say.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Marry, sir, our watch to-night, excepting your</LINE>
-<LINE>worship's presence, ha' ta'en a couple of as arrant</LINE>
-<LINE>knaves as any in Messina.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>A good old man, sir; he will be talking: as they</LINE>
-<LINE>say, when the age is in, the wit is out: God help</LINE>
-<LINE>us! it is a world to see. Well said, i' faith,</LINE>
-<LINE>neighbour Verges: well, God's a good man; an two men</LINE>
-<LINE>ride of a horse, one must ride behind. An honest</LINE>
-<LINE>soul, i' faith, sir; by my troth he is, as ever</LINE>
-<LINE>broke bread; but God is to be worshipped; all men</LINE>
-<LINE>are not alike; alas, good neighbour!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Indeed, neighbour, he comes too short of you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Gifts that God gives.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I must leave you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>One word, sir: our watch, sir, have indeed</LINE>
-<LINE>comprehended two aspicious persons, and we would</LINE>
-<LINE>have them this morning examined before your worship.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Take their examination yourself and bring it me: I</LINE>
-<LINE>am now in great haste, as it may appear unto you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>It shall be suffigance.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Drink some wine ere you go: fare you well.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter a Messenger</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>My lord, they stay for you to give your daughter to</LINE>
-<LINE>her husband.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I'll wait upon them: I am ready.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt LEONATO and Messenger</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Go, good partner, go, get you to Francis Seacole;</LINE>
-<LINE>bid him bring his pen and inkhorn to the gaol: we</LINE>
-<LINE>are now to examination these men.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>And we must do it wisely.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>We will spare for no wit, I warrant you; here's</LINE>
-<LINE>that shall drive some of them to a non-come: only</LINE>
-<LINE>get the learned writer to set down our</LINE>
-<LINE>excommunication and meet me at the gaol.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-</ACT>
-
-<ACT><TITLE>ACT IV</TITLE>
-
-<SCENE><TITLE>SCENE I. A church.</TITLE>
-<STAGEDIR>Enter DON PEDRO, DON JOHN, LEONATO, FRIAR FRANCIS,
-CLAUDIO, BENEDICK, HERO, BEATRICE, and Attendants</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Come, Friar Francis, be brief; only to the plain</LINE>
-<LINE>form of marriage, and you shall recount their</LINE>
-<LINE>particular duties afterwards.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>You come hither, my lord, to marry this lady.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>No.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>To be married to her: friar, you come to marry her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Lady, you come hither to be married to this count.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>I do.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>If either of you know any inward impediment why you</LINE>
-<LINE>should not be conjoined, charge you, on your souls,</LINE>
-<LINE>to utter it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Know you any, Hero?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>None, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Know you any, count?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I dare make his answer, none.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>O, what men dare do! what men may do! what men daily</LINE>
-<LINE>do, not knowing what they do!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>How now! interjections? Why, then, some be of</LINE>
-<LINE>laughing, as, ah, ha, he!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Stand thee by, friar. Father, by your leave:</LINE>
-<LINE>Will you with free and unconstrained soul</LINE>
-<LINE>Give me this maid, your daughter?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>As freely, son, as God did give her me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And what have I to give you back, whose worth</LINE>
-<LINE>May counterpoise this rich and precious gift?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Nothing, unless you render her again.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Sweet prince, you learn me noble thankfulness.</LINE>
-<LINE>There, Leonato, take her back again:</LINE>
-<LINE>Give not this rotten orange to your friend;</LINE>
-<LINE>She's but the sign and semblance of her honour.</LINE>
-<LINE>Behold how like a maid she blushes here!</LINE>
-<LINE>O, what authority and show of truth</LINE>
-<LINE>Can cunning sin cover itself withal!</LINE>
-<LINE>Comes not that blood as modest evidence</LINE>
-<LINE>To witness simple virtue? Would you not swear,</LINE>
-<LINE>All you that see her, that she were a maid,</LINE>
-<LINE>By these exterior shows? But she is none:</LINE>
-<LINE>She knows the heat of a luxurious bed;</LINE>
-<LINE>Her blush is guiltiness, not modesty.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>What do you mean, my lord?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Not to be married,</LINE>
-<LINE>Not to knit my soul to an approved wanton.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Dear my lord, if you, in your own proof,</LINE>
-<LINE>Have vanquish'd the resistance of her youth,</LINE>
-<LINE>And made defeat of her virginity,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I know what you would say: if I have known her,</LINE>
-<LINE>You will say she did embrace me as a husband,</LINE>
-<LINE>And so extenuate the 'forehand sin:</LINE>
-<LINE>No, Leonato,</LINE>
-<LINE>I never tempted her with word too large;</LINE>
-<LINE>But, as a brother to his sister, show'd</LINE>
-<LINE>Bashful sincerity and comely love.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>And seem'd I ever otherwise to you?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Out on thee! Seeming! I will write against it:</LINE>
-<LINE>You seem to me as Dian in her orb,</LINE>
-<LINE>As chaste as is the bud ere it be blown;</LINE>
-<LINE>But you are more intemperate in your blood</LINE>
-<LINE>Than Venus, or those pamper'd animals</LINE>
-<LINE>That rage in savage sensuality.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Is my lord well, that he doth speak so wide?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Sweet prince, why speak not you?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>What should I speak?</LINE>
-<LINE>I stand dishonour'd, that have gone about</LINE>
-<LINE>To link my dear friend to a common stale.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Are these things spoken, or do I but dream?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Sir, they are spoken, and these things are true.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>This looks not like a nuptial.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>True! O God!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Leonato, stand I here?</LINE>
-<LINE>Is this the prince? is this the prince's brother?</LINE>
-<LINE>Is this face Hero's? are our eyes our own?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>All this is so: but what of this, my lord?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Let me but move one question to your daughter;</LINE>
-<LINE>And, by that fatherly and kindly power</LINE>
-<LINE>That you have in her, bid her answer truly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I charge thee do so, as thou art my child.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>O, God defend me! how am I beset!</LINE>
-<LINE>What kind of catechising call you this?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>To make you answer truly to your name.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Is it not Hero? Who can blot that name</LINE>
-<LINE>With any just reproach?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Marry, that can Hero;</LINE>
-<LINE>Hero itself can blot out Hero's virtue.</LINE>
-<LINE>What man was he talk'd with you yesternight</LINE>
-<LINE>Out at your window betwixt twelve and one?</LINE>
-<LINE>Now, if you are a maid, answer to this.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>I talk'd with no man at that hour, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Why, then are you no maiden. Leonato,</LINE>
-<LINE>I am sorry you must hear: upon mine honour,</LINE>
-<LINE>Myself, my brother and this grieved count</LINE>
-<LINE>Did see her, hear her, at that hour last night</LINE>
-<LINE>Talk with a ruffian at her chamber-window</LINE>
-<LINE>Who hath indeed, most like a liberal villain,</LINE>
-<LINE>Confess'd the vile encounters they have had</LINE>
-<LINE>A thousand times in secret.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Fie, fie! they are not to be named, my lord,</LINE>
-<LINE>Not to be spoke of;</LINE>
-<LINE>There is not chastity enough in language</LINE>
-<LINE>Without offence to utter them. Thus, pretty lady,</LINE>
-<LINE>I am sorry for thy much misgovernment.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>O Hero, what a Hero hadst thou been,</LINE>
-<LINE>If half thy outward graces had been placed</LINE>
-<LINE>About thy thoughts and counsels of thy heart!</LINE>
-<LINE>But fare thee well, most foul, most fair! farewell,</LINE>
-<LINE>Thou pure impiety and impious purity!</LINE>
-<LINE>For thee I'll lock up all the gates of love,</LINE>
-<LINE>And on my eyelids shall conjecture hang,</LINE>
-<LINE>To turn all beauty into thoughts of harm,</LINE>
-<LINE>And never shall it more be gracious.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Hath no man's dagger here a point for me?</LINE>
-</SPEECH>
-
-
-<STAGEDIR>HERO swoons</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Why, how now, cousin! wherefore sink you down?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON JOHN</SPEAKER>
-<LINE>Come, let us go. These things, come thus to light,</LINE>
-<LINE>Smother her spirits up.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt DON PEDRO, DON JOHN, and CLAUDIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>How doth the lady?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Dead, I think. Help, uncle!</LINE>
-<LINE>Hero! why, Hero! Uncle! Signior Benedick! Friar!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>O Fate! take not away thy heavy hand.</LINE>
-<LINE>Death is the fairest cover for her shame</LINE>
-<LINE>That may be wish'd for.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>How now, cousin Hero!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Have comfort, lady.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Dost thou look up?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Yea, wherefore should she not?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Wherefore! Why, doth not every earthly thing</LINE>
-<LINE>Cry shame upon her? Could she here deny</LINE>
-<LINE>The story that is printed in her blood?</LINE>
-<LINE>Do not live, Hero; do not ope thine eyes:</LINE>
-<LINE>For, did I think thou wouldst not quickly die,</LINE>
-<LINE>Thought I thy spirits were stronger than thy shames,</LINE>
-<LINE>Myself would, on the rearward of reproaches,</LINE>
-<LINE>Strike at thy life. Grieved I, I had but one?</LINE>
-<LINE>Chid I for that at frugal nature's frame?</LINE>
-<LINE>O, one too much by thee! Why had I one?</LINE>
-<LINE>Why ever wast thou lovely in my eyes?</LINE>
-<LINE>Why had I not with charitable hand</LINE>
-<LINE>Took up a beggar's issue at my gates,</LINE>
-<LINE>Who smirch'd thus and mired with infamy,</LINE>
-<LINE>I might have said 'No part of it is mine;</LINE>
-<LINE>This shame derives itself from unknown loins'?</LINE>
-<LINE>But mine and mine I loved and mine I praised</LINE>
-<LINE>And mine that I was proud on, mine so much</LINE>
-<LINE>That I myself was to myself not mine,</LINE>
-<LINE>Valuing of her,--why, she, O, she is fallen</LINE>
-<LINE>Into a pit of ink, that the wide sea</LINE>
-<LINE>Hath drops too few to wash her clean again</LINE>
-<LINE>And salt too little which may season give</LINE>
-<LINE>To her foul-tainted flesh!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Sir, sir, be patient.</LINE>
-<LINE>For my part, I am so attired in wonder,</LINE>
-<LINE>I know not what to say.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>O, on my soul, my cousin is belied!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Lady, were you her bedfellow last night?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>No, truly not; although, until last night,</LINE>
-<LINE>I have this twelvemonth been her bedfellow.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Confirm'd, confirm'd! O, that is stronger made</LINE>
-<LINE>Which was before barr'd up with ribs of iron!</LINE>
-<LINE>Would the two princes lie, and Claudio lie,</LINE>
-<LINE>Who loved her so, that, speaking of her foulness,</LINE>
-<LINE>Wash'd it with tears? Hence from her! let her die.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Hear me a little; for I have only been</LINE>
-<LINE>Silent so long and given way unto</LINE>
-<LINE>This course of fortune</LINE>
-<LINE>By noting of the lady. I have mark'd</LINE>
-<LINE>A thousand blushing apparitions</LINE>
-<LINE>To start into her face, a thousand innocent shames</LINE>
-<LINE>In angel whiteness beat away those blushes;</LINE>
-<LINE>And in her eye there hath appear'd a fire,</LINE>
-<LINE>To burn the errors that these princes hold</LINE>
-<LINE>Against her maiden truth. Call me a fool;</LINE>
-<LINE>Trust not my reading nor my observations,</LINE>
-<LINE>Which with experimental seal doth warrant</LINE>
-<LINE>The tenor of my book; trust not my age,</LINE>
-<LINE>My reverence, calling, nor divinity,</LINE>
-<LINE>If this sweet lady lie not guiltless here</LINE>
-<LINE>Under some biting error.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Friar, it cannot be.</LINE>
-<LINE>Thou seest that all the grace that she hath left</LINE>
-<LINE>Is that she will not add to her damnation</LINE>
-<LINE>A sin of perjury; she not denies it:</LINE>
-<LINE>Why seek'st thou then to cover with excuse</LINE>
-<LINE>That which appears in proper nakedness?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Lady, what man is he you are accused of?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>They know that do accuse me; I know none:</LINE>
-<LINE>If I know more of any man alive</LINE>
-<LINE>Than that which maiden modesty doth warrant,</LINE>
-<LINE>Let all my sins lack mercy! O my father,</LINE>
-<LINE>Prove you that any man with me conversed</LINE>
-<LINE>At hours unmeet, or that I yesternight</LINE>
-<LINE>Maintain'd the change of words with any creature,</LINE>
-<LINE>Refuse me, hate me, torture me to death!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>There is some strange misprision in the princes.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Two of them have the very bent of honour;</LINE>
-<LINE>And if their wisdoms be misled in this,</LINE>
-<LINE>The practise of it lives in John the bastard,</LINE>
-<LINE>Whose spirits toil in frame of villanies.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I know not. If they speak but truth of her,</LINE>
-<LINE>These hands shall tear her; if they wrong her honour,</LINE>
-<LINE>The proudest of them shall well hear of it.</LINE>
-<LINE>Time hath not yet so dried this blood of mine,</LINE>
-<LINE>Nor age so eat up my invention,</LINE>
-<LINE>Nor fortune made such havoc of my means,</LINE>
-<LINE>Nor my bad life reft me so much of friends,</LINE>
-<LINE>But they shall find, awaked in such a kind,</LINE>
-<LINE>Both strength of limb and policy of mind,</LINE>
-<LINE>Ability in means and choice of friends,</LINE>
-<LINE>To quit me of them throughly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Pause awhile,</LINE>
-<LINE>And let my counsel sway you in this case.</LINE>
-<LINE>Your daughter here the princes left for dead:</LINE>
-<LINE>Let her awhile be secretly kept in,</LINE>
-<LINE>And publish it that she is dead indeed;</LINE>
-<LINE>Maintain a mourning ostentation</LINE>
-<LINE>And on your family's old monument</LINE>
-<LINE>Hang mournful epitaphs and do all rites</LINE>
-<LINE>That appertain unto a burial.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>What shall become of this? what will this do?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Marry, this well carried shall on her behalf</LINE>
-<LINE>Change slander to remorse; that is some good:</LINE>
-<LINE>But not for that dream I on this strange course,</LINE>
-<LINE>But on this travail look for greater birth.</LINE>
-<LINE>She dying, as it must so be maintain'd,</LINE>
-<LINE>Upon the instant that she was accused,</LINE>
-<LINE>Shall be lamented, pitied and excused</LINE>
-<LINE>Of every hearer: for it so falls out</LINE>
-<LINE>That what we have we prize not to the worth</LINE>
-<LINE>Whiles we enjoy it, but being lack'd and lost,</LINE>
-<LINE>Why, then we rack the value, then we find</LINE>
-<LINE>The virtue that possession would not show us</LINE>
-<LINE>Whiles it was ours. So will it fare with Claudio:</LINE>
-<LINE>When he shall hear she died upon his words,</LINE>
-<LINE>The idea of her life shall sweetly creep</LINE>
-<LINE>Into his study of imagination,</LINE>
-<LINE>And every lovely organ of her life</LINE>
-<LINE>Shall come apparell'd in more precious habit,</LINE>
-<LINE>More moving-delicate and full of life,</LINE>
-<LINE>Into the eye and prospect of his soul,</LINE>
-<LINE>Than when she lived indeed; then shall he mourn,</LINE>
-<LINE>If ever love had interest in his liver,</LINE>
-<LINE>And wish he had not so accused her,</LINE>
-<LINE>No, though he thought his accusation true.</LINE>
-<LINE>Let this be so, and doubt not but success</LINE>
-<LINE>Will fashion the event in better shape</LINE>
-<LINE>Than I can lay it down in likelihood.</LINE>
-<LINE>But if all aim but this be levell'd false,</LINE>
-<LINE>The supposition of the lady's death</LINE>
-<LINE>Will quench the wonder of her infamy:</LINE>
-<LINE>And if it sort not well, you may conceal her,</LINE>
-<LINE>As best befits her wounded reputation,</LINE>
-<LINE>In some reclusive and religious life,</LINE>
-<LINE>Out of all eyes, tongues, minds and injuries.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Signior Leonato, let the friar advise you:</LINE>
-<LINE>And though you know my inwardness and love</LINE>
-<LINE>Is very much unto the prince and Claudio,</LINE>
-<LINE>Yet, by mine honour, I will deal in this</LINE>
-<LINE>As secretly and justly as your soul</LINE>
-<LINE>Should with your body.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Being that I flow in grief,</LINE>
-<LINE>The smallest twine may lead me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>'Tis well consented: presently away;</LINE>
-<LINE>For to strange sores strangely they strain the cure.</LINE>
-<LINE>Come, lady, die to live: this wedding-day</LINE>
-<LINE>Perhaps is but prolong'd: have patience and endure.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt all but BENEDICK and BEATRICE</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Lady Beatrice, have you wept all this while?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Yea, and I will weep a while longer.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I will not desire that.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>You have no reason; I do it freely.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Surely I do believe your fair cousin is wronged.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Ah, how much might the man deserve of me that would right her!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Is there any way to show such friendship?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>A very even way, but no such friend.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>May a man do it?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>It is a man's office, but not yours.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I do love nothing in the world so well as you: is</LINE>
-<LINE>not that strange?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>As strange as the thing I know not. It were as</LINE>
-<LINE>possible for me to say I loved nothing so well as</LINE>
-<LINE>you: but believe me not; and yet I lie not; I</LINE>
-<LINE>confess nothing, nor I deny nothing. I am sorry for my cousin.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>By my sword, Beatrice, thou lovest me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Do not swear, and eat it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I will swear by it that you love me; and I will make</LINE>
-<LINE>him eat it that says I love not you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Will you not eat your word?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>With no sauce that can be devised to it. I protest</LINE>
-<LINE>I love thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Why, then, God forgive me!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>What offence, sweet Beatrice?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>You have stayed me in a happy hour: I was about to</LINE>
-<LINE>protest I loved you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>And do it with all thy heart.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I love you with so much of my heart that none is</LINE>
-<LINE>left to protest.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Come, bid me do any thing for thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Kill Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Ha! not for the wide world.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>You kill me to deny it. Farewell.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Tarry, sweet Beatrice.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I am gone, though I am here: there is no love in</LINE>
-<LINE>you: nay, I pray you, let me go.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Beatrice,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>In faith, I will go.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>We'll be friends first.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>You dare easier be friends with me than fight with mine enemy.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Is Claudio thine enemy?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Is he not approved in the height a villain, that</LINE>
-<LINE>hath slandered, scorned, dishonoured my kinswoman? O</LINE>
-<LINE>that I were a man! What, bear her in hand until they</LINE>
-<LINE>come to take hands; and then, with public</LINE>
-<LINE>accusation, uncovered slander, unmitigated rancour,</LINE>
-<LINE>--O God, that I were a man! I would eat his heart</LINE>
-<LINE>in the market-place.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Hear me, Beatrice,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Talk with a man out at a window! A proper saying!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Nay, but, Beatrice,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Sweet Hero! She is wronged, she is slandered, she is undone.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Beat--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Princes and counties! Surely, a princely testimony,</LINE>
-<LINE>a goodly count, Count Comfect; a sweet gallant,</LINE>
-<LINE>surely! O that I were a man for his sake! or that I</LINE>
-<LINE>had any friend would be a man for my sake! But</LINE>
-<LINE>manhood is melted into courtesies, valour into</LINE>
-<LINE>compliment, and men are only turned into tongue, and</LINE>
-<LINE>trim ones too: he is now as valiant as Hercules</LINE>
-<LINE>that only tells a lie and swears it. I cannot be a</LINE>
-<LINE>man with wishing, therefore I will die a woman with grieving.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Tarry, good Beatrice. By this hand, I love thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Use it for my love some other way than swearing by it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Think you in your soul the Count Claudio hath wronged Hero?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Yea, as sure as I have a thought or a soul.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Enough, I am engaged; I will challenge him. I will</LINE>
-<LINE>kiss your hand, and so I leave you. By this hand,</LINE>
-<LINE>Claudio shall render me a dear account. As you</LINE>
-<LINE>hear of me, so think of me. Go, comfort your</LINE>
-<LINE>cousin: I must say she is dead: and so, farewell.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE II. A prison.</TITLE>
-<STAGEDIR>Enter DOGBERRY, VERGES, and Sexton, in gowns; and
-the Watch, with CONRADE and BORACHIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Is our whole dissembly appeared?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>O, a stool and a cushion for the sexton.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Sexton</SPEAKER>
-<LINE>Which be the malefactors?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Marry, that am I and my partner.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Nay, that's certain; we have the exhibition to examine.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Sexton</SPEAKER>
-<LINE>But which are the offenders that are to be</LINE>
-<LINE>examined? let them come before master constable.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Yea, marry, let them come before me. What is your</LINE>
-<LINE>name, friend?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Borachio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Pray, write down, Borachio. Yours, sirrah?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>I am a gentleman, sir, and my name is Conrade.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Write down, master gentleman Conrade. Masters, do</LINE>
-<LINE>you serve God?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Yea, sir, we hope.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Write down, that they hope they serve God: and</LINE>
-<LINE>write God first; for God defend but God should go</LINE>
-<LINE>before such villains! Masters, it is proved already</LINE>
-<LINE>that you are little better than false knaves; and it</LINE>
-<LINE>will go near to be thought so shortly. How answer</LINE>
-<LINE>you for yourselves?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Marry, sir, we say we are none.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>A marvellous witty fellow, I assure you: but I</LINE>
-<LINE>will go about with him. Come you hither, sirrah; a</LINE>
-<LINE>word in your ear: sir, I say to you, it is thought</LINE>
-<LINE>you are false knaves.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Sir, I say to you we are none.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Well, stand aside. 'Fore God, they are both in a</LINE>
-<LINE>tale. Have you writ down, that they are none?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Sexton</SPEAKER>
-<LINE>Master constable, you go not the way to examine:</LINE>
-<LINE>you must call forth the watch that are their accusers.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Yea, marry, that's the eftest way. Let the watch</LINE>
-<LINE>come forth. Masters, I charge you, in the prince's</LINE>
-<LINE>name, accuse these men.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>First Watchman</SPEAKER>
-<LINE>This man said, sir, that Don John, the prince's</LINE>
-<LINE>brother, was a villain.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Write down Prince John a villain. Why, this is flat</LINE>
-<LINE>perjury, to call a prince's brother villain.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Master constable,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Pray thee, fellow, peace: I do not like thy look,</LINE>
-<LINE>I promise thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Sexton</SPEAKER>
-<LINE>What heard you him say else?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Second Watchman</SPEAKER>
-<LINE>Marry, that he had received a thousand ducats of</LINE>
-<LINE>Don John for accusing the Lady Hero wrongfully.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Flat burglary as ever was committed.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Yea, by mass, that it is.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Sexton</SPEAKER>
-<LINE>What else, fellow?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>First Watchman</SPEAKER>
-<LINE>And that Count Claudio did mean, upon his words, to</LINE>
-<LINE>disgrace Hero before the whole assembly. and not marry her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>O villain! thou wilt be condemned into everlasting</LINE>
-<LINE>redemption for this.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Sexton</SPEAKER>
-<LINE>What else?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Watchman</SPEAKER>
-<LINE>This is all.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Sexton</SPEAKER>
-<LINE>And this is more, masters, than you can deny.</LINE>
-<LINE>Prince John is this morning secretly stolen away;</LINE>
-<LINE>Hero was in this manner accused, in this very manner</LINE>
-<LINE>refused, and upon the grief of this suddenly died.</LINE>
-<LINE>Master constable, let these men be bound, and</LINE>
-<LINE>brought to Leonato's: I will go before and show</LINE>
-<LINE>him their examination.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Come, let them be opinioned.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Let them be in the hands--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Off, coxcomb!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>God's my life, where's the sexton? let him write</LINE>
-<LINE>down the prince's officer coxcomb. Come, bind them.</LINE>
-<LINE>Thou naughty varlet!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CONRADE</SPEAKER>
-<LINE>Away! you are an ass, you are an ass.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Dost thou not suspect my place? dost thou not</LINE>
-<LINE>suspect my years? O that he were here to write me</LINE>
-<LINE>down an ass! But, masters, remember that I am an</LINE>
-<LINE>ass; though it be not written down, yet forget not</LINE>
-<LINE>that I am an ass. No, thou villain, thou art full of</LINE>
-<LINE>piety, as shall be proved upon thee by good witness.</LINE>
-<LINE>I am a wise fellow, and, which is more, an officer,</LINE>
-<LINE>and, which is more, a householder, and, which is</LINE>
-<LINE>more, as pretty a piece of flesh as any is in</LINE>
-<LINE>Messina, and one that knows the law, go to; and a</LINE>
-<LINE>rich fellow enough, go to; and a fellow that hath</LINE>
-<LINE>had losses, and one that hath two gowns and every</LINE>
-<LINE>thing handsome about him. Bring him away. O that</LINE>
-<LINE>I had been writ down an ass!</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-</ACT>
-
-<ACT><TITLE>ACT V</TITLE>
-
-<SCENE><TITLE>SCENE I. Before LEONATO'S house.</TITLE>
-<STAGEDIR>Enter LEONATO and ANTONIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>If you go on thus, you will kill yourself:</LINE>
-<LINE>And 'tis not wisdom thus to second grief</LINE>
-<LINE>Against yourself.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I pray thee, cease thy counsel,</LINE>
-<LINE>Which falls into mine ears as profitless</LINE>
-<LINE>As water in a sieve: give not me counsel;</LINE>
-<LINE>Nor let no comforter delight mine ear</LINE>
-<LINE>But such a one whose wrongs do suit with mine.</LINE>
-<LINE>Bring me a father that so loved his child,</LINE>
-<LINE>Whose joy of her is overwhelm'd like mine,</LINE>
-<LINE>And bid him speak of patience;</LINE>
-<LINE>Measure his woe the length and breadth of mine</LINE>
-<LINE>And let it answer every strain for strain,</LINE>
-<LINE>As thus for thus and such a grief for such,</LINE>
-<LINE>In every lineament, branch, shape, and form:</LINE>
-<LINE>If such a one will smile and stroke his beard,</LINE>
-<LINE>Bid sorrow wag, cry 'hem!' when he should groan,</LINE>
-<LINE>Patch grief with proverbs, make misfortune drunk</LINE>
-<LINE>With candle-wasters; bring him yet to me,</LINE>
-<LINE>And I of him will gather patience.</LINE>
-<LINE>But there is no such man: for, brother, men</LINE>
-<LINE>Can counsel and speak comfort to that grief</LINE>
-<LINE>Which they themselves not feel; but, tasting it,</LINE>
-<LINE>Their counsel turns to passion, which before</LINE>
-<LINE>Would give preceptial medicine to rage,</LINE>
-<LINE>Fetter strong madness in a silken thread,</LINE>
-<LINE>Charm ache with air and agony with words:</LINE>
-<LINE>No, no; 'tis all men's office to speak patience</LINE>
-<LINE>To those that wring under the load of sorrow,</LINE>
-<LINE>But no man's virtue nor sufficiency</LINE>
-<LINE>To be so moral when he shall endure</LINE>
-<LINE>The like himself. Therefore give me no counsel:</LINE>
-<LINE>My griefs cry louder than advertisement.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Therein do men from children nothing differ.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I pray thee, peace. I will be flesh and blood;</LINE>
-<LINE>For there was never yet philosopher</LINE>
-<LINE>That could endure the toothache patiently,</LINE>
-<LINE>However they have writ the style of gods</LINE>
-<LINE>And made a push at chance and sufferance.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Yet bend not all the harm upon yourself;</LINE>
-<LINE>Make those that do offend you suffer too.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>There thou speak'st reason: nay, I will do so.</LINE>
-<LINE>My soul doth tell me Hero is belied;</LINE>
-<LINE>And that shall Claudio know; so shall the prince</LINE>
-<LINE>And all of them that thus dishonour her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Here comes the prince and Claudio hastily.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter DON PEDRO and CLAUDIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Good den, good den.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Good day to both of you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Hear you. my lords,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>We have some haste, Leonato.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Some haste, my lord! well, fare you well, my lord:</LINE>
-<LINE>Are you so hasty now? well, all is one.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Nay, do not quarrel with us, good old man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>If he could right himself with quarreling,</LINE>
-<LINE>Some of us would lie low.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Who wrongs him?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Marry, thou dost wrong me; thou dissembler, thou:--</LINE>
-<LINE>Nay, never lay thy hand upon thy sword;</LINE>
-<LINE>I fear thee not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Marry, beshrew my hand,</LINE>
-<LINE>If it should give your age such cause of fear:</LINE>
-<LINE>In faith, my hand meant nothing to my sword.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Tush, tush, man; never fleer and jest at me:</LINE>
-<LINE>I speak not like a dotard nor a fool,</LINE>
-<LINE>As under privilege of age to brag</LINE>
-<LINE>What I have done being young, or what would do</LINE>
-<LINE>Were I not old. Know, Claudio, to thy head,</LINE>
-<LINE>Thou hast so wrong'd mine innocent child and me</LINE>
-<LINE>That I am forced to lay my reverence by</LINE>
-<LINE>And, with grey hairs and bruise of many days,</LINE>
-<LINE>Do challenge thee to trial of a man.</LINE>
-<LINE>I say thou hast belied mine innocent child;</LINE>
-<LINE>Thy slander hath gone through and through her heart,</LINE>
-<LINE>And she lies buried with her ancestors;</LINE>
-<LINE>O, in a tomb where never scandal slept,</LINE>
-<LINE>Save this of hers, framed by thy villany!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>My villany?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Thine, Claudio; thine, I say.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>You say not right, old man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>My lord, my lord,</LINE>
-<LINE>I'll prove it on his body, if he dare,</LINE>
-<LINE>Despite his nice fence and his active practise,</LINE>
-<LINE>His May of youth and bloom of lustihood.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Away! I will not have to do with you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Canst thou so daff me? Thou hast kill'd my child:</LINE>
-<LINE>If thou kill'st me, boy, thou shalt kill a man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>He shall kill two of us, and men indeed:</LINE>
-<LINE>But that's no matter; let him kill one first;</LINE>
-<LINE>Win me and wear me; let him answer me.</LINE>
-<LINE>Come, follow me, boy; come, sir boy, come, follow me:</LINE>
-<LINE>Sir boy, I'll whip you from your foining fence;</LINE>
-<LINE>Nay, as I am a gentleman, I will.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Brother,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Content yourself. God knows I loved my niece;</LINE>
-<LINE>And she is dead, slander'd to death by villains,</LINE>
-<LINE>That dare as well answer a man indeed</LINE>
-<LINE>As I dare take a serpent by the tongue:</LINE>
-<LINE>Boys, apes, braggarts, Jacks, milksops!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Brother Antony,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Hold you content. What, man! I know them, yea,</LINE>
-<LINE>And what they weigh, even to the utmost scruple,--</LINE>
-<LINE>Scrambling, out-facing, fashion-monging boys,</LINE>
-<LINE>That lie and cog and flout, deprave and slander,</LINE>
-<LINE>Go anticly, show outward hideousness,</LINE>
-<LINE>And speak off half a dozen dangerous words,</LINE>
-<LINE>How they might hurt their enemies, if they durst;</LINE>
-<LINE>And this is all.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>But, brother Antony,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Come, 'tis no matter:</LINE>
-<LINE>Do not you meddle; let me deal in this.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Gentlemen both, we will not wake your patience.</LINE>
-<LINE>My heart is sorry for your daughter's death:</LINE>
-<LINE>But, on my honour, she was charged with nothing</LINE>
-<LINE>But what was true and very full of proof.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>My lord, my lord,--</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I will not hear you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>No? Come, brother; away! I will be heard.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>And shall, or some of us will smart for it.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt LEONATO and ANTONIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>See, see; here comes the man we went to seek.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter BENEDICK</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Now, signior, what news?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Good day, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Welcome, signior: you are almost come to part</LINE>
-<LINE>almost a fray.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>We had like to have had our two noses snapped off</LINE>
-<LINE>with two old men without teeth.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Leonato and his brother. What thinkest thou? Had</LINE>
-<LINE>we fought, I doubt we should have been too young for them.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>In a false quarrel there is no true valour. I came</LINE>
-<LINE>to seek you both.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>We have been up and down to seek thee; for we are</LINE>
-<LINE>high-proof melancholy and would fain have it beaten</LINE>
-<LINE>away. Wilt thou use thy wit?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>It is in my scabbard: shall I draw it?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Dost thou wear thy wit by thy side?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Never any did so, though very many have been beside</LINE>
-<LINE>their wit. I will bid thee draw, as we do the</LINE>
-<LINE>minstrels; draw, to pleasure us.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>As I am an honest man, he looks pale. Art thou</LINE>
-<LINE>sick, or angry?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>What, courage, man! What though care killed a cat,</LINE>
-<LINE>thou hast mettle enough in thee to kill care.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Sir, I shall meet your wit in the career, and you</LINE>
-<LINE>charge it against me. I pray you choose another subject.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Nay, then, give him another staff: this last was</LINE>
-<LINE>broke cross.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>By this light, he changes more and more: I think</LINE>
-<LINE>he be angry indeed.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>If he be, he knows how to turn his girdle.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Shall I speak a word in your ear?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>God bless me from a challenge!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE><STAGEDIR>Aside to CLAUDIO</STAGEDIR> You are a villain; I jest not:</LINE>
-<LINE>I will make it good how you dare, with what you</LINE>
-<LINE>dare, and when you dare. Do me right, or I will</LINE>
-<LINE>protest your cowardice. You have killed a sweet</LINE>
-<LINE>lady, and her death shall fall heavy on you. Let me</LINE>
-<LINE>hear from you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Well, I will meet you, so I may have good cheer.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>What, a feast, a feast?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I' faith, I thank him; he hath bid me to a calf's</LINE>
-<LINE>head and a capon; the which if I do not carve most</LINE>
-<LINE>curiously, say my knife's naught. Shall I not find</LINE>
-<LINE>a woodcock too?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Sir, your wit ambles well; it goes easily.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>I'll tell thee how Beatrice praised thy wit the</LINE>
-<LINE>other day. I said, thou hadst a fine wit: 'True,'</LINE>
-<LINE>said she, 'a fine little one.' 'No,' said I, 'a</LINE>
-<LINE>great wit:' 'Right,' says she, 'a great gross one.'</LINE>
-<LINE>'Nay,' said I, 'a good wit:' 'Just,' said she, 'it</LINE>
-<LINE>hurts nobody.' 'Nay,' said I, 'the gentleman</LINE>
-<LINE>is wise:' 'Certain,' said she, 'a wise gentleman.'</LINE>
-<LINE>'Nay,' said I, 'he hath the tongues:' 'That I</LINE>
-<LINE>believe,' said she, 'for he swore a thing to me on</LINE>
-<LINE>Monday night, which he forswore on Tuesday morning;</LINE>
-<LINE>there's a double tongue; there's two tongues.' Thus</LINE>
-<LINE>did she, an hour together, transshape thy particular</LINE>
-<LINE>virtues: yet at last she concluded with a sigh, thou</LINE>
-<LINE>wast the properest man in Italy.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>For the which she wept heartily and said she cared</LINE>
-<LINE>not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Yea, that she did: but yet, for all that, an if she</LINE>
-<LINE>did not hate him deadly, she would love him dearly:</LINE>
-<LINE>the old man's daughter told us all.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>All, all; and, moreover, God saw him when he was</LINE>
-<LINE>hid in the garden.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>But when shall we set the savage bull's horns on</LINE>
-<LINE>the sensible Benedick's head?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Yea, and text underneath, 'Here dwells Benedick the</LINE>
-<LINE>married man'?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Fare you well, boy: you know my mind. I will leave</LINE>
-<LINE>you now to your gossip-like humour: you break jests</LINE>
-<LINE>as braggarts do their blades, which God be thanked,</LINE>
-<LINE>hurt not. My lord, for your many courtesies I thank</LINE>
-<LINE>you: I must discontinue your company: your brother</LINE>
-<LINE>the bastard is fled from Messina: you have among</LINE>
-<LINE>you killed a sweet and innocent lady. For my Lord</LINE>
-<LINE>Lackbeard there, he and I shall meet: and, till</LINE>
-<LINE>then, peace be with him.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>He is in earnest.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>In most profound earnest; and, I'll warrant you, for</LINE>
-<LINE>the love of Beatrice.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>And hath challenged thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Most sincerely.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>What a pretty thing man is when he goes in his</LINE>
-<LINE>doublet and hose and leaves off his wit!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>He is then a giant to an ape; but then is an ape a</LINE>
-<LINE>doctor to such a man.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>But, soft you, let me be: pluck up, my heart, and</LINE>
-<LINE>be sad. Did he not say, my brother was fled?</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter DOGBERRY, VERGES, and the Watch, with CONRADE
-and BORACHIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Come you, sir: if justice cannot tame you, she</LINE>
-<LINE>shall ne'er weigh more reasons in her balance: nay,</LINE>
-<LINE>an you be a cursing hypocrite once, you must be looked to.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>How now? two of my brother's men bound! Borachio</LINE>
-<LINE>one!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Hearken after their offence, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Officers, what offence have these men done?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Marry, sir, they have committed false report;</LINE>
-<LINE>moreover, they have spoken untruths; secondarily,</LINE>
-<LINE>they are slanders; sixth and lastly, they have</LINE>
-<LINE>belied a lady; thirdly, they have verified unjust</LINE>
-<LINE>things; and, to conclude, they are lying knaves.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>First, I ask thee what they have done; thirdly, I</LINE>
-<LINE>ask thee what's their offence; sixth and lastly, why</LINE>
-<LINE>they are committed; and, to conclude, what you lay</LINE>
-<LINE>to their charge.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Rightly reasoned, and in his own division: and, by</LINE>
-<LINE>my troth, there's one meaning well suited.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Who have you offended, masters, that you are thus</LINE>
-<LINE>bound to your answer? this learned constable is</LINE>
-<LINE>too cunning to be understood: what's your offence?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Sweet prince, let me go no farther to mine answer:</LINE>
-<LINE>do you hear me, and let this count kill me. I have</LINE>
-<LINE>deceived even your very eyes: what your wisdoms</LINE>
-<LINE>could not discover, these shallow fools have brought</LINE>
-<LINE>to light: who in the night overheard me confessing</LINE>
-<LINE>to this man how Don John your brother incensed me</LINE>
-<LINE>to slander the Lady Hero, how you were brought into</LINE>
-<LINE>the orchard and saw me court Margaret in Hero's</LINE>
-<LINE>garments, how you disgraced her, when you should</LINE>
-<LINE>marry her: my villany they have upon record; which</LINE>
-<LINE>I had rather seal with my death than repeat over</LINE>
-<LINE>to my shame. The lady is dead upon mine and my</LINE>
-<LINE>master's false accusation; and, briefly, I desire</LINE>
-<LINE>nothing but the reward of a villain.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Runs not this speech like iron through your blood?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I have drunk poison whiles he utter'd it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>But did my brother set thee on to this?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Yea, and paid me richly for the practise of it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>He is composed and framed of treachery:</LINE>
-<LINE>And fled he is upon this villany.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Sweet Hero! now thy image doth appear</LINE>
-<LINE>In the rare semblance that I loved it first.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Come, bring away the plaintiffs: by this time our</LINE>
-<LINE>sexton hath reformed Signior Leonato of the matter:</LINE>
-<LINE>and, masters, do not forget to specify, when time</LINE>
-<LINE>and place shall serve, that I am an ass.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>VERGES</SPEAKER>
-<LINE>Here, here comes master Signior Leonato, and the</LINE>
-<LINE>Sexton too.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Re-enter LEONATO and ANTONIO, with the Sexton</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Which is the villain? let me see his eyes,</LINE>
-<LINE>That, when I note another man like him,</LINE>
-<LINE>I may avoid him: which of these is he?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>If you would know your wronger, look on me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Art thou the slave that with thy breath hast kill'd</LINE>
-<LINE>Mine innocent child?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>Yea, even I alone.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>No, not so, villain; thou beliest thyself:</LINE>
-<LINE>Here stand a pair of honourable men;</LINE>
-<LINE>A third is fled, that had a hand in it.</LINE>
-<LINE>I thank you, princes, for my daughter's death:</LINE>
-<LINE>Record it with your high and worthy deeds:</LINE>
-<LINE>'Twas bravely done, if you bethink you of it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I know not how to pray your patience;</LINE>
-<LINE>Yet I must speak. Choose your revenge yourself;</LINE>
-<LINE>Impose me to what penance your invention</LINE>
-<LINE>Can lay upon my sin: yet sinn'd I not</LINE>
-<LINE>But in mistaking.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>By my soul, nor I:</LINE>
-<LINE>And yet, to satisfy this good old man,</LINE>
-<LINE>I would bend under any heavy weight</LINE>
-<LINE>That he'll enjoin me to.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I cannot bid you bid my daughter live;</LINE>
-<LINE>That were impossible: but, I pray you both,</LINE>
-<LINE>Possess the people in Messina here</LINE>
-<LINE>How innocent she died; and if your love</LINE>
-<LINE>Can labour ought in sad invention,</LINE>
-<LINE>Hang her an epitaph upon her tomb</LINE>
-<LINE>And sing it to her bones, sing it to-night:</LINE>
-<LINE>To-morrow morning come you to my house,</LINE>
-<LINE>And since you could not be my son-in-law,</LINE>
-<LINE>Be yet my nephew: my brother hath a daughter,</LINE>
-<LINE>Almost the copy of my child that's dead,</LINE>
-<LINE>And she alone is heir to both of us:</LINE>
-<LINE>Give her the right you should have given her cousin,</LINE>
-<LINE>And so dies my revenge.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>O noble sir,</LINE>
-<LINE>Your over-kindness doth wring tears from me!</LINE>
-<LINE>I do embrace your offer; and dispose</LINE>
-<LINE>For henceforth of poor Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>To-morrow then I will expect your coming;</LINE>
-<LINE>To-night I take my leave. This naughty man</LINE>
-<LINE>Shall face to face be brought to Margaret,</LINE>
-<LINE>Who I believe was pack'd in all this wrong,</LINE>
-<LINE>Hired to it by your brother.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BORACHIO</SPEAKER>
-<LINE>No, by my soul, she was not,</LINE>
-<LINE>Nor knew not what she did when she spoke to me,</LINE>
-<LINE>But always hath been just and virtuous</LINE>
-<LINE>In any thing that I do know by her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Moreover, sir, which indeed is not under white and</LINE>
-<LINE>black, this plaintiff here, the offender, did call</LINE>
-<LINE>me ass: I beseech you, let it be remembered in his</LINE>
-<LINE>punishment. And also, the watch heard them talk of</LINE>
-<LINE>one Deformed: they say be wears a key in his ear and</LINE>
-<LINE>a lock hanging by it, and borrows money in God's</LINE>
-<LINE>name, the which he hath used so long and never paid</LINE>
-<LINE>that now men grow hard-hearted and will lend nothing</LINE>
-<LINE>for God's sake: pray you, examine him upon that point.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>I thank thee for thy care and honest pains.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>Your worship speaks like a most thankful and</LINE>
-<LINE>reverend youth; and I praise God for you.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>There's for thy pains.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>God save the foundation!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Go, I discharge thee of thy prisoner, and I thank thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DOGBERRY</SPEAKER>
-<LINE>I leave an arrant knave with your worship; which I</LINE>
-<LINE>beseech your worship to correct yourself, for the</LINE>
-<LINE>example of others. God keep your worship! I wish</LINE>
-<LINE>your worship well; God restore you to health! I</LINE>
-<LINE>humbly give you leave to depart; and if a merry</LINE>
-<LINE>meeting may be wished, God prohibit it! Come, neighbour.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt DOGBERRY and VERGES</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Until to-morrow morning, lords, farewell.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Farewell, my lords: we look for you to-morrow.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>We will not fail.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>To-night I'll mourn with Hero.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE><STAGEDIR>To the Watch</STAGEDIR> Bring you these fellows on. We'll</LINE>
-<LINE>talk with Margaret,</LINE>
-<LINE>How her acquaintance grew with this lewd fellow.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt, severally</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE II. LEONATO'S garden.</TITLE>
-<STAGEDIR>Enter BENEDICK and MARGARET, meeting</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Pray thee, sweet Mistress Margaret, deserve well at</LINE>
-<LINE>my hands by helping me to the speech of Beatrice.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Will you then write me a sonnet in praise of my beauty?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>In so high a style, Margaret, that no man living</LINE>
-<LINE>shall come over it; for, in most comely truth, thou</LINE>
-<LINE>deservest it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>To have no man come over me! why, shall I always</LINE>
-<LINE>keep below stairs?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Thy wit is as quick as the greyhound's mouth; it catches.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>And yours as blunt as the fencer's foils, which hit,</LINE>
-<LINE>but hurt not.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>A most manly wit, Margaret; it will not hurt a</LINE>
-<LINE>woman: and so, I pray thee, call Beatrice: I give</LINE>
-<LINE>thee the bucklers.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Give us the swords; we have bucklers of our own.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>If you use them, Margaret, you must put in the</LINE>
-<LINE>pikes with a vice; and they are dangerous weapons for maids.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>MARGARET</SPEAKER>
-<LINE>Well, I will call Beatrice to you, who I think hath legs.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>And therefore will come.</LINE>
-<STAGEDIR>Exit MARGARET</STAGEDIR>
-<STAGEDIR>Sings</STAGEDIR>
-<LINE>The god of love,</LINE>
-<LINE>That sits above,</LINE>
-<LINE>And knows me, and knows me,</LINE>
-<LINE>How pitiful I deserve,--</LINE>
-<LINE>I mean in singing; but in loving, Leander the good</LINE>
-<LINE>swimmer, Troilus the first employer of panders, and</LINE>
-<LINE>a whole bookful of these quondam carpet-mangers,</LINE>
-<LINE>whose names yet run smoothly in the even road of a</LINE>
-<LINE>blank verse, why, they were never so truly turned</LINE>
-<LINE>over and over as my poor self in love. Marry, I</LINE>
-<LINE>cannot show it in rhyme; I have tried: I can find</LINE>
-<LINE>out no rhyme to 'lady' but 'baby,' an innocent</LINE>
-<LINE>rhyme; for 'scorn,' 'horn,' a hard rhyme; for,</LINE>
-<LINE>'school,' 'fool,' a babbling rhyme; very ominous</LINE>
-<LINE>endings: no, I was not born under a rhyming planet,</LINE>
-<LINE>nor I cannot woo in festival terms.</LINE>
-<STAGEDIR>Enter BEATRICE</STAGEDIR>
-<LINE>Sweet Beatrice, wouldst thou come when I called thee?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Yea, signior, and depart when you bid me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>O, stay but till then!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>'Then' is spoken; fare you well now: and yet, ere</LINE>
-<LINE>I go, let me go with that I came; which is, with</LINE>
-<LINE>knowing what hath passed between you and Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Only foul words; and thereupon I will kiss thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Foul words is but foul wind, and foul wind is but</LINE>
-<LINE>foul breath, and foul breath is noisome; therefore I</LINE>
-<LINE>will depart unkissed.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Thou hast frighted the word out of his right sense,</LINE>
-<LINE>so forcible is thy wit. But I must tell thee</LINE>
-<LINE>plainly, Claudio undergoes my challenge; and either</LINE>
-<LINE>I must shortly hear from him, or I will subscribe</LINE>
-<LINE>him a coward. And, I pray thee now, tell me for</LINE>
-<LINE>which of my bad parts didst thou first fall in love with me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>For them all together; which maintained so politic</LINE>
-<LINE>a state of evil that they will not admit any good</LINE>
-<LINE>part to intermingle with them. But for which of my</LINE>
-<LINE>good parts did you first suffer love for me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Suffer love! a good epithet! I do suffer love</LINE>
-<LINE>indeed, for I love thee against my will.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>In spite of your heart, I think; alas, poor heart!</LINE>
-<LINE>If you spite it for my sake, I will spite it for</LINE>
-<LINE>yours; for I will never love that which my friend hates.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Thou and I are too wise to woo peaceably.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>It appears not in this confession: there's not one</LINE>
-<LINE>wise man among twenty that will praise himself.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>An old, an old instance, Beatrice, that lived in</LINE>
-<LINE>the lime of good neighbours. If a man do not erect</LINE>
-<LINE>in this age his own tomb ere he dies, he shall live</LINE>
-<LINE>no longer in monument than the bell rings and the</LINE>
-<LINE>widow weeps.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>And how long is that, think you?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Question: why, an hour in clamour and a quarter in</LINE>
-<LINE>rheum: therefore is it most expedient for the</LINE>
-<LINE>wise, if Don Worm, his conscience, find no</LINE>
-<LINE>impediment to the contrary, to be the trumpet of his</LINE>
-<LINE>own virtues, as I am to myself. So much for</LINE>
-<LINE>praising myself, who, I myself will bear witness, is</LINE>
-<LINE>praiseworthy: and now tell me, how doth your cousin?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Very ill.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>And how do you?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Very ill too.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Serve God, love me and mend. There will I leave</LINE>
-<LINE>you too, for here comes one in haste.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter URSULA</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>URSULA</SPEAKER>
-<LINE>Madam, you must come to your uncle. Yonder's old</LINE>
-<LINE>coil at home: it is proved my Lady Hero hath been</LINE>
-<LINE>falsely accused, the prince and Claudio mightily</LINE>
-<LINE>abused; and Don John is the author of all, who is</LINE>
-<LINE>fed and gone. Will you come presently?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Will you go hear this news, signior?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I will live in thy heart, die in thy lap, and be</LINE>
-<LINE>buried in thy eyes; and moreover I will go with</LINE>
-<LINE>thee to thy uncle's.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE III. A church.</TITLE>
-<STAGEDIR>Enter DON PEDRO, CLAUDIO, and three or four
-with tapers</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Is this the monument of Leonato?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>Lord</SPEAKER>
-<LINE>It is, my lord.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE><STAGEDIR>Reading out of a scroll</STAGEDIR></LINE>
-<LINE>Done to death by slanderous tongues</LINE>
-<LINE>Was the Hero that here lies:</LINE>
-<LINE>Death, in guerdon of her wrongs,</LINE>
-<LINE>Gives her fame which never dies.</LINE>
-<LINE>So the life that died with shame</LINE>
-<LINE>Lives in death with glorious fame.</LINE>
-<LINE>Hang thou there upon the tomb,</LINE>
-<LINE>Praising her when I am dumb.</LINE>
-<LINE>Now, music, sound, and sing your solemn hymn.</LINE>
-<SUBHEAD>SONG.</SUBHEAD>
-<LINE>Pardon, goddess of the night,</LINE>
-<LINE>Those that slew thy virgin knight;</LINE>
-<LINE>For the which, with songs of woe,</LINE>
-<LINE>Round about her tomb they go.</LINE>
-<LINE>Midnight, assist our moan;</LINE>
-<LINE>Help us to sigh and groan,</LINE>
-<LINE>Heavily, heavily:</LINE>
-<LINE>Graves, yawn and yield your dead,</LINE>
-<LINE>Till death be uttered,</LINE>
-<LINE>Heavily, heavily.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Now, unto thy bones good night!</LINE>
-<LINE>Yearly will I do this rite.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Good morrow, masters; put your torches out:</LINE>
-<LINE>The wolves have prey'd; and look, the gentle day,</LINE>
-<LINE>Before the wheels of Phoebus, round about</LINE>
-<LINE>Dapples the drowsy east with spots of grey.</LINE>
-<LINE>Thanks to you all, and leave us: fare you well.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Good morrow, masters: each his several way.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Come, let us hence, and put on other weeds;</LINE>
-<LINE>And then to Leonato's we will go.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And Hymen now with luckier issue speed's</LINE>
-<LINE>Than this for whom we render'd up this woe.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-
-<SCENE><TITLE>SCENE IV. A room in LEONATO'S house.</TITLE>
-<STAGEDIR>Enter LEONATO, ANTONIO, BENEDICK, BEATRICE,
-MARGARET, URSULA, FRIAR FRANCIS, and HERO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>Did I not tell you she was innocent?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>So are the prince and Claudio, who accused her</LINE>
-<LINE>Upon the error that you heard debated:</LINE>
-<LINE>But Margaret was in some fault for this,</LINE>
-<LINE>Although against her will, as it appears</LINE>
-<LINE>In the true course of all the question.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Well, I am glad that all things sort so well.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>And so am I, being else by faith enforced</LINE>
-<LINE>To call young Claudio to a reckoning for it.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Well, daughter, and you gentle-women all,</LINE>
-<LINE>Withdraw into a chamber by yourselves,</LINE>
-<LINE>And when I send for you, come hither mask'd.</LINE>
-<STAGEDIR>Exeunt Ladies</STAGEDIR>
-<LINE>The prince and Claudio promised by this hour</LINE>
-<LINE>To visit me. You know your office, brother:</LINE>
-<LINE>You must be father to your brother's daughter</LINE>
-<LINE>And give her to young Claudio.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>Which I will do with confirm'd countenance.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Friar, I must entreat your pains, I think.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>To do what, signior?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>To bind me, or undo me; one of them.</LINE>
-<LINE>Signior Leonato, truth it is, good signior,</LINE>
-<LINE>Your niece regards me with an eye of favour.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>That eye my daughter lent her: 'tis most true.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>And I do with an eye of love requite her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>The sight whereof I think you had from me,</LINE>
-<LINE>From Claudio and the prince: but what's your will?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Your answer, sir, is enigmatical:</LINE>
-<LINE>But, for my will, my will is your good will</LINE>
-<LINE>May stand with ours, this day to be conjoin'd</LINE>
-<LINE>In the state of honourable marriage:</LINE>
-<LINE>In which, good friar, I shall desire your help.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>My heart is with your liking.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>And my help.</LINE>
-<LINE>Here comes the prince and Claudio.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter DON PEDRO and CLAUDIO, and two or
-three others</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Good morrow to this fair assembly.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Good morrow, prince; good morrow, Claudio:</LINE>
-<LINE>We here attend you. Are you yet determined</LINE>
-<LINE>To-day to marry with my brother's daughter?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I'll hold my mind, were she an Ethiope.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Call her forth, brother; here's the friar ready.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Exit ANTONIO</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>Good morrow, Benedick. Why, what's the matter,</LINE>
-<LINE>That you have such a February face,</LINE>
-<LINE>So full of frost, of storm and cloudiness?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I think he thinks upon the savage bull.</LINE>
-<LINE>Tush, fear not, man; we'll tip thy horns with gold</LINE>
-<LINE>And all Europa shall rejoice at thee,</LINE>
-<LINE>As once Europa did at lusty Jove,</LINE>
-<LINE>When he would play the noble beast in love.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Bull Jove, sir, had an amiable low;</LINE>
-<LINE>And some such strange bull leap'd your father's cow,</LINE>
-<LINE>And got a calf in that same noble feat</LINE>
-<LINE>Much like to you, for you have just his bleat.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>For this I owe you: here comes other reckonings.</LINE>
-<STAGEDIR>Re-enter ANTONIO, with the Ladies masked</STAGEDIR>
-<LINE>Which is the lady I must seize upon?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>ANTONIO</SPEAKER>
-<LINE>This same is she, and I do give you her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Why, then she's mine. Sweet, let me see your face.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>No, that you shall not, till you take her hand</LINE>
-<LINE>Before this friar and swear to marry her.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Give me your hand: before this holy friar,</LINE>
-<LINE>I am your husband, if you like of me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>And when I lived, I was your other wife:</LINE>
-<STAGEDIR>Unmasking</STAGEDIR>
-<LINE>And when you loved, you were my other husband.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>Another Hero!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>Nothing certainer:</LINE>
-<LINE>One Hero died defiled, but I do live,</LINE>
-<LINE>And surely as I live, I am a maid.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>The former Hero! Hero that is dead!</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>She died, my lord, but whiles her slander lived.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>FRIAR FRANCIS</SPEAKER>
-<LINE>All this amazement can I qualify:</LINE>
-<LINE>When after that the holy rites are ended,</LINE>
-<LINE>I'll tell you largely of fair Hero's death:</LINE>
-<LINE>Meantime let wonder seem familiar,</LINE>
-<LINE>And to the chapel let us presently.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Soft and fair, friar. Which is Beatrice?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE><STAGEDIR>Unmasking</STAGEDIR> I answer to that name. What is your will?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Do not you love me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Why, no; no more than reason.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Why, then your uncle and the prince and Claudio</LINE>
-<LINE>Have been deceived; they swore you did.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Do not you love me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Troth, no; no more than reason.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>Why, then my cousin Margaret and Ursula</LINE>
-<LINE>Are much deceived; for they did swear you did.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>They swore that you were almost sick for me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>They swore that you were well-nigh dead for me.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>'Tis no such matter. Then you do not love me?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>No, truly, but in friendly recompense.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>Come, cousin, I am sure you love the gentleman.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>And I'll be sworn upon't that he loves her;</LINE>
-<LINE>For here's a paper written in his hand,</LINE>
-<LINE>A halting sonnet of his own pure brain,</LINE>
-<LINE>Fashion'd to Beatrice.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>HERO</SPEAKER>
-<LINE>And here's another</LINE>
-<LINE>Writ in my cousin's hand, stolen from her pocket,</LINE>
-<LINE>Containing her affection unto Benedick.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>A miracle! here's our own hands against our hearts.</LINE>
-<LINE>Come, I will have thee; but, by this light, I take</LINE>
-<LINE>thee for pity.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BEATRICE</SPEAKER>
-<LINE>I would not deny you; but, by this good day, I yield</LINE>
-<LINE>upon great persuasion; and partly to save your life,</LINE>
-<LINE>for I was told you were in a consumption.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Peace! I will stop your mouth.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Kissing her</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>DON PEDRO</SPEAKER>
-<LINE>How dost thou, Benedick, the married man?</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>I'll tell thee what, prince; a college of</LINE>
-<LINE>wit-crackers cannot flout me out of my humour. Dost</LINE>
-<LINE>thou think I care for a satire or an epigram? No:</LINE>
-<LINE>if a man will be beaten with brains, a' shall wear</LINE>
-<LINE>nothing handsome about him. In brief, since I do</LINE>
-<LINE>purpose to marry, I will think nothing to any</LINE>
-<LINE>purpose that the world can say against it; and</LINE>
-<LINE>therefore never flout at me for what I have said</LINE>
-<LINE>against it; for man is a giddy thing, and this is my</LINE>
-<LINE>conclusion. For thy part, Claudio, I did think to</LINE>
-<LINE>have beaten thee, but in that thou art like to be my</LINE>
-<LINE>kinsman, live unbruised and love my cousin.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>CLAUDIO</SPEAKER>
-<LINE>I had well hoped thou wouldst have denied Beatrice,</LINE>
-<LINE>that I might have cudgelled thee out of thy single</LINE>
-<LINE>life, to make thee a double-dealer; which, out of</LINE>
-<LINE>question, thou wilt be, if my cousin do not look</LINE>
-<LINE>exceedingly narrowly to thee.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Come, come, we are friends: let's have a dance ere</LINE>
-<LINE>we are married, that we may lighten our own hearts</LINE>
-<LINE>and our wives' heels.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>LEONATO</SPEAKER>
-<LINE>We'll have dancing afterward.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>First, of my word; therefore play, music. Prince,</LINE>
-<LINE>thou art sad; get thee a wife, get thee a wife:</LINE>
-<LINE>there is no staff more reverend than one tipped with horn.</LINE>
-</SPEECH>
-
-
-<STAGEDIR>Enter a Messenger</STAGEDIR>
-
-<SPEECH>
-<SPEAKER>Messenger</SPEAKER>
-<LINE>My lord, your brother John is ta'en in flight,</LINE>
-<LINE>And brought with armed men back to Messina.</LINE>
-</SPEECH>
-
-<SPEECH>
-<SPEAKER>BENEDICK</SPEAKER>
-<LINE>Think not on him till to-morrow:</LINE>
-<LINE>I'll devise thee brave punishments for him.</LINE>
-<LINE>Strike up, pipers.</LINE>
-</SPEECH>
-
-<STAGEDIR>Dance</STAGEDIR>
-<STAGEDIR>Exeunt</STAGEDIR>
-</SCENE>
-</ACT>
-</PLAY>
diff --git a/xml/namespaces.xml b/xml/namespaces.xml
deleted file mode 100644
index e8e4df8..0000000
--- a/xml/namespaces.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<foo:a xmlns:foo="http://fooNamespace/">
- <b>
- <c>Hello</c>
- </b>
-
- <foo:d>
- <foo:e>Hey</foo:e>
- </foo:d>
-
- <bar:f xmlns:bar="http://barNamespace/">
- <bar:g>Hey2</bar:g>
- </bar:f>
-
- <alias:x xmlns:alias="http://fooNamespace/">
- <alias:y>Hey3</alias:y>
- </alias:x>
-</foo:a>
diff --git a/xml/nitf.xml b/xml/nitf.xml
deleted file mode 100644
index 269d99e..0000000
--- a/xml/nitf.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<nitf>
-
- <!-- Example of markup of URLs (at the bottom of the story) -->
-
- <head>
- <meta name="ap-cycle" content="AP"/>
- <meta name="ap-online-code" content="1700"/>
- <meta name="ap-company" content="CO:Media Metrix Inc;TS:MMXI;IG:SVC;"/>
- <meta name="ap-routing" content="ENTITLEMENTS,pfONLINE,pf1700"/>
- <meta name="ap-format" content="bx"/>
- <meta name="ap-category" content="f"/>
- <meta name="ap-selector" content="-----"/>
- <meta name="ap-transref" content="V0347"/>
- <docdata>
- <doc-id regsrc="AP" id-string="D76UIMO80"/>
- <urgency ed-urg="7"/>
- <date.issue norm="20000911T185842Z"/>
- <du-key key="Napster Traffic"/>
- <doc.copyright holder="(AP)"/>
- </docdata>
- </head>
- <body>
- <body.head>
- <hedline>
- <hl1>Use of Napster Quadruples</hl1>
- </hedline>
- <byline>By PETER SVENSSON
- <byttl>AP Business Writer</byttl>
- </byline>
- <distributor>The Associated Press</distributor>
- <dateline>
- <location>NEW YORK</location>
- </dateline>
- </body.head>
- <body.content>
- <block>
- <p>Despite the uncertain legality of the Napster online music-sharing service, the number of people
-using it more than quadrupled in just five months, Media Metrix said Monday.</p>
- <p>That made Napster the fastest-growing software application ever recorded by the Internet research
-company.</p>
- <p>From 1.1 million home users in the United States in February, the first month Media Metrix
-tracked the application, Napster use rocketed to 4.9 million users in July.</p>
- <p>That represents 6 percent of U.S. home PC users who have modems, said Media Metrix, which pays
-people to install monitoring software on their computers.</p>
- <p>It estimates total usage from a panel of about 50,000 people in the United States.</p>
- <p>Napster was also used at work by 887,000 people in July, Media Metrix said.</p>
- <p>Napster Inc. has been sued by the recording industry for allegedly enabling copyright
-infringement. The federal government weighed in on the case Friday, saying the service is not protected
-under a key copyright law, as the San Mateo, Calif., company claims.</p>
- <p>Bruce Ryon, head of Media Metrix's New Media Group, said Napster was used by "the full spectrum of PC users, not just the youth with time on their hands and a passion for music."</p>
- <p>The Napster program allows users to copy digital music files from the hard drives of other
-users over the Internet.</p>
- <p>Napster Inc. said last week that 28 million people had downloaded its program. It does not reveal
-its own figures for how many people actually use the software.</p>
- <p>Because the program connects to the company's computers over the Internet every time
-it is run, Napster Inc. can track usage exactly.</p>
- <p>__</p>
- <p>On the Net:</p>
- <p><a href="http://www.napster.com">
-http://www.napster.com</a></p>
- <p><a href="http://www.mediametrix.com">
-http://www.mediametrix.com</a></p>
- </block>
- </body.content>
- </body>
-</nitf>
diff --git a/xml/numbers.xml b/xml/numbers.xml
deleted file mode 100644
index a1791cd..0000000
--- a/xml/numbers.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-
-<numbers>
- <set>
- <nr>3</nr>
- <nr>24</nr>
- <nr>55</nr>
- <nr>11</nr>
- <nr>2</nr>
- <nr>-3</nr>
- </set>
- <set>
- <nr value="66"/>
- <nr value="123"/>
- <nr value="55"/>
- <nr value="9999"/>
- </set>
-</numbers>
diff --git a/xml/pi.xml b/xml/pi.xml
deleted file mode 100644
index 980bbf9..0000000
--- a/xml/pi.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<foo>
- <?cheese is tasty?>
- <bar>
- <baz/>
- <cheese/>
- <baz/>
- <?toast is tasty?>
- <cheese/>
- <baz/>
- </bar>
- <?cheese is gooey?>
-</foo>
diff --git a/xml/pi2.xml b/xml/pi2.xml
deleted file mode 100644
index 46bce45..0000000
--- a/xml/pi2.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<a>
- <b>foo</b>
- <?toc order-by="x"?>
- <c>bar</c>
-</a>
diff --git a/xml/simple.xml b/xml/simple.xml
deleted file mode 100644
index 3cff71a..0000000
--- a/xml/simple.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" ?>
-<root><a>a</a><b>b</b><c><d>d</d></c></root>
diff --git a/xml/simplevariablecontext.ser b/xml/simplevariablecontext.ser
deleted file mode 100644
index c1e2e3f..0000000
Binary files a/xml/simplevariablecontext.ser and /dev/null differ
diff --git a/xml/test/tests.xml b/xml/test/tests.xml
deleted file mode 100644
index ee327b6..0000000
--- a/xml/test/tests.xml
+++ /dev/null
@@ -1,685 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<tests xmlns:var="http://jaxen.org/test-harness/var">
- <!-- test for jaxen-24 -->
- <document url="xml/jaxen24.xml">
- <context select="/body/div">
- <test select="preceding::*[1]" count="1"/>
- <valueOf select="local-name(preceding::*[1])">span</valueOf>
- </context>
- <!-- jaxen-58 -->
- <context select="/">
- <test select="//preceding::x" count="0"/>
- <test select="//following::x" count="0"/>
- <test select="/descendant::*/preceding::x" count="0"/>
- <test select="/descendant::node()/preceding::x" count="0"/>
- </context>
- </document>
-
- <!-- test for jaxen-3 -->
- <document url="xml/simple.xml">
- <context select="/">
- <valueOf select="string()">abd</valueOf>
- </context>
- <context select="/root">
- <valueOf select="string()">abd</valueOf>
- </context>
- <context select="/root/a">
- <valueOf select="string()">a</valueOf>
- </context>
- <context select="/root/c">
- <valueOf select="string()">d</valueOf>
- </context>
- </document>
-
-
- <!-- test for jaxen-3 -->
- <document url="xml/jaxen3.xml">
- <context select="/">
- <test select="/Configuration/hostname/attrlist/hostname[. = 'CE-A'] " count="1"/>
- </context>
- </document>
-
- <!-- parser test cases all of which should fail-->
- <document url="xml/numbers.xml">
- <context select="/">
- <!-- repeated xpaths, jaxen-35 -->
- <test exception="true" select="/numbers numbers" count="0"/>
- <!-- invalid xpath, jaxen-34 -->
- <test exception="true" select="/a/b[c > d]efg" count="0"/>
- <!-- invalid xpath, jaxen-27 -->
- <test exception="true" select="/inv/child::" count="0"/>
- <!-- invalid xpath, jaxen-26 -->
- <test exception="true" select="/invoice/@test[abcd" count="0"/>
- <test exception="true" select="/invoice/@test[abcd > x" count="0"/>
-
- <!-- unterminated string -->
- <test exception="true" select="string-length('a" count="0"/>
- <!-- various edge cases where code threw no exception -->
- <test exception="true" select="/descendant::()" count="0"/>
- <test exception="true" select="(1 + 1" count="0"/>
-
- </context>
- </document>
-
-
- <!-- test cases for the use of underscores in names -->
- <document url="xml/underscore.xml">
- <context select="/">
- <test select="/root/@a" count="1"/>
- <test select="/root/@_a" count="1"/>
- <test select="/root/b" count="1"/>
- <test select="/root/_b" count="1"/>
- <valueOf select="/root/@a">1</valueOf>
- <valueOf select="/root/@_a">2</valueOf>
- <valueOf select="/root/b">1</valueOf>
- <valueOf select="/root/_b">2</valueOf>
- </context>
- </document>
-
- <!-- test cases for the use of = with nodesets -->
- <document url="xml/web.xml">
- <context select="/">
- <valueOf select="/web-app/servlet/servlet-name = 'file'">true</valueOf>
- <valueOf select="/web-app/servlet/servlet-name = 'snoop'">true</valueOf>
- </context>
- </document>
-
- <document url="xml/numbers.xml">
- <context select="/">
- <valueOf select="/numbers/set/nr = '-3'">true</valueOf>
- <valueOf select="/numbers/set/nr = -3">true</valueOf>
- <valueOf select="/numbers/set/nr = 24">true</valueOf>
- <valueOf select="/numbers/set/nr/@value = '9999'">true</valueOf>
- <valueOf select="/numbers/set/nr/@value = 9999.0">true</valueOf>
- <valueOf select="/numbers/set/nr/@value = 66">true</valueOf>
- </context>
- </document>
-
- <!-- test basic math... -->
- <document url="xml/numbers.xml">
- <context select="/">
- <valueOf select="(8 * 2 + 1) = 17">true</valueOf>
- <valueOf select="(1 + 8 * 2) = 17">true</valueOf>
- <valueOf select="(7 - 3 + 1) = 5">true</valueOf>
- <valueOf select="(8 - 4 + 5 - 6) = 3">true</valueOf>
- <!-- left-assoc tests, comments show WRONG evaluation -->
- <!-- 3 - 2 - 1 != 2 -->
- <valueOf select="3 - 2 - 1">0</valueOf>
- <!-- 8 div 4 div 2 != 4 -->
- <valueOf select="8 div 4 div 2">1</valueOf>
- <!-- 3 mod 5 mod 7 != 1 -->
- <valueOf select="3 mod 7 mod 5">3</valueOf>
- <!-- 1=(2=2) is true-->
- <valueOf select="1 = 2 = 2">false</valueOf>
- <!-- 2!=(3!=1) => 2!=1 => true, (2!=3)!=1 => 1!=1 => false -->
- <valueOf select="2 != 3 != 1">false</valueOf>
- <!-- 3 > (2 > 1) is true -->
- <valueOf select="3 > 2 > 1">false</valueOf>
- <!-- 3 >= (2 >= 2) is true -->
- <valueOf select="3 >= 2 >= 2">false</valueOf>
- <!-- 1 < (2 < 3) is false -->
- <valueOf select="1 < 2 < 3">true</valueOf>
- <!-- 0 <= (2 <= 3) is true -->
- <valueOf select="2 <= 2 <= 3">true</valueOf>
- </context>
- </document>
-
- <!-- test cases for preceding axis with different node types -->
- <document url="xml/pi2.xml">
- <context select="/a/c">
- <test select="//processing-instruction()" count="1"/>
- <test select="preceding-sibling::*" count="1"/>
- <test select="preceding-sibling::node()" count="5"/>
- <test select="preceding-sibling::*[1]" count="1"/>
- <test select="preceding-sibling::processing-instruction()" count="1"/>
- <valueOf select="preceding-sibling::processing-instruction()">order-by="x"</valueOf>
- <valueOf select="preceding-sibling::*[1]">foo</valueOf>
- <valueOf select="preceding-sibling::node()[2]">order-by="x"</valueOf>
- </context>
- </document>
-
- <document url="xml/id.xml">
- <context select="/"
- var:foobar="foobar"
- var:foo="foo">
- <valueOf select="$foobar">foobar</valueOf>
- <test select="/foo[@id=$foobar]" count="1"/>
- <test select="/foo[@id='$foobar']" count="0"/>
- <test select="/foo[concat($foo, 'bar')=@id]" count="1"/>
- <test select="CD_Library/artist[@name=$artist]" count="0"/>
- </context>
- </document>
-
- <document url="xml/id.xml">
- <context select="/">
- <!-- attributes have a parent: their element -->
- <test select="/foo/@id/parent::foo" count="1"/>
- </context>
- <!-- attributes can also be used as context nodes -->
- <context select="/foo/@id">
- <test select="parent::foo" count="1"/>
- </context>
- </document>
-
- <document url="xml/pi.xml">
- <context select="/">
- <test select="//processing-instruction()" count="3"/>
- <test select="//processing-instruction('cheese')" count="2"/>
- <test select="//processing-instruction('toast')" count="1">
- <valueOf select="string()">is tasty</valueOf>
- </test>
- </context>
-
- </document>
-
- <!-- test evaluate() extension function -->
- <document url="xml/evaluate.xml">
- <context select="/">
- <test select="evaluate('//jumps/*')" count="3"/>
- <test select="evaluate('//jumps/object/dog')" count="1"/>
- <test select="evaluate('//jumps/object')/evaluate" count="0"/>
- <test select="evaluate('//jumps/object')/dog" count="1"/>
- <test select="evaluate('//jumps/*')/dog" count="1"/>
- <test select="//metatest[ evaluate(@select) = . ]" count="1"/>
- </context>
- </document>
-
- <document url="xml/numbers.xml">
- <context select="/numbers/set[1]">
- <test select="*[-3 = .]" count="1"/>
- <valueOf select="54 < *">true</valueOf>
- <valueOf select="55 <= *">true</valueOf>
- <valueOf select="69 < *">false</valueOf>
- <valueOf select="-2 > *">true</valueOf>
- <valueOf select="-3 >= *">true</valueOf>
- <valueOf select="-4 >= *">false</valueOf>
- </context>
- <!-- TODO
- This context should work, but needs a fixed version of saxpath to parse the right-hand side
- of the greater-than expression.
- <context select="/numbers/set[2]">
- <valueOf select="1 > nr/@value">false</valueOf>
- <valueOf select="55 > nr/@value">false</valueOf>
- <valueOf select="55 >= nr/@value">true</valueOf>
- <valueOf select="1000000 > nr/@value">true</valueOf>
- </context>
- -->
- </document>
-
-
- <!-- test sibling axes -->
- <document url="xml/axis.xml">
-
- <context select="/root">
- <test select="preceding-sibling::*" count="0"/>
- </context>
-
- <context select="/root/a/a.3">
- <test select="preceding::*" count="2"/>
- </context>
-
- <context select="/root/a/a.3">
- <test select="preceding-sibling::*" count="2"/>
- </context>
-
- <context select="/">
- <valueOf select="name(/root/a/a.3/preceding-sibling::*[1])">a.2</valueOf>
- <valueOf select="name(/root/a/a.3/preceding-sibling::*[2])">a.1</valueOf>
- </context>
-
- <context select="/">
- <valueOf select="name(/root/a/a.3/following-sibling::*[1])">a.4</valueOf>
- <valueOf select="name(/root/a/a.3/following-sibling::*[2])">a.5</valueOf>
- </context>
-
- </document>
-
-
- <document url="xml/web.xml">
-
- <context select="/">
- <valueOf select="/web-app/servlet[1]/servlet-name">snoop</valueOf>
- <valueOf select="/web-app/servlet[1]/servlet-name/text()">snoop</valueOf>
- <valueOf select="/web-app/servlet[2]/servlet-name">file</valueOf>
- <valueOf select="/web-app/servlet[2]/servlet-name/text()">file</valueOf>
- </context>
-
- <context select="/web-app/servlet[1]">
- <valueOf select="servlet-name">snoop</valueOf>
- <valueOf select="servlet-name/text()">snoop</valueOf>
- </context>
-
- <context select="/web-app/servlet[2]/servlet-name">
- <test select="preceding::*" count="3"/>
- </context>
-
- <context select="/web-app/servlet[2]/servlet-name">
- <test select="following::*" count="13"/>
- </context>
-
- </document>
-
-
- <!-- test name -->
-
- <document url="xml/web.xml">
- <context select="/">
-
- <test select="*" count="1">
- <valueOf select="name()">web-app</valueOf>
- </test>
-
- <!-- NOTE that the child::node() tests only work if the
- XML document does not comments or PIs
- -->
-
- <test select="./*" count="1">
- <valueOf select="name()">web-app</valueOf>
- </test>
- <test select="child::*" count="1">
- <valueOf select="name()">web-app</valueOf>
- </test>
- <test select="/*" count="1">
- <valueOf select="name()">web-app</valueOf>
- </test>
- <test select="/child::node()" count="1">
- <valueOf select="name(.)">web-app</valueOf>
- </test>
- <test select="child::node()" count="1">
- <valueOf select="name(.)">web-app</valueOf>
- </test>
-
- <!-- empty names -->
-
- <valueOf select="name()"></valueOf>
- <valueOf select="name(.)"></valueOf>
- <valueOf select="name(parent::*)"></valueOf>
- <valueOf select="name(/)"></valueOf>
- <valueOf select="name(/.)"></valueOf>
- <valueOf select="name(/self::node())"></valueOf>
-
- <!-- name of root elemet -->
- <valueOf select="name(node())">web-app</valueOf>
- <valueOf select="name(/node())">web-app</valueOf>
- <valueOf select="name(/*)">web-app</valueOf>
- <valueOf select="name(/child::*)">web-app</valueOf>
- <valueOf select="name(/child::node())">web-app</valueOf>
- <valueOf select="name(/child::node())">web-app</valueOf>
- <valueOf select="name(child::node())">web-app</valueOf>
- <valueOf select="name(./*)">web-app</valueOf>
- <valueOf select="name(*)">web-app</valueOf>
-
- </context>
-
- <context select="/*">
- <!-- empty names -->
- <valueOf select="name(..)"></valueOf>
- <valueOf select="name(parent::node())"></valueOf>
- <valueOf select="name(parent::*)"></valueOf>
-
- <!-- name of root elemet -->
- <valueOf select="name()">web-app</valueOf>
- <valueOf select="name(.)">web-app</valueOf>
- <valueOf select="name(../*)">web-app</valueOf>
- <valueOf select="name(../child::node())">web-app</valueOf>
- </context>
- </document>
-
-
-
- <!-- test predicates -->
-
- <document url="xml/nitf.xml">
- <context select="/nitf/head/docdata">
- <test select="doc-id[@regsrc='AP' and @id-string='D76UIMO80']" count="1"/>
- </context>
- <context select="/nitf/head">
- <test select="meta[@name='ap-cycle']" count="1"/>
- <test select="meta[@content='AP']" count="1"/>
- <test select="meta[@name and @content]" count="8"/>
- <test select="meta[@name='ap-cycle' and @content='AP']" count="1"/>
- <test select="meta[@name != 'ap-cycle']" count="7"/>
- </context>
- <context select="/">
- <test select="/nitf/head/meta[@name='ap-cycle']" count="1"/>
- <test select="/nitf/head/meta[@content='AP']" count="1"/>
- <test select="/nitf/head/meta[@name and @content]" count="8"/>
- <test select="/nitf/head/meta[@name='ap-cycle' and @content='AP']" count="1"/>
- <test select="/nitf/head/meta[@name != 'ap-cycle']" count="7"/>
- </context>
- </document>
-
-
- <document url="xml/moreover.xml">
- <context select="/">
- <test select="/child::node()" count="1"/>
- <test select="/*" count="1"/>
-
- <test select="/*/article" count="20"/>
- <test select="//*" count="221"/>
- <test select="//*[local-name()='article']" count="20"/>
- <test select="//article" count="20"/>
- <test select="/*/*[@code]" count="20"/>
-
- <test select="/moreovernews/article[@code='13563275']" count="1"/>
-
- <test select="/moreovernews/article[@code='13563275']">
- <valueOf select="url">http://c.moreover.com/click/here.pl?x13563273</valueOf>
- </test>
- <test select="/*/article[@code='13563275']">
- <valueOf select="url">http://c.moreover.com/click/here.pl?x13563273</valueOf>
- </test>
- <test select="//article[@code='13563275']">
- <valueOf select="url">http://c.moreover.com/click/here.pl?x13563273</valueOf>
- </test>
- <test select="//*[@code='13563275']">
- <valueOf select="url">http://c.moreover.com/click/here.pl?x13563273</valueOf>
- </test>
- <test select="/child::node()/child::node()[@code='13563275']">
- <valueOf select="url">http://c.moreover.com/click/here.pl?x13563273</valueOf>
- </test>
- <test select="/*/*[@code='13563275']">
- <valueOf select="url">http://c.moreover.com/click/here.pl?x13563273</valueOf>
- </test>
- </context>
- </document>
-
-
-
- <!-- test other node types-->
-
- <document url="xml/contents.xml">
- <context select="/">
- <test select="processing-instruction()" count="3"/>
- <test select="/processing-instruction()" count="3"/>
- <test select="/comment()" count="1"/>
- <test select="comment()" count="1"/>
- <test select="/child::node()/comment()" count="2"/>
- <test select="/*/comment()" count="2"/>
- <test select="//comment()" count="3"/>
- </context>
- </document>
-
-
-
- <!-- test positioning -->
-
- <document url="xml/fibo.xml">
- <context select="/">
- <test select="/*/fibonacci[position() < 10]" count="9"/>
- <valueOf select="sum(//fibonacci)">196417</valueOf>
- <valueOf select="sum(//fibonacci/@index)">325</valueOf>
- <valueOf select="/*/fibonacci[2]">1</valueOf>
- <valueOf select="/*/fibonacci[ count(/*/fibonacci) ]">75025</valueOf>
- <valueOf select="/*/fibonacci[ count(/*/fibonacci) - 1 ]">46368</valueOf>
- </context>
- </document>
-
-
- <!-- test number functions -->
-
- <!-- test Axes -->
-
- <document url="xml/web.xml">
- <context select="/">
- <test select="descendant-or-self::*" count="19"/>
- <test select="descendant::*" count="19"/>
- <test select="/descendant::*" count="19"/>
- <test select="/descendant-or-self::*" count="19"/>
- <test select="/descendant::servlet" count="2"/>
- <test select="/descendant-or-self::servlet" count="2"/>
- <test select="descendant-or-self::servlet" count="2"/>
- <test select="descendant::servlet" count="2"/>
- <test select="/*/servlet" count="2"/>
- <valueOf select="count(/*/servlet)">2</valueOf>
- <test select="//servlet" count="2"/>
- <valueOf select="count(//servlet)">2</valueOf>
- </context>
- <context select="/web-app">
- <test select="/descendant::servlet" count="2"/>
- <test select="/descendant-or-self::servlet" count="2"/>
- <test select="descendant-or-self::servlet" count="2"/>
- <test select="descendant::servlet" count="2"/>
- </context>
- </document>
-
- <document url="xml/much_ado.xml">
- <context select="/">
- <test select="/descendant::ACT" count="5"/>
- <test select="descendant::ACT" count="5"/>
- <valueOf select="/PLAY/TITLE">Much Ado about Nothing</valueOf>
- <valueOf select="2+2">4</valueOf>
- <valueOf select="5 * 4 + 1">21</valueOf>
- <valueOf select="count(descendant::ACT)">5</valueOf>
- <valueOf select="10 + count(descendant::ACT) * 5">35</valueOf>
- <valueOf select="(10 + count(descendant::ACT)) * 5">75</valueOf>
- </context>
- <context select="/PLAY/ACT[2]/SCENE[1]">
- <test select="/descendant::ACT" count="5"/>
- <test select="../../descendant::ACT" count="5"/>
- <test select="/PLAY/ACT[2]/SCENE[1]/descendant::SPEAKER" count="141"/>
- <test select="descendant::SPEAKER" count="141"/>
- <valueOf select="count(descendant::*)+1">646</valueOf>
- <valueOf select="count(descendant::SPEAKER)+1">142</valueOf>
- <valueOf select="count(ancestor::*)">2</valueOf>
- <valueOf select="count(ancestor::PLAY)">1</valueOf>
- <valueOf select="count(ancestor-or-self::*)">3</valueOf>
- <valueOf select="count(ancestor-or-self::PLAY)">1</valueOf>
- <valueOf select="5+count(ancestor::*)-1">6</valueOf>
- </context>
- <context select="/">
- <!-- Test correct predicate application -->
- <valueOf select="count(/PLAY/ACT/SCENE[1])">5</valueOf>
- </context>
- </document>
-
- <!-- test axis node ordering -->
- <document url="xml/web.xml">
- <context select="/">
- <!-- Reported as Jira issue JAXEN-24 -->
- <test select="//servlet-mapping/preceding::*[1][name()='description']" count="1"/>
- <test select="/web-app/servlet//description/following::*[1][name()='servlet-mapping']" count="1"/>
- <test select="/web-app/servlet//description/following::*[2][name()='servlet-name']" count="1"/>
- </context>
- </document>
-
- <!-- test document function -->
- <document url="xml/text.xml">
- <context select="/">
- <test select="document('xml/web.xml')" count="1">
- <valueOf select="/web-app/servlet[1]/servlet-name">snoop</valueOf>
- <valueOf select="/web-app/servlet[1]/servlet-name/text()">snoop</valueOf>
- </test>
- <valueOf select="document('xml/web.xml')/web-app/servlet[1]/servlet-name">snoop</valueOf>
- </context>
- <!-- Test to check if the context changes when an extension function is used.
- First test is an example, second is the actual test.
- -->
- <context select="/foo/bar/cheese[1]">
- <valueOf select="concat(./@id,'foo', at id)">3foo3</valueOf>
- <valueOf select="concat(./@id,document('xml/web.xml')/web-app/servlet[1]/servlet-name,./@id)">3snoop3</valueOf>
- </context>
- </document>
-
- <document url="xml/message.xml">
- <context select="/">
- <valueOf select="/message/body/data/items/item[name/text()='parentinfo']/value">Pruefgebiete</valueOf>
- <valueOf select="document('xml/message.xml')/message/body/data/items/item[name/text()='parentinfo']/value">Pruefgebiete</valueOf>
- </context>
- </document>
-
- <document url="xml/simple.xml">
-
- <!-- test behaviour of AbsoluteLocationPath -->
- <context select="/root/a">
- <valueOf select="concat( ., /root/b )">ab</valueOf>
- <valueOf select="concat( ../b, . )">ba</valueOf>
- <valueOf select="concat( /root/b, . )">ba</valueOf>
- <valueOf select="concat( /root/c/d, ../b )">db</valueOf>
- </context>
-
- <!-- test the translate() function -->
- <context select="/">
- <valueOf select="translate( '', '', '' )"></valueOf>
- <valueOf select="translate( 'abcd', '', '' )">abcd</valueOf>
- <valueOf select="translate( 'abcd', 'abcd', 'abcd' )">abcd</valueOf>
- <valueOf select="translate( 'abcd', 'dcba', 'dcba' )">abcd</valueOf>
- <valueOf select="translate( 'abcd', 'abcd', 'dcba' )">dcba</valueOf>
- <valueOf select="translate( 'abcd', 'abcd', 'ab' )">ab</valueOf>
- <valueOf select="translate( 'abcd', 'cdab', 'cd' )">cd</valueOf>
- <valueOf select="translate( 'abcd', 'acbd', 'xy' )">xy</valueOf>
- <valueOf select="translate( 'abcd', 'abcdb', 'abcdb' )">abcd</valueOf>
- <valueOf select="translate( 'abcd', 'abcd', 'abcdb' )">abcd</valueOf>
- </context>
-
- <context select="/">
- <valueOf select="substring('12345', 1.5, 2.6)">234</valueOf>
- <valueOf select="substring('12345', 0, 3)">12</valueOf>
- <valueOf select="substring('12345', 0 div 0, 3)"></valueOf>
- <valueOf select="substring('12345', 1, 0 div 0)"></valueOf>
- <valueOf select="substring('12345', -42, 1 div 0)">12345</valueOf>
- <valueOf select="substring('12345', -1 div 0, 1 div 0)"></valueOf>
- <valueOf select="substring('12345', 3)">345</valueOf>
- <valueOf select="substring('12345',1,15)">12345</valueOf>
- </context>
-
- <!-- Some tests for the normalize-space() function -->
-
- <context select="/">
- <valueOf select="normalize-space(' abc ')">abc</valueOf>
- <valueOf select="normalize-space(' a b c ')">a b c</valueOf>
- <valueOf select="normalize-space(' a 
 b 
 c ')">a b c</valueOf>
- <!-- Next test case addresses issue JAXEN-22 -->
- <valueOf select="normalize-space(' ')"></valueOf>
- <!-- Next test case addresses issue JAXEN-29 -->
- <valueOf select="normalize-space('')"></valueOf>
- </context>
- </document>
-
-
-
- <!-- test cases for String extension functions -->
- <document url="xml/web.xml">
- <context select="/web-app/servlet[1]">
- <valueOf select="upper-case( servlet-class )">SNOOPSERVLET</valueOf>
- <valueOf select="lower-case( servlet-class )">snoopservlet</valueOf>
- <valueOf select="upper-case( servlet-class, 'fr' )">SNOOPSERVLET</valueOf>
- <valueOf select="upper-case( servlet-class, 'fr-CA' )">SNOOPSERVLET</valueOf>
- <valueOf select="upper-case( servlet-class, 'es-ES-Traditional_WIN' )">SNOOPSERVLET</valueOf>
- <valueOf select="ends-with( servlet-class, 'Servlet' )">true</valueOf>
- <valueOf select="ends-with( servlet-class, 'S' )">false</valueOf>
- </context>
- </document>
-
- <!-- test cases for the lang() function -->
- <document url="xml/lang.xml">
- <context select="/">
- <test select="/e1/e2[lang('hr')]" count="0"/>
- <test select="/e1/e2/e3[lang('en')]" count="1"/>
- <test select="/e1/e2/e3[lang('en-US')]" count="1"/>
- <test select="/e1/e2/e3[lang('en-GB')]" count="0"/>
- <test select="/e1/e2/e3[lang('hu')]" count="2"/>
- <test select="/e1/e2/e3[lang('hu-HU')]" count="0"/>
- <test select="/e1/e2/e3[lang('es')]" count="1"/>
- <test select="/e1/e2/e3[lang('es-BR')]" count="0"/>
- </context>
- </document>
-
- <!-- test namespace -->
- <document url="xml/namespaces.xml">
- <context select="/"
- xmlns:foo="http://fooNamespace/"
- xmlns:voo="http://fooNamespace/"
- xmlns:bar="http://barNamespace/"
- xmlns:alias="http://fooNamespace/">
- <test select="/*" count="1"/>
- <test select="/foo:a" count="1"/>
- <test select="/foo:a/b" count="1"/>
- <test select="/voo:a/b/c" count="1"/>
- <test select="/voo:a/bar:f" count="1"/>
- <test select="/*[namespace-uri()='http://fooNamespace/' and local-name()='a']" count="1"/>
- <test select="/*[local-name()='a' and namespace-uri()='http://fooNamespace/']/*[local-name()='x' and namespace-uri()='http://fooNamespace/']" count="1"/>
- <test select="/*[local-name()='a' and namespace-uri()='http://fooNamespace/']/*[local-name()='x' and namespace-uri()='http://fooNamespace/']/*[local-name()='y' and namespace-uri()='http://fooNamespace/']" count="1"/>
- </context>
- <!-- the prefix here and in the document have no relation; it's their
- namespace-uri binding that counts -->
- <context select="/" xmlns:foo="http://somethingElse/">
- <test select="/foo:a/b/c" count="0"/>
- </context>
-
- <context select="/"
- xmlns:foo="http://fooNamespace/"
- xmlns:bar="http://barNamespace/"
- xmlns:alias="http://fooNamespace/">
- <valueOf select="/foo:a/b/c">Hello</valueOf>
- <valueOf select="/foo:a/foo:d/foo:e">Hey</valueOf>
- <valueOf select="/foo:a/alias:x/alias:y">Hey3</valueOf>
- <valueOf select="/foo:a/foo:x/foo:y">Hey3</valueOf>
- <valueOf select="/*[local-name()='a' and namespace-uri()='http://fooNamespace/']/*[local-name()='x' and namespace-uri()='http://fooNamespace/']/*[local-name()='y' and namespace-uri()='http://fooNamespace/']">Hey3</valueOf>
- </context>
-
- </document>
-
- <document url="xml/defaultNamespace.xml">
- <context select="/">
- <!-- NOTE: /a/b/c selects elements in no namespace only! -->
- <test select="/a/b/c" count="0"/>
- <!--
- The following test uses an unbound prefix 'x' and should throw an exception.
- Addresses issue JAXEN-18.
- Turns out this isn't really tested as the test didn't fail when the exception wasn't thrown.
- <test select="/x:a/x:b/x:c" count="0" exception="true"/>
- -->
- </context>
- <context select="/"
- xmlns:dummy="http://dummyNamespace/">
- <test select="/dummy:a/dummy:b/dummy:c" count="1"/>
- </context>
- </document>
- <document url="xml/text.xml">
- <context select="/">
- <test select="/foo/bar/text()" count="3"/>
- <valueOf select="normalize-space(/foo/bar/text())">baz</valueOf>
- </context>
- </document>
-
- <document url="xml/testNamespaces.xml">
- <context select="/">
- <!-- the root is not an element, so no namespaces -->
- <test select="namespace::*" count="0" debug="off"/>
- <test select="/namespace::*" count="0" debug="off"/>
- <!-- must count the default xml: prefix as well -->
- <test select="/Template/Application1/namespace::*" count="3" debug="off"/>
- <test select="/Template/Application2/namespace::*" count="3" debug="off"/>
-
- <!-- every element has separate copies -->
- <test select="//namespace::*" count="25" debug="off"/>
- </context>
-
- <context select="/Template/Application1">
- <!-- must count the default xml: prefix as well -->
- <test select="namespace::*" count="3" debug="off"/>
- <test select="/namespace::*" count="0" debug="off"/>
- <test select="/Template/Application1/namespace::*" count="3" debug="off"/>
- <test select="/Template/Application2/namespace::*" count="3" debug="off"/>
- <test select="//namespace::*" count="25" debug="off"/>
- <test select="//namespace::xplt" count="8" debug="off"/>
- <!-- the name test literally matches the prefix as given in the
- document, and does not use the uri -->
- <test xmlns:somethingelse="http://www.xxxx.com/"
- select="//namespace::somethingelse" count="0" debug="off"/>
- </context>
- </document>
-
- <document url="xml/testNamespaces.xml">
- <context select="/">
- <!-- namespace nodes have their element as their parent -->
- <test select="/Template/namespace::xml/parent::Template" count="1"/>
- </context>
- <!-- namespace nodes can also be used as context nodes -->
- <context select="/Template/namespace::xml">
- <test select="parent::Template" count="1"/>
- </context>
- </document>
-
-</tests>
diff --git a/xml/test/tests.xsl b/xml/test/tests.xsl
deleted file mode 100644
index 3ecd648..0000000
--- a/xml/test/tests.xsl
+++ /dev/null
@@ -1,369 +0,0 @@
-<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:var="http://jaxen.org/test-harness/var">
-<!-- this is what I used to generate XPathTestBase. After generating I fixed the illegal strings (its quicker
-than fixing the xsl for that few errors) and reformatted the code. Its unlikely this code will be needed
-again, its just in cvs for completeness -->
- <output method="text"/>
- <template match="/">
- <text>
- /*
- * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/XPathTestBase.java,v 1.32 2005/06/15 23:52:40 bewins Exp $
- * $Revision: 1.32 $
- * $Date: 2005/06/15 23:52:40 $
- *
- * ====================================================================
- *
- * Copyright (C) 2000-2002 bob mcwhirter & James Strachan.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions, and the disclaimer that follows
- * these conditions in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. The name "Jaxen" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact license at jaxen.org.
- *
- * 4. Products derived from this software may not be called "Jaxen", nor
- * may "Jaxen" appear in their name, without prior written permission
- * from the Jaxen Project Management (pm at jaxen.org).
- *
- * In addition, we request (but do not require) that you include in the
- * end-user documentation provided with the redistribution and/or in the
- * software itself an acknowledgement equivalent to the following:
- * "This product includes software developed by the
- * Jaxen Project (http://www.jaxen.org/)."
- * Alternatively, the acknowledgment may be graphical using the logos
- * available at http://www.jaxen.org/
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE Jaxen AUTHORS OR THE PROJECT
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * ====================================================================
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Jaxen Project and was originally
- * created by bob mcwhirter <bob at werken.com> and
- * James Strachan <jstrachan at apache.org>. For more information on the
- * Jaxen Project, please see <http://www.jaxen.org/>.
- *
- * $Id: XPathTestBase.java,v 1.32 2005/06/15 23:52:40 bewins Exp $
- */
-
-
-package org.jaxen;
-
-import junit.framework.TestCase;
-import org.jaxen.function.StringFunction;
-import org.jaxen.saxpath.helpers.XPathReaderFactory;
-
-import javax.xml.parsers.ParserConfigurationException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-public abstract class XPathTestBase extends TestCase
-{
- protected static String VAR_URI = "http://jaxen.org/test-harness/var";
- protected static String TESTS_XML = "xml/test/tests.xml";
-
- protected static boolean verbose = true;
- protected static boolean debug = true;
- private ContextSupport contextSupport;
-
- public XPathTestBase(String name)
- {
- super( name );
- }
-
- public void setUp() throws ParserConfigurationException
- {
- this.contextSupport = null;
- System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
- "" );
- log( "-----------------------------" );
- }
-
- public void log(String text)
- {
- log( verbose,
- text );
- }
-
- public void log(boolean actualVerbose,
- String text)
- {
- if ( ! actualVerbose )
- {
- return;
- }
-
- System.out.println( text );
- }
-
- protected void assertCountXPath(int expectedSize, Object context, String xpathStr) throws JaxenException {
- try
- {
- assertCountXPath2(expectedSize, context, xpathStr);
- }
- catch (UnsupportedAxisException e)
- {
- log ( debug,
- " ## SKIPPED -- Unsupported Axis" );
- }
- }
-
- protected Object assertCountXPath2(int expectedSize, Object context, String xpathStr) throws JaxenException {
- log ( debug,
- " Select :: " + xpathStr );
- BaseXPath xpath = new BaseXPath( xpathStr );
- List results = xpath.selectNodes( getContext( context ) );
- log ( debug,
- " Expected Size :: " + expectedSize );
- log ( debug,
- " Result Size :: " + results.size() );
-
- if ( expectedSize != results.size() )
- {
- log ( debug,
- " ## FAILED" );
- log ( debug,
- " ## xpath: " + xpath + " = " + xpath.debug() );
-
- Iterator resultIter = results.iterator();
-
- while ( resultIter.hasNext() )
- {
- log ( debug,
- " --> " + resultIter.next() );
- }
- }
- assertEquals( xpathStr,
- expectedSize,
- results.size() );
- if (expectedSize > 0) {
- return results.get(0);
- }
- return null;
- }
-
- protected void assertInvalidXPath(Object context, String xpathStr) throws JaxenException {
- try
- {
- log ( debug,
- " Select :: " + xpathStr );
- BaseXPath xpath = new BaseXPath( xpathStr );
- List results = xpath.selectNodes( getContext( context ) );
- log ( debug,
- " Result Size :: " + results.size() );
- fail("An exception was expected.");
- }
- catch (UnsupportedAxisException e)
- {
- log ( debug,
- " ## SKIPPED -- Unsupported Axis" );
- }
- catch (JaxenException e) {
- log (debug, " Caught expected exception "+e.getMessage());
- }
- }
-
- protected void assertValueOfXPath(String expected, Object context, String xpathStr) throws JaxenException {
- try
- {
- BaseXPath xpath = new BaseXPath( xpathStr );
- Object node = xpath.evaluate( getContext( context ) );
-
- String result = StringFunction.evaluate( node,
- getNavigator() );
-
- log ( debug,
- " Select :: " + xpathStr );
- log ( debug,
- " Expected :: " + expected );
- log ( debug,
- " Result :: " + result );
-
- if ( ! expected.equals( result ) )
- {
- log ( debug,
- " ## FAILED" );
- log ( debug,
- " ## xpath: " + xpath + " = " + xpath.debug() );
- }
-
- assertEquals( xpathStr,
- expected,
- result );
- }
- catch (UnsupportedAxisException e)
- {
- log ( debug,
- " ## SKIPPED -- Unsupported Axis " );
-
- }
- }
- protected Context getContext(Object contextNode)
- {
- Context context = new Context( getContextSupport() );
-
- List list = new ArrayList( 1 );
- list.add( contextNode );
- context.setNodeSet( list );
-
- return context;
- }
-
- public ContextSupport getContextSupport()
- {
- if ( this.contextSupport == null )
- {
- this.contextSupport = new ContextSupport( new SimpleNamespaceContext(),
- XPathFunctionContext.getInstance(),
- new SimpleVariableContext(),
- getNavigator() );
- }
-
- return this.contextSupport;
- }
-
- public abstract Navigator getNavigator();
-
- public abstract Object getDocument(String url) throws Exception;
-
- public void testGetNodeType() throws FunctionCallException, UnsupportedAxisException
- {
- Navigator nav = getNavigator();
- Object document = nav.getDocument("xml/testNamespaces.xml");
- int count = 0;
- Iterator descendantOrSelfAxisIterator = nav.getDescendantOrSelfAxisIterator(document);
- while (descendantOrSelfAxisIterator.hasNext()) {
- Object node = descendantOrSelfAxisIterator.next();
- Iterator namespaceAxisIterator = nav.getNamespaceAxisIterator(node);
- while (namespaceAxisIterator.hasNext()) {
- count++;
- assertEquals("Node type mismatch", Pattern.NAMESPACE_NODE, nav.getNodeType(namespaceAxisIterator.next()));
- }
- }
- assertEquals(25, count);
- }
-
- </text>
- <apply-templates select="node()|@*"/>
- <text>
-}
- </text>
- </template>
- <template match="context">
- <text>
- public void test</text><value-of select="generate-id()"/><text>() throws JaxenException {
- Navigator nav = getNavigator();
- String url = "</text><value-of select="../@url"/><text>";
- log( "Document [" + url + "]" );
- Object document = nav.getDocument(url);
-
- XPath contextpath = new BaseXPath("</text><value-of select="@select"/><text>", nav);
- log( "Initial Context :: " + contextpath );
- List list = contextpath.selectNodes(document);
- </text>
- <if test="count(namespace::*) > count(../namespace::*)">
- <text>
- SimpleNamespaceContext nsContext = new SimpleNamespaceContext();</text>
- <for-each select="namespace::*[local-name() != 'var' and local-name() != 'xml']">
- <text>
- nsContext.addNamespace( "</text><value-of select="local-name()"/><text>", "</text><value-of select="."/><text>" );</text>
- </for-each>
- <text>
- getContextSupport().setNamespaceContext( nsContext );</text>
- </if>
- <if test="@*[namespace-uri() = 'http://jaxen.org/test-harness/var']">
- <text>
- SimpleVariableContext varContext = new SimpleVariableContext();</text>
- <for-each select="@*[namespace-uri() = 'http://jaxen.org/test-harness/var']">
- <text>
- varContext.setVariableValue(null, "</text><value-of select="local-name()"/><text>", "</text><value-of select="."/><text>" );</text>
- </for-each>
- <text>
- getContextSupport().setVariableContext( varContext );</text>
- </if>
- <text>
- Iterator iter = list.iterator();
- while (iter.hasNext()) {
- Object context = iter.next();</text>
- <apply-templates select="node()|@*"/>
- <text>
- }
- }</text>
- </template>
- <template match="test[@exception]">
- <text>
- assertInvalidXPath(context, "</text><value-of select='@select'/><text>");</text>
- </template>
- <template match="test[valueOf]">
- <choose>
- <when test="@count">
- <text>
- try
- {
- Object result = assertCountXPath2(</text><value-of select="@count"/><text>, context, "</text><value-of select="@select"/><text>");</text>
- <for-each select="valueOf">
- <text>
- assertValueOfXPath("</text><value-of select="."/><text>", result, "</text><value-of select="@select"/><text>");</text>
- </for-each>
- <text>
- }
- catch (UnsupportedAxisException e)
- {
- log ( debug, " ## SKIPPED -- Unsupported Axis" );
- }</text>
- </when>
- <otherwise>
- <text>
- try
- {
- BaseXPath xpath = new BaseXPath( "</text><value-of select="@select"/><text>" );
- List results = xpath.selectNodes( getContext( context ) );
- Object result = results.get(0);</text>
- <for-each select="valueOf">
- <text>
- assertValueOfXPath("</text><value-of select="."/><text>", result, "</text><value-of select="@select"/><text>");</text>
- </for-each>
- <text>
- }
- catch (UnsupportedAxisException e)
- {
- log ( debug, " ## SKIPPED -- Unsupported Axis" );
- }</text>
- </otherwise>
- </choose>
- </template>
- <template match="test">
- <text>
- assertCountXPath(</text><value-of select="@count"/><text>, context, "</text><value-of select="@select"/><text>");</text>
- </template>
- <template match="valueOf">
- <text>
- assertValueOfXPath("</text><value-of select="."/>", context, "<value-of select="@select"/><text>");</text>
- </template>
- <template match="comment()"><text>
- /*</text><value-of select="."/><text>
- */</text>
- </template>
- <template match="node()|@*"><apply-templates select="node()|@*"/></template>
-</stylesheet>
\ No newline at end of file
diff --git a/xml/testNamespaces.xml b/xml/testNamespaces.xml
deleted file mode 100644
index 50f7c93..0000000
--- a/xml/testNamespaces.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<Template>
- <Application1 xmlns:xplt="http://www.xxxx.com/"
- xmlns:xpl="http://www.xxxx.com/"
- version="3.0"
- randomAttribute="foo"
- >
- <xpl:insertText/>
- <xplt:anyElement>
- <Name/>
- </xplt:anyElement>
- </Application1>
-
- <Application2 xmlns:xplt="http://www.xxxx.com/"
- xmlns:xpl="http://www.xxxx.com/"
- version="3.0"
- >
- <xpl:insertText/>
- <xplt:anyElement>
- <Name/>
- </xplt:anyElement>
- </Application2>
-</Template>
diff --git a/xml/text.xml b/xml/text.xml
deleted file mode 100644
index e1865c7..0000000
--- a/xml/text.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0"?>
-<foo>
- <bar>
- baz
- <cheese id="3"/>
- baz
- <cheese/>
- baz
- </bar>
-</foo>
diff --git a/xml/underscore.xml b/xml/underscore.xml
deleted file mode 100644
index 111446f..0000000
--- a/xml/underscore.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" ?>
-<root a="1" _a="2">
- <b>1</b>
- <_b>2</_b>
-</root>
-
diff --git a/xml/web.xml b/xml/web.xml
deleted file mode 100644
index 972cf5d..0000000
--- a/xml/web.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<web-app>
- <servlet>
- <servlet-name>snoop</servlet-name>
- <servlet-class>SnoopServlet</servlet-class>
- </servlet>
- <servlet>
- <servlet-name>file</servlet-name>
- <servlet-class>ViewFile</servlet-class>
- <init-param>
- <param-name>initial</param-name>
- <param-value>
- 1000
- </param-value>
- <description>
- The initial value for the counter <!-- optional -->
- </description>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>
- mv
- </servlet-name>
- <url-pattern>
- *.wm
- </url-pattern>
- </servlet-mapping>
-
- <distributed/>
-
- <security-role>
- <role-name>
- manager
- </role-name>
- <role-name>
- director
- </role-name>
- <role-name>
- president
- </role-name>
- </security-role>
-</web-app>
diff --git a/xml/web2.xml b/xml/web2.xml
deleted file mode 100644
index 7d479d3..0000000
--- a/xml/web2.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<root>
- <b>
- <d />
- </b>
- <c />
-</root>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libjaxen-java.git
More information about the pkg-java-commits
mailing list