blob: abb3863a7db7dfe0af22b8fb2d8bef1c813c3d40 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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 Release Notes 1.1
</title>
<author email="dmitri@apache.org">
Dmitri Plotnikov
</author>
</properties>
<body>
<section name="JXPath 1.1 Release Notes">
<p>
Most changes in 1.1 are in the internal implementation and do not affect
public APIs. However there are some new publicly visible features:
<ul>
<li>
Full support for JDOM. Just like with DOM, if a JDOM node
is the root node of a JXPathContext, the implementation strictly follows
the XPath 1.0 standard. A JDOM node can also be a part of a mixed model,
i.e. the value of a property, variable, container, collection element
etc.
<br/>
</li>
<li>
Pointer has an additional method: getNode(), which returns the raw
value without converting it to a primitive value. This makes
a difference when you are working with DOM/JDOM and want to obtain
the Node itself, not the textual value of the Node.
<br/>
</li>
<li>
Support for DynaBeans
(see <a href="http://commons.apache.org/beanutils">Jakarta
Commons BeanUtils</a>).
<br/>
</li>
<li>
Refactored XML parsing by container to allow for alternate parsers.
All you do now is specify which model you want the container to use -
DOM (default) or JDOM. From that point the processing is transparent.
See
<a href="apidocs/org/apache/commons/jxpath/xml/DocumentContainer.html">
<code>org.apache.commons.jxpath.xml.DocumentContainer.</code></a>
<br/>
</li>
<li>
The <code>format-number</code> XSLT function is now supported.
In order to provide full conformance with the standard, we also
needed to introduce the format customization mechanism known in
XSLT as <code>&lt;xsl:decimal-format&gt;</code> (see
<a href="http://www.w3schools.com/xsl/el_decimal-format.asp">
W3Schools tutorial</a>). The new methods of JXPathContext:
<code>setDecimalFormatSymbols()</code> and
<code>getDecimalFormatSymbols()</code> fulfill that requirement.
<br/>
</li>
<li>
The <code>attribute::</code> axis is now supported models other than
DOM/JDOM. For beans and maps it is interpreted the same way as
the <code>"child::"</code> axis.
<br/>
</li>
<li>
In JXPath 1.0 you could only register DynamicPropertyHandlers for
concrete classes, now you can also register them for interfaces.
<br/>
</li>
<li>
The implementation of <code>setValue()</code> has changed for DOM/JDOM
nodes. In JXPath 1.0 it would replace text in the element, but leave
sub-elements alone. The new implementation is more consistent: it
drops all subelements first. Also, if you pass a Node as the new
value, it will insert the Node in the tree.
<br/>
</li>
<li>
If you need to evaluate multiple paths relative to a certain node
in the object graph, you can now create a relative JXPathContext.
Obtain the pointer for the location that is supposed to define
the relative context and then a relative context by calling
<code>context.getRelativeContext(pointer)</code>.
<br/>
</li>
<li>
The JUnit tests for JXPath have been completely redisigned and
significantly enhanced.
<br/>
</li>
</ul>
</p>
</section>
<section name="Acknowledgements">
<p>
Great thanks to everybody who reported problems, helped to trace them,
suggested changed or simply provided encouragement. Special thanks to
<ul>
<li>Trond Aasan</li>
<li>Bjorn Bength</li>
<li>Derek A. Bodin</li>
<li>BoD</li>
<li>Stephen Colebourne</li>
<li>Torsten Curdt</li>
<li>Pierre Delisle</li>
<li>Ruud Diterwich</li>
<li>Peter Donald</li>
<li>Kate Dvortsova</li>
<li>Eduardo Francos</li>
<li>dIon Gillard</li>
<li>Mike Hogan</li>
<li>Ivelin Ivanov</li>
<li>Per Kreipke</li>
<li>Kees Kuip</li>
<li>David Li</li>
<li>Ulrich Nicolas Lisse</li>
<li>Costin Manolache</li>
<li>Thorsten Mauch</li>
<li>Craig R. McClanahan</li>
<li>Markus Menner</li>
<li>Daniel Michalik</li>
<li>Steve Pannier</li>
<li>Ed Peters</li>
<li>Kenneth Petersen</li>
<li>Ovidiu Predescu</li>
<li>Erik Pugh</li>
<li>Robert Rasmussen</li>
<li>Vasco C. Rocha</li>
<li>Francois Swiegers</li>
<li>Joern Turner</li>
<li>Knut Wannheden</li>
<li>Andrew Wulf</li>
<li>Jason van Zyl</li>
</ul>
Thanks!
</p>
</section>
</body>
</document>