TransformingReader converts XML element and attribute names from legacy standards to new standards, but there is one special case where instead of the attribute name, we need to convert attribute value: the xsi:type attribute. Example:
Conversion from legacy ISO 19139:2007 to new ISO 19115-3:2016 result in something like (omitting non-pertinent prefixes for this discussion):
gmd prefix has been replaced by lan prefix in various places, but this is not a concern for elements like lan:PT_FreeText because the XMLEvent created by TransformingReader already contain the full namespace URI. The problem is in the xsi:type value, where we do not specify the namespace ourselves. Attempts to unmarshal this converted XML result in an error message complaining the the lan prefix has not been bound. The workaround would be to replace the following fragment:
In other words, we need to insert a local Namespace event which was not present in the original XML document. In the meantime, the workaround is to add a xmlns:lan declaration in the root XML element of the document to parse. This workaround is applied in the "2007/PositionalAccuracy.xml" test file, and should be removed when this issue is fixed.