Right, the transform feature is not meant to replace XSLT, it would be much faster for straightforward transforms at the element structure/namespace level but it's not a good fit for the complex transformations... Note if all of these arbitrary simple elements are united by a namespace which does not qualify complex ones as well, then you may still be able to use the transform one, check the tests, there some examples how to use the wildcards

Sergey
On 29/11/17 13:32, Marcel Stör wrote:
I think either of us doesn't understand ;-)

Since the service provider essentially replaced the SOAP string type
with its own 'StringType' simple type that "VEMPTY" text content can
appear in any element. Hence, I need to globally replace that text in
every SOAP message - regardless of which XML element it is used with.
That's why I concluded that I can't use the standard TransformationFeature.

I was also checking whether CXF allowed to register custom
deserializers/mapper for a given type (i.e. from that custom XML
StringType to Java String) but I haven't found anything yet.

On 29.11.17 14:22, Sergey Beryozkin wrote:
You should be able to replace it:

https://github.com/apache/cxf/blob/master/core/src/test/java/org/apache/cxf/staxutils/transform/InTransformReaderTest.java#L56


and

https://github.com/apache/cxf/blob/master/core/src/test/java/org/apache/cxf/staxutils/transform/InTransformReaderTest.java#L73


You'd likely need to say that {someNs}modifiedBy has to be replaced by
{someNs}modifiedBy

HTH, Sergey
On 29/11/17 09:22, Marcel Stör wrote:
We're consuming SOAP messages for which the string type was extended or
redefined (see at the bottom). To denote null/empty values the XML
element uses "VEMPTY" as text content.

Example: <ns2:modifiedBy>VEMPTY</ns2:modifiedBy>

Before the message is deserialized and mapped to the Java model we'd
like to transform "VEMPTY" to "". As this special text content can
appear in arbitrary elements I don't think the standard
TransformationFeature as per
https://cxf.apache.org/docs/transformationfeature.html#TransformationFeature-Replacingtextcontent

is applicable. Correct?

I suspect we need to use the XSLT transformation, right?

[StringType]
<xsd:simpleType name="StringType">
      <xsd:annotation>
          <xsd:documentation xml:lang="en">
              ...some documentation...
              VEMPTY if effective value is null
              ...some more documentation...
          </xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:string"/>
</xsd:simpleType>

<xsd:element name="modifiedBy" type="st:StringType">
      <xsd:annotation>
          <xsd:documentation>
              ....
          </xsd:documentation>
      </xsd:annotation>
</xsd:element>





Reply via email to