The shim looks at each of the parent-node elements in order until it finds one that matches.
The value should contain the namespace not just the local name.
For example:
<description>add fault data parent</description>
<if-operation mode="nocase" op="equal">operation-data</if-operation>
<do-set-xml-attr expression="." name="parent-node-2">
<token-text xml:space="preserve">soapenv:Fault</token-text>

So it basically does a //soapenv:Fault in terms of XPATH to find the node.

On 7/17/2012 6:16 AM, sveldhuisen wrote:
> I'm currently struggling with the SOAP driver to get my operation-data
> under the correct root node upon a succesful SOAP response. The
> documentation states:
> -"When the<operation-data> element is restored on the response, it
> appended as a child element of the root node. You can override this by
> providing one or more parent-node-n attributes to the<operation-data>
> element, where n is a number beginning with 1 that is incremented for
> each parent specifier provided. The driver shim looks for parent-node-n
> attributes. When they are found, the attribute is checked to see if the
> named node exists. If the node is found, it uses as the parent for the
> <operation-data> element on the response."-
> It is not clear to me how this functionality in the shim is working
> exactly. Is it looking inside the whole response document or do you need
> to specify a path starting at the root node? Is the local-name of the
> specified node name used or the Qualified name (with namespaces)?
> My SOAP XML response message looks like:
> Code:
> --------------------
> <nds dtdversion="2.0">
> <source>
> <product build="20110722_190340" instance="OX test" version="3.5.7">Identity Manager Driver for SOAP</product>
> <contact>Novell, Inc.</contact>
> </source>
> <output>
> <soapenv:Envelope xmlns:soapenv="">
> <soapenv:Body>
> <ns:changeResponse xmlns:ns="">
> <ns:return xmlns:xsi="" xsi:nil="true"/>
> </ns:changeResponse>
> </soapenv:Body>
> </soapenv:Envelope>
> </output>
> </nds>
> --------------------
> I want the operation-data nodeset as a child of the changeResponse
> node. After some trial and error I came to the following conclusions:
> - parent-node-1="changeResponse" does NOT work
> - parent-node-1="*[local-name()='changeResponse']" does NOT work
> - parent-node-1="*[local-name()='changeResponse' and
> namespace-uri()='']" does NOT work
> -
> parent-node-1="output/soapenv:Envelope/soapenv:Body/*[local-name()='changeResponse']"
> does NOT work
> -
> parent-node-1="output/soapenv:Envelope/soapenv:Body/*[local-name()='changeResponse'
> and namespace-uri()='']" does NOT work
> - parent-node-1="ns:changeResponse" DOES work
> Now I'm a bit confused how the shim parses the parent-node-n attribute:
> why does a value of "ns:changeResponse" works, but
> "*[local-name()='changeResponse']" does not? It smells like limited/ no
> xpath support for this attribute...... Cany anybody confirm this?
> My specific problem is that the connected application gets upgraded
> once in a while and with each upgrade the namespace prefix changes (but
> not the namespace-uri). I therefore don't want to specify the namespace
> prefix within parent-node-n attribute, because this will break things in
> the future. It seems like I have two options:
> - specifiy parent-node-n in a way so it matches the element within any
> namespace (parent-node-1="*[local-name()='changeResponse']")
> - specify parent-node-n in a way so it matches the element within a
> specific namespace-uri (parent-node-1="*[local-name()='changeResponse'
> and namespace-uri()=''])
> Both options are not parsed correctly by the shim: the operation-data
> ends up under the soapenv:Envelope node.
> Some help would be appreciated