RosettaCodeData/Task/XML-Output/Phix/xml-output.phix

34 lines
1.2 KiB
Plaintext

constant {hchars,hsubs} = columnize({{"<","&lt;"},
{">","&gt;"},
{"&","&amp;"},
{"\"","&quot;"},
{"\'","&apos;"}})
function xmlquote_all(sequence s)
for i=1 to length(s) do
s[i] = substitute_all(s[i],hchars,hsubs)
end for
return s
end function
function xml_CharacterRemarks(sequence data)
string res = "<CharacterRemarks>\n"
for i=1 to length(data) do
res &= sprintf(" <CharacterName=\"%s\">%s</Character>\n",xmlquote_all(data[i]))
end for
return res & "</CharacterRemarks>\n"
end function
constant testset = {
{"April", "Bubbly: I'm > Tam and <= Emily"},
{"Tam O'Shanter", "Burns: \"When chapman billies leave the street ...\""},
{"Emily", "Short & shrift"}
}
printf(1,xml_CharacterRemarks(testset))
-- Sample output:
-- <CharacterRemarks>
-- <CharacterName="April">Bubbly: I&apos;m &amp;gt; Tam and &amp;lt;= Emily</Character>
-- <CharacterName="Tam O&apos;Shanter">Burns: &quot;When chapman billies leave the street ...&quot;</Character>
-- <CharacterName="Emily">Short &amp; shrift</Character>
-- </CharacterRemarks>