Hi Eitan and all,

I was also thinking about integration of JiBX and XPath recently. I was looking for a possibility to run XPath queries over Java object trees (JOTs), which are "somehow" connected to XML data ("somehow" means, that this could for example be described by a JiBX binding.) While jaxen and JXPath claim to support this, in both cases I wasn't satisfied with the exisiting techniques. The JXPath support for JOT works, but the XPath expression for querying an object tree is not necessarily equal to the expression for querying the according XML document if you want to obtain equal results. Jaxen's support for JOT seems not to be implemented completely, and there were some remarks on the jaxen developer list about some problems which need to be solved beforehand. One of these mentioned problems was that in JOTs a set of the XPath axes is not clearly defined. This especially counts for the "parent" axis, and all axes which are based on the document order, like "descendant" and "ascendant" axes.

This is where a binding framework like JiBX comes into play, because a binding as in JiBX exactly defines the axes missing in Java. With a binding definition you always know the "document place" of a member in a JOT. To run XPath on the JOT using the same expressions as if you would query the XML document, you would not even need an attribute "xpath='...'" like Eitan proposed (Or did I miss something in that idea?)

I am wondering about possible use cases of the discussed techniques. In our current project we are using XUpdate (including XPath) for a protocol to synchronize distributed instances of XML documents which are represented in JOTs. Here we really need an integration of (un)marshalling and XPath/XUpdate functionality for JOTs. We do not use JiBX currently (because I wasn't the one to decide which data binding framework to use :) but a combination of JDOM and handmade code for (un)marshalling and a prototypical extension for jaxen to run XPath/XUpdate over bound JOTs. While this works quite OK, the code is rather blown up and the performance is of course weak (our prototypical binding framework for XPath queries uses Java reflection API).

Which use cases could other people on this list imagine? One could argue, that when using XML techniques like XPath and XUpdate to access your data, (un)marshalling to a customized JOT becomes obsolete. One could also just use a common DOM implementation to represent your data. (I think the article mentioned by Eitan points in this direction.) Is there the common need for "native" Java access to data (Object.getMemeber()) combined with XPath access (/node/@attribute) to the same data?

Regards,

Tilman


Eitan Suez wrote:

hi all,

 while on developerworks reading dennis' articles, i also
 came across this one:
   http://www-128.ibm.com/developerworks/java/library/x-pracdb8.html
  entitled: 'xpath as a data binding tool, part 1'

i have to admit i just skimmed the article but it grabbed my attention. i've been thinking for a while that adding
 xpath to jibx would be a good move.

 more specifically what i mean is that the jibx binding
 vocabulary could be extended nicely with xpath support.

 here's an example binding file:
<binding name="binding1">
 <mapping name="customer" class="simple.Customer">
   <structure field="name">
     <value name="first-name" field="firstName"/>
     <value name="last-name" field="lastName"/>
   </structure>
   <value name="street" field="street1"/>
   <value name="city" field="city"/>
   <value name="state" field="state"/>
   <value name="zip" field="zip"/>
   <value name="phone" field="phone"/>
 </mapping>
</binding>

 in jibx we use the attribute 'name' to bind a specific
 element or attribute name to a java field.  i think that could
 be a perfect spot in the jibx binding file for introducing
 an alternative to name="" : xpath=""

 as in:
  <value xpath="name/first-name" field="firstName" />

 i know this is not a complete description of how such an
 enhancement would work or fit in to jibx.  but it's a starting
 point for consideration, and definitely for discussion.

/ eitan



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users





-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to