[erlang-questions] Which is best? string:concat or ++?

Richard Carlsson carlsson.richard@REDACTED
Tue May 8 09:44:20 CEST 2012


On 05/08/2012 12:25 AM, Richard O'Keefe wrote:
> One way to represent SGML data, including HTML, in Erlang
> looks like
> 	{Element_Name, [{Attribute_Name,Value}...], [Child...]}
> or	<<text as a binary>>
> or	"text as a list"
>
> in which while generating the tree you never ever have to worry
> about escaping any data.  You write a function that walks over
> a tree like this, perhaps sending it to a port, or perhaps
> creating an IO list, and *that* function does whatever escaping
> is necessary.
>
> 	{p,[],["This<is>  safe&so; is<this>!"]}
>
> is perfectly safe, as long as your output function knows what it
> is doing.  Also, if you know you are generating HTML, you could
> have your output function take care of omitting end tags for
> empty-by-definition elements.
>
> You wouldn't believe how easy it is to manipulate SGML data this
> way until you've tried it.
>
> (I _could_ have pointed to xmerl, but that's rather more complicated.)

What you describe is what is called "simple form" in xmerl:

http://www.erlang.org/doc/man/xmerl.html#export_simple-3
http://www.erlang.org/doc/apps/xmerl/xmerl_ug.html#id56386

Using the xmerl_html callback module:

1> io:put_chars(xmerl:export_simple([{p,[],["This<is>  safe&so; 
is<this>!"]}], xmerl_html)).
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<p>This<is>  safe&so; is<this>!</p>

and the xmerl_xml callback module:

2> io:put_chars(xmerl:export_simple([{p,[],["This<is>  safe&so; 
is<this>!"]}], xmerl_xml)).
<?xml version="1.0"?><p>This<is>  safe&so; is<this>!</p>


     /Richard Carlsson



More information about the erlang-questions mailing list