| <?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> |