XML/Output: Difference between revisions

Content added Content deleted
(Added solution for Action!)
Line 198: Line 198:
.include "../includeARM64.inc"
.include "../includeARM64.inc"
</lang>
</lang>

=={{header|Action!}}==
<lang Action!>DEFINE PTR="CARD"
DEFINE CHARACTER_SIZE="4"
TYPE Character=[PTR name,remark]

PTR FUNC GetCharacterPointer(BYTE ARRAY d INT index)
RETURN (d+index*CHARACTER_SIZE)

PROC SetCharacter(BYTE ARRAY d INT index CHAR ARRAY n,r)
Character POINTER ch

ch=GetCharacterPointer(d,index)
ch.name=n
ch.remark=r
RETURN

PROC PrintEscaped(CHAR ARRAY s)
INT i
CHAR c

FOR i=1 TO s(0)
DO
c=s(i)
IF c='< THEN
Print("&lt;")
ELSEIF c='> THEN
Print("&gt;")
ELSEIF c='& THEN
Print("&amp;")
ELSE
Put(c)
FI
OD
RETURN

PROC OutputNode(CHAR ARRAY node,tagName,tagValue BYTE closing)
Put('<)
IF closing THEN Put('/) FI
Print(node)
IF tagName(0)>0 THEN
PrintF(" %S=""",tagName)
PrintEscaped(tagValue) Put('")
FI
Put('>)
RETURN

PROC OutputCharacter(Character POINTER ch)
CHAR ARRAY node="Character"

OutputNode(node,"name",ch.name,0)
PrintEscaped(ch.remark)
OutputNode(node,"","",1)
RETURN

PROC OutputCharacters(BYTE ARRAY d INT count)
CHAR ARRAY node="CharacterRemarks"
Character POINTER ch
INT i

OutputNode(node,"","",0) PutE()
FOR i=0 TO count-1
DO
ch=GetCharacterPointer(d,i)
OutputCharacter(ch) PutE()
OD
OutputNode(node,"","",1) PutE()
RETURN

PROC Main()
BYTE count=[3]
BYTE ARRAY d(12)

SetCharacter(d,0,"April","Bubbly: I'm > Tam and <= Emily")
SetCharacter(d,1,"Tam O'Shanter","Burns: ""When chapman billies leave the street ...""")
SetCharacter(d,2,"Emily","Short & shrift")

OutputCharacters(d,count)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/XML_Output.png Screenshot from Atari 8-bit computer]
<pre>
<CharacterRemarks>
<Character name="April">Bubbly: I'm &gt; Tam and &lt;= Emily</Character>
<Character name="Tam O'Shanter">Burns:"When chapman billies leave the street ..."</Character>
<Character name="Emily">Short &amp; shrift</Character>
</CharacterRemarks>
</pre>


=={{header|Ada}}==
=={{header|Ada}}==