in reply to Re^12: aXML vs TT2
in thread aXML vs TT2

Solution 3 would work, but it means "Rock & Roll" needs to be written as "Rock &amp;amp; Roll", and "$a <=> $b" needs to be written as "$a &amp;lt;=&amp;gt; $b". Is that really what you expect people to do?

Replies are listed 'Best First'.
Re^14: aXML vs TT2
by Logicus (Initiate) on Oct 23, 2011 at 03:51 UTC

    Not at all, "rock & roll" can be passed through as is without any side effects.

      "Rock & Roll" is "Rock &amp; Roll" roll in XML, so it would need to be "Rock &amp;amp Roll" in aXML that outputs XML, the primary intended use of aXML.

        No it wouldn't. Your clutching at straws now.

        Lets say you want to output the following XML file;

        <artists> <artist> <name>Aerosmith</name> <genre>Rock &amp; Roll</genre> </artist> <artist> <name>Abba</name> <genre>Pop</genre> </artist> </artists>

        And you want to generate that using aXML. The code would be :

        <artists> <db_select> <query> SELECT * FROM artists</query> <mask> <artist> <name><d>name</d></name> <genre><d>genre</d></genre> </artist> </mask> </db_select> </artists>

        Now if the & in the data has been encoded to &amp; prior to being stored in the database then when you pull it out it's ready to go, if on the other hand it's stored in the database as the single char &, then your going to want to convert it (and any other examples in the data) before output.

        You can do that by simply creating a plugin called something like <convert_amps>. The code of which will look like:

        $plugins->{'convert_amps'} = sub { my $data = $_[1]; $data =~ s@\&@\&amp;@gs; return $data; };

        Now you just wrap the above aXML code with the new tag.

        <convert_amps> <artists> <db_select> <query> SELECT * FROM artists</query> <mask> <artist> <name><d>name</d></name> <genre><d>genre</d></genre> </artist> </mask> </db_select> </artists> </convert_amps>

        Now obviously if the & is encoded in the database your going to end up with &amp;amp;, but then you could just code the plugin to be a bit smarter than the above example, or you could make sure your data is clean to begin with.

        Your actually already using something similar to aXML on this very site when you wrap your code in <code> tags!