[
https://issues.apache.org/jira/browse/SIS-399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Desruisseaux updated SIS-399:
------------------------------------
Fix Version/s: 1.0
> When renaming "xsi:type" value, may need to declare a new namespace
> -------------------------------------------------------------------
>
> Key: SIS-399
> URL: https://issues.apache.org/jira/browse/SIS-399
> Project: Spatial Information Systems
> Issue Type: Sub-task
> Components: Metadata
> Reporter: Martin Desruisseaux
> Priority: Major
> Labels: regression
> Fix For: 1.0
>
>
> {{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:
> {code:xml}
> <gmd:…>
> <gmd:name xsi:type="gmd:PT_FreeText_PropertyType">
> <gco:CharacterString>Some text in default language</gco:CharacterString>
> <gmd:PT_FreeText>
> <gmd:textGroup>
> <gmd:LocalisedCharacterString locale="#locale-fra">Same text in
> French</gmd:LocalisedCharacterString>
> </gmd:textGroup>
> </gmd:PT_FreeText>
> </gmd:name>
> <gmd:…>
> {code}
> Conversion from legacy ISO 19139:2007 to new ISO 19115-3:2016 result in
> something like (omitting non-pertinent prefixes for this discussion):
> {code:xml}
> <…:…>
> <…:name xsi:type="lan:PT_FreeText_PropertyType">
> <gco:CharacterString>Some text in default language</gco:CharacterString>
> <lan:PT_FreeText>
> <lan:textGroup>
> <lan:LocalisedCharacterString locale="#locale-fra">Same text in
> French</lan:LocalisedCharacterString>
> </lan:textGroup>
> </lan:PT_FreeText>
> </…:name>
> <…:…>
> {code}
> {{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:
> {code:xml}
> <…:… xsi:type="gmd:PT_FreeText_PropertyType">
> {code}
> by
> {code:xml}
> <…:… xmlns:lan="http://standards.iso.org/iso/19115/-3/lan/1.0"
> xsi:type="gmd:PT_FreeText_PropertyType">
> {code}
> 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 {{"ProcessStep (legacy).xml"}} test
> file, and should be removed when this issue is fixed.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)