Hello,

 while trying to test for the mere existence of a datamodel node it turned
 out, that Data() yields to different results depending on the availability
 of an immediate textual content of the node:


  1) Example, path does not match, Data() is expected to return null:

  <log label="NULL" expr="Data(data,'objectList/obje...@status = 1]') == null" 
/>

  WARNING: Data(): No nodes matching the XPath expression "objectList/obje...@status 
= 1]", returning null
  INFO: NULL: false
  -> expected: true

  2) Example, same as 1) but tested with empty(), apparently an empty string is 
returned:

  <log label="NULL" expr="empty(Data(data,'objectList/obje...@status = 1]'))" />

  WARNING: Data(): No nodes matching the XPath expression "objectList/obje...@status 
= 1]", returning null
  INFO: NULL: true


  3) Example, testing a container with no immediate textual content:

  <log label="EMPTY" expr="empty(Data(data,'objectList/object'))" />

  WARNING: Data(): Multiple nodes matching XPath expression 
"objectList/object", returning first
  INFO: EMPTY: true

  4) Example, testing a leaf element with immediate textual content:

  <log label="EMPTY" expr="empty(Data(data,'objectList/object/status'))" />

  WARNING: Data(): Multiple nodes matching XPath expression 
"objectList/object/status", returning first
  INFO: EMPTY: false


  The method apparently invoked in this context: Object 
org.apache.commons.scxml.Builtin#data()
  calls SCXMLHelper#getNodeValue() to retrieve a textual representation of the 
node. This is done
  at the level of immediate child nodes, which themselves are not processed 
recursively. According
  to 1) and 3) there seems to be no test to distiguish whether a node is 
missing at all or it has
  element only content. For the former I'd expect null as return value, for the 
latter all text nodes
  concatenated in a deep frist traversal of all child nodes ?

   Thank you
     Jaro

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to