Author |
Message
|
mlafleur |
Posted: Tue Apr 29, 2008 7:59 am Post subject: XMLNSC and whitespace |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
When I have whitespace in my xml parsed with XMLNSC, in the user trace I am seeing fields with whitespace field values like so:
(0x03000000)http://www.openapplications.org/oagis/9:Sender = '
'
I do not have retain mixed content checked anywhere.
Is this expected? |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Apr 29, 2008 8:51 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
XMLNSC removes whitespace outside element values, not inside element values.
You likely have tags like
Code: |
<ns1:Sender xmlns:ns1='http://www.openapplications.org/oagis/9'>
</ns1:Sender> |
Where ns1 is just a sample, not intended to match your actual flow.
But the return is *inside* the element tag, not *outside*. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
kimbert |
Posted: Tue Apr 29, 2008 2:16 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Jeff is correct. Mixed content occurs *between* tags, not inside them. |
|
Back to top |
|
 |
mlafleur |
Posted: Wed Apr 30, 2008 9:14 am Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
So here's the issue. An element that we were accessing before with XMLNS using (XML.Element) can now be either (XMLNSC.Folder) or (XMLNSC.Field) based on the whitespace content inside of the tags. Also the previous sibling can also be either an XMLNSC.Folder or XMLNSC.Field for the same reason.
So before where we had for XMLNS:
someRef.(XML.Element)*:*[2]
can now be for XMLNSC:
someRef.(XMLNSC.Folder)*:*[2]
OR
someRef.(XMLNSC.Field)*:*[1]
OR
someRef.(XMLNSC.Field)*:*[2]
Any suggestions on how to handle this simply? |
|
Back to top |
|
 |
kimbert |
Posted: Wed Apr 30, 2008 1:55 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
An element that we were accessing before with XMLNS using (XML.Element) can now be either (XMLNSC.Folder) or (XMLNSC.Field) based on the whitespace content inside of the tags |
I'd like to understand this in more detail. Please can you post the XML examples and the corresponding Trace node output for each case. |
|
Back to top |
|
 |
mlafleur |
Posted: Thu May 01, 2008 6:11 am Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
Here is a trace where the XML is all in one single line:
(0x01000000):XMLNSC = (
(0x01000400):XmlDeclaration = (
(0x03000100):Version = '1.0'
(0x03000100):Encoding = 'UTF-8'
)
(0x01000000)http://schemas.xmlsoap.org/soap/envelope/:Envelope = (
(0x03000102)http://www.w3.org/2000/xmlns/:soapenv = 'http://schemas.xmlsoap.org/soap/envelope/'
(0x01000000)http://schemas.xmlsoap.org/soap/envelope/:Header = (
(0x01000000)http://schemas.xmlsoap.org/ws/2002/07/secext:Security = (
(0x03000100)http://schemas.xmlsoap.org/soap/envelope/:mustUnderstand = '0'
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
(0x01000000)http://schemas.xmlsoap.org/ws/2002/07/secext:UsernameToken = (
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
(0x03000000)http://schemas.xmlsoap.org/ws/2002/07/secext:Username = 'username'
(
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
)
(0x03000000)http://schemas.xmlsoap.org/ws/2002/07/secext:Password = 'password'
(
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
)
)
)
)
(0x01000000)http://schemas.xmlsoap.org/soap/envelope/:Body = (
(0x01000000)http://www.mci.com/ServiceOrderValidation:ProcessServiceOrderValidationRequest = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q1 = 'http://www.mci.com/ServiceOrderValidation'
(0x01000000)http://www.mci.com/oagis/9:ProcessServiceOrderValidation = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q2 = 'http://www.mci.com/oagis/9'
(0x01000000)http://www.openapplications.org/oagis/9:ApplicationArea = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
(0x01000000)http://www.openapplications.org/oagis/9:Sender = (
(0x03000000)http://www.openapplications.org/oagis/9:LogicalID = 'EOM'
(0x03000000)http://www.openapplications.org/oagis/9:ComponentID = 'EOM'
(0x03000000)http://www.openapplications.org/oagis/9:TaskID = 'AddressValidation'
(0x03000000)http://www.openapplications.org/oagis/9:ReferenceID = 'PROVE'
(0x01000000)http://www.openapplications.org/oagis/9:ConfirmationCode =
(0x01000000)http://www.openapplications.org/oagis/9:AuthorizationID =
)
(0x03000000)http://www.openapplications.org/oagis/9:CreationDateTime = '2008-04-24T14:55:00Z'
(0x01000000)http://www.openapplications.org/oagis/9:Signature =
(0x01000000)http://www.openapplications.org/oagis/9:UserArea =
)
(0x01000000)http://www.mci.com/oagis/9:DataArea = (
(0x01000000)http://www.openapplications.org/oagis/9:Process = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
(0x01000000)http://www.openapplications.org/oagis/9:ActionCriteria = (
(0x03000000)http://www.openapplications.org/oagis/9:ActionExpression = 'T-1-0-SIP'
(
(0x03000100):actionCode = 'T-1-0-SIP'
)
(0x01000000)http://www.openapplications.org/oagis/9:ChangeStatus =
)
)
(0x01000000)http://www.mci.com/oagis/9:ServiceOrderValidation = (
(0x01000000)http://www.mci.com/oagis/9:ID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:Product = (
(0x01000000)http://www.mci.com/oagis/9:Code =
(0x01000000)http://www.mci.com/oagis/9:ProductOfferingID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:CustomerParty =
(0x01000000)http://www.mci.com/oagis/9:BillToParty =
(0x01000000)http://www.mci.com/oagis/9:Service = (
(0x01000000)http://www.mci.com/oagis/9:ServiceID = (
(0x03000000)http://www.mci.com/oagis/9:PrimaryID = 'T-1-0-SIP'
)
(0x01000000)http://www.mci.com/oagis/9:CategoryCode =
(0x01000000)http://www.mci.com/oagis/9:CustomerParty = (
(0x01000000)http://www.mci.com/oagis/9:ID =
(0x01000000)http://www.openapplications.org/oagis/9:PartyIDs = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
)
(0x03000000)http://www.mci.com/oagis/9:Name = 'jh'
(
(0x03000100):type = 'FIRSTNAME'
)
(0x03000000)http://www.mci.com/oagis/9:Name = 'jhgjh'
(
(0x03000100):type = 'LASTNAME'
)
(0x03000000)http://www.mci.com/oagis/9:Name = 'k'
(
(0x03000100):type = 'MIDDLEINITIAL'
)
(0x01000000)http://www.mci.com/oagis/9:Billing =
(0x01000000)http://www.mci.com/oagis/9:Tax =
(0x01000000)http://www.mci.com/oagis/9:Contract =
(0x01000000)http://www.openapplications.org/oagis/9:CurrencyCode = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
)
(0x01000000)http://www.mci.com/oagis/9:GEOCode =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
)
Here is a trace where the XML contains \n after most tags for easier reading:
(0x01000000):XMLNSC = (
(0x01000400):XmlDeclaration = (
(0x03000100):Version = '1.0'
(0x03000100):Encoding = 'UTF-8'
)
(0x01000000)http://schemas.xmlsoap.org/soap/envelope/:Envelope = (
(0x03000102)http://www.w3.org/2000/xmlns/:soapenv = 'http://schemas.xmlsoap.org/soap/envelope/'
(0x01000000)http://schemas.xmlsoap.org/soap/envelope/:Header = (
(0x01000000)http://schemas.xmlsoap.org/ws/2002/07/secext:Security = (
(0x03000100)http://schemas.xmlsoap.org/soap/envelope/:mustUnderstand = '0'
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
(0x01000000)http://schemas.xmlsoap.org/ws/2002/07/secext:UsernameToken = (
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
(0x03000000)http://schemas.xmlsoap.org/ws/2002/07/secext:Username = 'username'
(
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
)
(0x03000000)http://schemas.xmlsoap.org/ws/2002/07/secext:Password = 'password'
(
(0x03000102)http://www.w3.org/2000/xmlns/:wsse = 'http://schemas.xmlsoap.org/ws/2002/07/secext'
)
)
)
)
(0x01000000)http://schemas.xmlsoap.org/soap/envelope/:Body = (
(0x01000000)http://www.mci.com/ServiceOrderValidation:ProcessServiceOrderValidationRequest = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q1 = 'http://www.mci.com/ServiceOrderValidation'
(0x01000000)http://www.mci.com/oagis/9:ProcessServiceOrderValidation = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q2 = 'http://www.mci.com/oagis/9'
(0x03000000)http://www.openapplications.org/oagis/9:ApplicationArea = '
'
(
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
(0x03000000)http://www.openapplications.org/oagis/9:Sender = '
'
(
(0x03000000)http://www.openapplications.org/oagis/9:LogicalID = 'EOM'
(0x03000000)http://www.openapplications.org/oagis/9:ComponentID = 'EOM'
(0x03000000)http://www.openapplications.org/oagis/9:TaskID = 'AddressValidation'
(0x03000000)http://www.openapplications.org/oagis/9:ReferenceID = 'PROVE'
(0x01000000)http://www.openapplications.org/oagis/9:ConfirmationCode =
(0x01000000)http://www.openapplications.org/oagis/9:AuthorizationID =
)
(0x03000000)http://www.openapplications.org/oagis/9:CreationDateTime = '2008-04-24T14:55:00Z'
(0x01000000)http://www.openapplications.org/oagis/9:Signature =
(0x01000000)http://www.openapplications.org/oagis/9:UserArea =
)
(0x01000000)http://www.mci.com/oagis/9:DataArea = (
(0x01000000)http://www.openapplications.org/oagis/9:Process = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
(0x03000000)http://www.openapplications.org/oagis/9:ActionCriteria = '
'
(
(0x03000000)http://www.openapplications.org/oagis/9:ActionExpression = 'T-1-0-SIP'
(
(0x03000100):actionCode = 'T-1-0-SIP'
)
(0x01000000)http://www.openapplications.org/oagis/9:ChangeStatus =
)
)
(0x03000000)http://www.mci.com/oagis/9:ServiceOrderValidation = '
'
(
(0x01000000)http://www.mci.com/oagis/9:ID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:Product = (
(0x01000000)http://www.mci.com/oagis/9:Code =
(0x01000000)http://www.mci.com/oagis/9:ProductOfferingID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:CustomerParty =
(0x01000000)http://www.mci.com/oagis/9:BillToParty =
(0x01000000)http://www.mci.com/oagis/9:Service = (
(0x01000000)http://www.mci.com/oagis/9:ServiceID = (
(0x03000000)http://www.mci.com/oagis/9:PrimaryID = 'T-1-0-SIP'
)
(0x01000000)http://www.mci.com/oagis/9:CategoryCode =
(0x03000000)http://www.mci.com/oagis/9:CustomerParty = '
'
(
(0x01000000)http://www.mci.com/oagis/9:ID =
(0x01000000)http://www.openapplications.org/oagis/9:PartyIDs = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
)
(0x03000000)http://www.mci.com/oagis/9:Name = 'jh'
(
(0x03000100):type = 'FIRSTNAME'
)
(0x03000000)http://www.mci.com/oagis/9:Name = 'jhgjh'
(
(0x03000100):type = 'LASTNAME'
)
(0x03000000)http://www.mci.com/oagis/9:Name = 'k'
(
(0x03000100):type = 'MIDDLEINITIAL'
)
(0x01000000)http://www.mci.com/oagis/9:Billing =
(0x01000000)http://www.mci.com/oagis/9:Tax =
(0x01000000)http://www.mci.com/oagis/9:Contract =
(0x01000000)http://www.openapplications.org/oagis/9:CurrencyCode = (
(0x03000102)http://www.w3.org/2000/xmlns/:Q3 = 'http://www.openapplications.org/oagis/9'
)
(0x01000000)http://www.mci.com/oagis/9:GEOCode =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
)
I am attempting to access the second XML element under the DataArea one. If the ServiceOrderValidation tag can occur as either XMLNSC.Folder or XMLNSC.Field I presume the same is true for the Process tag also. |
|
Back to top |
|
 |
mlafleur |
Posted: Thu May 01, 2008 6:19 am Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
XML (partial) :
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><wsse:Security soapenv:mustUnderstand="0" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"><wsse:UsernameToken xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"><wsse:Username xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">username</wsse:Username><wsse:Password xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">password</wsse:Password></wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body>
<Q1:ProcessServiceOrderValidationRequest xmlns:Q1="http://www.mci.com/ServiceOrderValidation">
<Q2:ProcessServiceOrderValidation xmlns:Q2="http://www.mci.com/oagis/9">
<Q3:ApplicationArea xmlns:Q3="http://www.openapplications.org/oagis/9">
<Q3:Sender>
<Q3:LogicalID>EOM</Q3:LogicalID>
<Q3:ComponentID>EOM</Q3:ComponentID>
<Q3:TaskID>AddressValidation</Q3:TaskID>
<Q3:ReferenceID>PROVE</Q3:ReferenceID>
<Q3:ConfirmationCode/>
<Q3:AuthorizationID/>
</Q3:Sender>
<Q3:CreationDateTime>2008-04-24T14:55:00Z</Q3:CreationDateTime>
<Q3:Signature/>
<Q3:UserArea/>
</Q3:ApplicationArea>
<Q2:DataArea>
<Q3:Process xmlns:Q3="http://www.openapplications.org/oagis/9">
<Q3:ActionCriteria>
<Q3:ActionExpression actionCode="T-1-0-SIP">T-1-0-SIP</Q3:ActionExpression>
<Q3:ChangeStatus/>
</Q3:ActionCriteria>
</Q3:Process>
<Q2:ServiceOrderValidation>
<Q2:ID/>
<Q2:ActionCode/>
<Q2:Product>
<Q2:Code/>
<Q2:ProductOfferingID/>
<Q2:ActionCode/>
<Q2:CustomerParty/>
<Q2:BillToParty/>
<Q2:Service>
<Q2:ServiceID>
<Q2:PrimaryID>T-1-0-SIP</Q2:PrimaryID>
</Q2:ServiceID>
<Q2:CategoryCode/>
<Q2:CustomerParty>
<Q2:ID/>
<Q3:PartyIDs xmlns:Q3="http://www.openapplications.org/oagis/9"/>
<Q2:Name type="FIRSTNAME">jh</Q2:Name>
<Q2:Name type="LASTNAME">jhgjh</Q2:Name>
<Q2:Name type="MIDDLEINITIAL">k</Q2:Name>
<Q2:Billing/>
<Q2:Tax/>
<Q2:Contract/>
<Q3:CurrencyCode xmlns:Q3="http://www.openapplications.org/oagis/9"/>
<Q2:GEOCode/>
<Q2:ActionCode/>
</Q2:CustomerParty> |
|
Back to top |
|
 |
kimbert |
Posted: Thu May 01, 2008 8:00 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Your xml example does not include the second instance of the ProcessServiceOrderValidation tag. The one which you have included contains mixed content, so it does not have a value.
I'm guessing that the second instance looks like this:
Code: |
<Q2:ProcessServiceOrderValidation xmlns:Q2="http://www.mci.com/oagis/9">
</Q2:ProcessServiceOrderValidation> |
In this case there are no child elements, so the whitespace between the tags is interpreted as the value of the element.
I can see that this makes it awkard to query the message tree in a consistent way. My suggestions would be ( in order of preference )
a) don't specify the type when querying this tag
b) use XMLNS, which does not build a compact tree
Note that b) will tend to increase heap usage, because each individual piece of mixed content will get put into the message tree. |
|
Back to top |
|
 |
mlafleur |
Posted: Thu May 01, 2008 8:24 am Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
No, that is not the second instance.
It seems to have mixed content in it and a value.
xml:
<Q2:ServiceOrderValidation>
<Q2:ID/>
<Q2:ActionCode/>
<Q2:Product>
<Q2:Code/>
<Q2:ProductOfferingID/>
<Q2:ActionCode/>
<Q2:CustomerParty/>
<Q2:BillToParty/>
<Q2:Service>
<Q2:ServiceID>
<Q2:PrimaryID>T-1-0-SIP</Q2:PrimaryID>
...etc.
trace:
(0x03000000)http://www.mci.com/oagis/9:ServiceOrderValidation = '
'
(
(0x01000000)http://www.mci.com/oagis/9:ID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:Product = (
(0x01000000)http://www.mci.com/oagis/9:Code =
(0x01000000)http://www.mci.com/oagis/9:ProductOfferingID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:CustomerParty =
(0x01000000)http://www.mci.com/oagis/9:BillToParty =
(0x01000000)http://www.mci.com/oagis/9:Service = (
(0x01000000)http://www.mci.com/oagis/9:ServiceID = (
(0x03000000)http://www.mci.com/oagis/9:PrimaryID = 'T-1-0-SIP'
)
...etc.
VERSUS
xml:
<Q2:ServiceOrderValidation><Q2:ID/><Q2:ActionCode/><Q2:Product><Q2:Code/><Q2:ProductOfferingID/><Q2:ActionCode/><Q2:CustomerParty/><Q2:BillToParty/><Q2:Service><Q2:ServiceID><Q2:PrimaryID>T-1-0-SIP</Q2:PrimaryID>...etc.
trace:
(0x01000000)http://www.mci.com/oagis/9:ServiceOrderValidation = (
(0x01000000)http://www.mci.com/oagis/9:ID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:Product = (
(0x01000000)http://www.mci.com/oagis/9:Code =
(0x01000000)http://www.mci.com/oagis/9:ProductOfferingID =
(0x01000000)http://www.mci.com/oagis/9:ActionCode =
(0x01000000)http://www.mci.com/oagis/9:CustomerParty =
(0x01000000)http://www.mci.com/oagis/9:BillToParty =
(0x01000000)http://www.mci.com/oagis/9:Service = (
(0x01000000)http://www.mci.com/oagis/9:ServiceID = (
(0x03000000)http://www.mci.com/oagis/9:PrimaryID = 'T-1-0-SIP'
)
...etc.
I am specifically trying to migrate to XMLNSC so that rules out your option b. Also I need to specify the type to get this specific tag instead of some random whitespace. |
|
Back to top |
|
 |
kimbert |
Posted: Thu May 01, 2008 1:27 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
I need to specify the type to get this specific tag instead of some random whitespace |
I don't see anything in these examples that should produce Value nodes under the parent tag. You have asked the XMLNSC parser to discard mixed content, so the only children should be elements and attributes.
Maybe that code was left over from the XMLNS version of the ESQL? |
|
Back to top |
|
 |
mlafleur |
Posted: Thu May 01, 2008 1:32 pm Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
Sorry that last example was a little misleading. There are tags before ServiceOrderValidation -- it is not the parent tag (see larger XML in earlier post). |
|
Back to top |
|
 |
kimbert |
Posted: Thu May 01, 2008 2:08 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
No problem. But I still don't see why you need to specify the type. Can you please construct some simple XML fragments which exhibit the problems you are seeing. For each fragment, please state the problem you are encountering ( or better, quote some Trace node output ). |
|
Back to top |
|
 |
mlafleur |
Posted: Thu May 01, 2008 4:18 pm Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
The tag name is variable. I just know that I need say the second xml element below the DataArea tag for instance. In the examples above that is the ServiceOrderValidation tag which I have shown can be either XMLNSC.Folder or XMLNSC.Field in the traces.
Previously with XMLNS using XML.Element was sufficient.
If I don't specify a type then I may end up with a reference to '\n' |
|
Back to top |
|
 |
kimbert |
Posted: Fri May 02, 2008 12:37 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
If I don't specify a type then I may end up with a reference to '\n' |
I don't see how. If the '\n' is mixed content, then XMLNSC will discard it. If it is the value of the tag, the XMLNSC parser will create an XMLNSC.PCDataField, and put the value on the syntax element itself ( not as a child Value node ).
If you still think there's a problem, please post the XML fragment and the corresponding Trace node output. |
|
Back to top |
|
 |
|