XML/Output: Difference between revisions

Content added Content deleted
Line 71: Line 71:
Pretty_Print => True);
Pretty_Print => True);
end Character_Remarks;</lang>
end Character_Remarks;</lang>

=== Alternative version using Matreshka ===

Uses [http://forge.ada-ru.org/matreshka Matreshka SAX API for XML].

<lang Ada>with Ada.Wide_Wide_Text_IO;

with League.Strings;
with XML.SAX.Attributes;
with XML.SAX.Pretty_Writers;

procedure Main is

function "+"
(Item : Wide_Wide_String) return League.Strings.Universal_String
renames League.Strings.To_Universal_String;

type Remarks is record
Name : League.Strings.Universal_String;
Remark : League.Strings.Universal_String;
end record;

type Remarks_Array is array (Positive range <>) of Remarks;

------------
-- Output --
------------

procedure Output (Remarks : Remarks_Array) is
Writer : XML.SAX.Pretty_Writers.SAX_Pretty_Writer;
Attributes : XML.SAX.Attributes.SAX_Attributes;
begin
Writer.Set_Offset (2);
Writer.Start_Document;
Writer.Start_Element (Qualified_Name => +"CharacterRemarks");

for J in Remarks'Range loop
Attributes.Clear;
Attributes.Set_Value (+"name", Remarks (J).Name);
Writer.Start_Element
(Qualified_Name => +"Character", Attributes => Attributes);
Writer.Characters (Remarks (J).Remark);
Writer.End_Element (Qualified_Name => +"Character");
end loop;
Writer.End_Element (Qualified_Name => +"CharacterRemarks");
Writer.End_Document;
Ada.Wide_Wide_Text_IO.Put_Line (Writer.Text.To_Wide_Wide_String);
end Output;

begin
Output
(((+"April", +"Bubbly: I'm > Tam and <= Emily"),
(+"Tam O'Shanter", +"Burns: ""When chapman billies leave the street ..."""),
(+"Emily", +"Short & shrift")));
end Main;</lang>


=={{header|AutoHotkey}}==
=={{header|AutoHotkey}}==