Skip to main content
Question

XMLTemplater Outputs Character Entity References

  • September 29, 2015
  • 10 replies
  • 67 views

I am using an XMLTemplater to output XML. In FME 2011, the XML comes out with literal less-then, greater-than tags, that is:

 

 

   <StreetTree TreeID="2919">

 

However, in FME 2015, the XML comes out with character entity references, that is:

 

   &lt;StreetTree TreeID="2919"&gt;

 

 

The XML reader in FME 2015 does not understand the character entity references. Is there a way to tell FME to output the literal less-than / greater-than characters?

 

 

Thanks

 

 
This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

10 replies

takashi
Celebrity
  • 7843 replies
  • September 30, 2015
Hi,

 

 

I was not able to reproduce the same result as yours.

 

The XMLTemplater in FME 2015.1.2.1 creates a correct XML text:

 

<root><StreetTree TreeID="2919"/></root>

 

 

from this template expression:

 

<root>{fme:get-xml-attribute("element")}</root>

 

 

when "element" attribute has '<StreetTree TreeID="2919"/>'.

 

 

Check if the FME XQuery function you are using in your expression is correct.

 

 

Takashi

  • 0 replies
  • September 30, 2015
Actually the XMLTemplater is working correctly as you have confirmed. The problem is in the next transformer, which is an aggregator. The data source is street trees, and they are aggregated by neighbourhood. When they come out of the aggregator, the character entity references appear.

 

 

I have "fixed" the problem by doing a string replace on &lt; to < and &gt; to > after they come out of the aggregator. Thanks for looking into this.

mark2atsafe
Safer
Forum|alt.badge.img+56
  • Safer
  • 2554 replies
  • December 30, 2015
Actually the XMLTemplater is working correctly as you have confirmed. The problem is in the next transformer, which is an aggregator. The data source is street trees, and they are aggregated by neighbourhood. When they come out of the aggregator, the character entity references appear.

 

 

I have "fixed" the problem by doing a string replace on &lt; to < and &gt; to > after they come out of the aggregator. Thanks for looking into this.

I know this is an older question, but it sounded like a bug so I thought I'd test it. Basically, I can't get the Aggregator to do what you are describing. I do see a fix in FME2016 that might have been related and solved the issue. So, if you still experience the problem in 2016, please let me (us) know. Then we can file a PR with the developers and get it properly fixed.

Regards

Mark


  • 0 replies
  • August 25, 2016

I am getting a similar problem with FME 2016, build 16608, @Mark2AtSafe. When I pass into the XMLTemplater a dynamically generated XML string like

<gmd:keyword> <gco:CharacterString>Planning</gco:CharacterString> </gmd:keyword>

<gmd:keyword> <gco:CharacterString>parcels</gco:CharacterString>

</gmd:keyword>

...it comes out of the XMLTemplater as:

<gmd:keyword> <gco:CharacterString>Planning</gco:CharacterString> </gmd:keyword>

<gmd:keyword> <gco:CharacterString>parcels</gco:CharacterString> </gmd:keyword>

I don't know if this is a bug or a feature. Again, I can do a string replace to turn the character entity references back to < and >.


  • 0 replies
  • August 25, 2016

I am getting a similar problem with FME 2016, build 16608, @Mark2AtSafe. When I pass into the XMLTemplater a dynamically generated XML string like

<gmd:keyword> <gco:CharacterString>Planning</gco:CharacterString> </gmd:keyword>

<gmd:keyword> <gco:CharacterString>parcels</gco:CharacterString>

</gmd:keyword>

...it comes out of the XMLTemplater as:

<gmd:keyword> <gco:CharacterString>Planning</gco:CharacterString> </gmd:keyword>

<gmd:keyword> <gco:CharacterString>parcels</gco:CharacterString> </gmd:keyword>

I don't know if this is a bug or a feature. Again, I can do a string replace to turn the character entity references back to < and >.

Oh, the web page does not show the character entities references that follow the line

 

...it comes out of the XMLTemplater as:

 

 


takashi
Celebrity
  • 7843 replies
  • August 26, 2016

Hi @jimo, could you please post a minimal workspace that reproduces the symptom to clarify the issue?

# it seems that we should type the ampersand within an entity reference as its entity reference to show an entity reference string literally on this site.
  • "&amp;" -> "&"
  • "&amp;amp;" -> "&amp;"


helmoet
Forum|alt.badge.img+8
  • 195 replies
  • March 11, 2020

I am getting a similar problem with FME 2016, build 16608, @Mark2AtSafe. When I pass into the XMLTemplater a dynamically generated XML string like

<gmd:keyword> <gco:CharacterString>Planning</gco:CharacterString> </gmd:keyword>

<gmd:keyword> <gco:CharacterString>parcels</gco:CharacterString>

</gmd:keyword>

...it comes out of the XMLTemplater as:

<gmd:keyword> <gco:CharacterString>Planning</gco:CharacterString> </gmd:keyword>

<gmd:keyword> <gco:CharacterString>parcels</gco:CharacterString> </gmd:keyword>

I don't know if this is a bug or a feature. Again, I can do a string replace to turn the character entity references back to < and >.

Hi, this is a different question regarding ampersands which have a special meaning to the operating system.


helmoet
Forum|alt.badge.img+8
  • 195 replies
  • March 11, 2020

hi @mark2atsafe, we face the same trouble in FME 2019.1. See the attached example. Can you comment on it? I suspect it has something to do with not having your data in application/xml encoding.xmltemplater.fmwt


mark2atsafe
Safer
Forum|alt.badge.img+56
  • Safer
  • 2554 replies
  • March 26, 2020

hi @mark2atsafe, we face the same trouble in FME 2019.1. See the attached example. Can you comment on it? I suspect it has something to do with not having your data in application/xml encoding.xmltemplater.fmwt

Hello @helmoet

Apologies for not responding to your sooner. I think this is working as designed, because if the attribute contained those values - and wasn't XML - then it would need to have the special characters replaced.

Luckily the fix is easy. Just change from using get-attribute to get-xml-attribute. That way FME knows this is XML based and won't treat those as special characters.

I hope this helps resolve the problem.


helmoet
Forum|alt.badge.img+8
  • 195 replies
  • March 30, 2020

Hello @helmoet

Apologies for not responding to your sooner. I think this is working as designed, because if the attribute contained those values - and wasn't XML - then it would need to have the special characters replaced.

Luckily the fix is easy. Just change from using get-attribute to get-xml-attribute. That way FME knows this is XML based and won't treat those as special characters.

I hope this helps resolve the problem.

Thankx, that did the job.