Hi,

Could someone answer a couple of questions that I can not resolve.

1. xpath works for the most part with simple expressions, but when I introduce 
a predicate xmlbeans differs to saxon (I have saxonb8.6.1 on my classpath).  
saxon always returns an empty node list for the following expression:

Sring ns = "declare namespace ns='http://tempuri.org/myService';";
String xpath = ns + "$this/ns:copyintoout/ns:[EMAIL PROTECTED]'Tony']";
XmlObject[] selections = soapBody.selectPath(xpath);

soapBody points to the start of the soap body (ns:copyintoout) in the following 
instance document:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:mys="http://tempuri.org/myService";>
   <soapenv:Body>
      <mys:copyintoout>
         <mys:parameters myname="Tony">
            <mys:parm1/>
            <mys:parm2/>
            <mys:parm3/>
            <mys:parm4/>
            <mys:parm5/>
            <mys:parm6/>
         </mys:parameters>
         <mys:streams>
            <mys:instream/>
         </mys:streams>
      </mys:copyintoout>
   </soapenv:Body>
</soapenv:Envelope>

selections always comes back empty.

Should this work?  Am I doing something wrong?  I noticed that you are using 
particular saxon classes instead of using JAXP and letting it decide what saxon 
xpath factory to use via saxon8-xpath.jar?

2. when not using a predicate, I get expected selections and everything looks 
good... for instance suppose my xpath expression is the following:

Sring ns = "declare namespace ns='http://tempuri.org/myService';";
String xpath = ns + "$this/ns:copyintoout/ns:parameters";
XmlObject[] selections = soapBody.selectPath(xpath);

XmlObject selection = selections[0];
XmlCursor cursor = selection.newCursor();

cursor.setTextValue("Added Text");

I would expect the instance data to now look like the following:

      <mys:copyintoout>
         <mys:parameters myname="Tony">Added Text
            <mys:parm1/>
            <mys:parm2/>
            <mys:parm3/>
            <mys:parm4/>
            <mys:parm5/>
            <mys:parm6/>
         </mys:parameters>
         <mys:streams>
            <mys:instream/>
         </mys:streams>
      </mys:copyintoout>

Instead I get the following:

      <mys:copyintoout>
         <mys:parameters myname="Tony">Added Text
      </mys:copyintoout>

All children of the node that text was added to were deleted.  This seems like 
a bug.  Do you agree otherwise, please explain.



Thank you very much for helping.

-Tony

Tony Dean
SAS Institute Inc.
919.531.6704
[EMAIL PROTECTED]

SAS... The Power to Know
http://www.sas.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to