blob: d8721784bd7a60421aa4cf952564b6bc5e254493 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
<properties>
<title>JXPath Home</title>
<author email="dev@commons.apache.org">Commons Documentation Team</author>
<author email="dmitri@apache.org">Dmitri Plotnikov</author>
<revision>$Id$</revision>
</properties>
<body>
<section name="The JXPath Component">
<p>
The <code>org.apache.commons.jxpath</code> package defines a simple
interpreter of an expression language called XPath. JXPath applies <em>XPath</em>
expressions to graphs of objects of all kinds: JavaBeans, Maps, Servlet contexts, DOM etc,
including mixtures thereof.
</p>
<p>
Consider this example:
</p>
<blockquote><pre>
Address address = (Address)JXPathContext.newContext(vendor).
getValue("locations[address/zipCode='90210']/address");
</pre></blockquote>
<p>
This XPath expression is equivalent to the following Java code:
</p>
<blockquote><pre>
Address address = null;
Collection locations = vendor.getLocations();
Iterator it = locations.iterator();
while (it.hasNext()){
Location location = (Location)it.next();
String zipCode = location.getAddress().getZipCode();
if (zipCode.equals("90210")){
address = location.getAddress();
break;
}
}
</pre></blockquote>
<p>
XPath was standardized by W3C and is used in both XSLT and XPointer.
</p>
<p>
If you want to find out more about XPath, a good place to start
is an excellent XPath Tutorial by <a href="http://www.w3schools.com/xpath">W3Schools</a>
</p>
<p>
The official definition of XPath by W3C can be found at
<a href="http://www.w3.org/TR/xpath">XML Path Language (XPath) Version 1.0</a>
</p>
<p>
Primary applications of JXPath are in scripting: JSP and similar template/script based technologies.
However, programmers who prefer XML-flavored APIs, should consider JXPath as
an alternative to other expression languages as well. JXPath is a must-have tool
for those who work with mixtures of Java objects and XML and need to frequently
traverse through graphs of those.
</p>
<p>
JXPath documentation currently contains:
<ul>
<li><a href="users-guide.html">User's Guide</a></li>
<li><a href="apidocs/index.html">JavaDoc API Documentation</a></li>
<!-- <li><a href="design.html">JXPath Design</a>, which is a document
primarily intended for those who are interested in extending JXPath.
It could also be quite useful if you are debugging a tough problem.
</li>
-->
</ul>
</p>
</section>
<section name="Releases">
<p>See the <a href="http://commons.apache.org/downloads/download_jxpath.cgi">JXPath Downloads</a>
page for current/previous releases.
</p>
</section>
</body>
</document>