Zum Verarbeiten des Schemas eignet sich wahrscheinlich ein spezialisiertes Modul wie
XML::Schema besser als ein generisches wie
XML::Twig.
Was das erstellen der GUI betrifft, so ist das Prinzip ganz einfach: Neues Fenster erzeugen, über alle Elementdefinitionen unterhalb eines Rootelementes iterieren, für jedes Element die nötigen Widgets anlegen und verdrahten, zum Schluss ein paar Steuerknöpfe hinzufügen und das Fenster anzeigen.
Das einzige ernsthafte Problem bei dieser Aufgabe ist, dass XML Schemata neue Datentypen beliebiger Komplexität definieren können. Du wirst also wohl kaum mit einfachen Eingabefeldern auskommen, sondern solltest in der Lage sein, dynamisch Widgetgruppen für Strukturen von Subelementen anzulegen, Eingaben des Benutzers anhand des Schemas zu validieren und vielleicht auch für bestimmte Datentypen der Bequemlichkeit halber spezielle Widgets anzuzeigen (z.B. für Kalenderdaten).
When C++ is your hammer, every problem looks like your thumb.