FOR LOOP in xpath reg-ex

ParasofttoudayaParasofttoudaya Posts: 232 ✭✭

for $item in (/root/Json[1]/item[*])
return
$item/account[1]/text()

the above statement return no.of items, whereas applying replacement is not working

for $item in (/root/Json[1]/item[*])
return
replace($item/account[1]/text(),'abc','xyz')

It returns only the top row.

Comments

  • benken_parasoftbenken_parasoft Posts: 703 ✭✭✭

    From an earlier reply:

    the built-in Data Bank and Transformer tools currently support XPaths that return nodes from the original document and not strings or a combination of nodes and strings

    The work around mentioned in various other threads on the forums involve using "parse-xml" function. For example:

    for $item in (/root/Json[1]/item[*])
    return parse-xml(concat("<root>", replace($item/account[1]/text(), "abc", "xyz"), "</root>"))/root/text()
    
  • benken_parasoftbenken_parasoft Posts: 703 ✭✭✭

    As an aside, the "only fetches the first value" issue has to do with SOAtest using JAXP to evaluate the XPath. Some general information about this can also be found on stackoverflow. Internally, SOAtest would have to use a different XPath API under the hood.

Sign In or Register to comment.